Image
Creates a snapshot of a specific PDF page and saves it as a picture. For instance, this thumbnail can for instance be used as a preview on the web.
Feature | Parameter | Response | Action | Description | Links |
createImages | CreateImages | CreateImagesRes | ImageAction | Creates a snapshot of a specific PDF page and saves it as a picture. | Swagger Sample |
createThumbnail | width, pageNr, imageFormat, file | file stream | Produces a thumbnail of the page referenced by the pageNr. And be aware of the one-indexing of the page numbers. | Swagger Sample | |
createThumbnails | width, pageNrs, imageFormat, file | [file stream] |
Samples
CreateImages
- curl
- C#
- Java
- JavaScript
- PHP
- Python
- Ruby
curl No Sample
// create createImages object
var createImages = new CreateImages()
{
// document
Document = new Document()
{
DocData = File.ReadAllBytes("myPdf.pdf"),
Name = "myPdf.pdf",
},
// action
ImageAction = new ImageAction()
{
ImageExtension = ImageActionImageExtension.Jpeg,
WidthPixel = 4000,
PageSelection = new PageSelection()
{
PageNrs = new System.Collections.Generic.HashSet() { 1, 2, 3 }
}
},
};
// create image
var res = await Pdf4meClient.Pdf4me.Instance.ImageClient.CreateImagesAsync(createImages);
// extract thumbnail and writing it to disk
foreach (var page in res.Document.Pages)
File.WriteAllBytes("thumbnail_" + page.PageNumber + "+.jpg", page.Thumbnail);
// setup the imageClient
ImageClient imageClient = new ImageClient(pdf4meClient);
// create createImages object
CreateImages createImages = new CreateImages();
// document
Document document = new Document();
byte[] file = Files.readAllBytes(Paths.get("myPdf.pdf"));
document.setDocData(file);
createImages.setDocument(document);
// action
ImageAction imageAction = new ImageAction();
imageAction.setWidthPixel(4000);
imageAction.setPageSelection(new PageSelection().addPageNrsItem(1));
imageAction.setImageExtension(ImageExtensionEnum.JPEG);
createImages.setImageAction(imageAction);
// create image
CreateImagesRes res = imageClient.createImages(createImages);
// extracting the generated picture and writing it to disk
byte[] thumbnail = res.getDocument().getPages().get(0).getThumbnail();
FileUtils.writeByteArrayToFile(new File("thumbnail.jpg"), thumbnail);
// setup the pdf4meClient
const pdf4meClient = pdf4me.createClient('YOUR API KEY')
// create the createImages object
const createImagesReq = {
// document
document: {
docData: fs.readFileSync(path.join(__dirname, 'myPdf.pdf')).toString('base64'),
},
// action
imageAction: {
pageSelection: {
pageNrs: [1, 2, 3],
},
imageQuality: 99,
widthPixel: 2000,
heightPixel: 2000,
imageExtension: 'Jpeg',
},
}
// create images
pdf4meClient.createImages(createImagesReq)
.then(createImagesRes => {
// extract thumbnails and writing it to disk
createImagesRes.document.pages.forEach((page, index) => {
const image = Buffer.from(page.thumbnail, 'base64')
fs.writeFileSync(path.join(__dirname, `thumbnail_${index + 1}.jpg`), image)
})
})
.catch(error => {
console.error(error)
})
$res = $client->pdf4me()->createImages([
// document
"document" => [
'docData' => $client->getFileData('myPdf.pdf')
],
//action
"imageAction" => [
"widthPixel" => 4000,
"pageSelection" => [
"pageNrs" => [ 1, 2, 3 ]
],
"imageExtension" => "Jpeg"
]
]);
foreach($res->document->pages as $page){
// extract thumbnails and writing it to disk
$image = base64_decode($page->thumbnail);
file_put_contents( 'thumbnail_'.$page->pageNumber.'.jpg', $image);
}
# setup the image_client
image_client = ImageClient(pdf4me_client)
# create the create_images object
create_images = CreateImages(
document=Document(
doc_data=FileReader().get_file_data('myPdf.pdf')
),
image_action=ImageAction(
width_pixel=4000,
page_selection=PageSelection(
page_nrs=[1, 2, 3]
),
image_extension='Jpeg'
)
)
# image creation
res = image_client.create_images(create_images=create_images)
for page in res['document']['pages']:
# extracting the generated image
image = base64.b64decode(page['thumbnail'])
# writing it to disk
with open('thumbnail_'+str(page['page_number'])+'.jpg', 'wb') as f:
f.write(image)
file_path = 'myPdf.pdf'
action = Pdf4me::CreateImages.new(
document: Pdf4me::Document.new(
doc_data: Base64.encode64(File.open(file_path, 'rb', &:read))
),
image_action: Pdf4me::ImageAction.new(
page_selection: Pdf4me::PageSelection.new(
page_nrs: [1, 2, 3]
),
image_extension: 'Jpeg',
center: true,
fit_page: true,
bits_per_pixel: 24,
bilevel_threshold: 181,
render_options: %w(noAntialiasing),
rotate_mode: 'none',
preserve_aspect_ratio: true,
compression: 'raw'
)
)
response = action.run
# saving the extracted thumbnail
File.open('./out/thumbnail.jpg', 'wb') do |f|
f.write(Base64.decode64(response.document.pages.first.thumbnail))
end
CreateThumbnail
- curl
- C#
- Java
- JavaScript
- PHP
- Python
- Ruby
curl https://api.pdf4me.com/Image/CreateThumbnail ^
-H "Authorization: Basic DEV-KEY" ^
-F pageNr=1 ^
-F width=4000 ^
-F imageFormat=jpg ^
-F "file=@./myPdf.pdf" ^
-o ./thumbnail.jpg
// thumbnail creation
var thumbnail = await Pdf4me.Instance.ImageClient.CreateThumbnailAsync(
File.ReadAllBytes("myPdf.pdf"),
4000,
"1",
ImageActionImageExtension.Jpg
);
// and writing the generated picture to disk
File.WriteAllBytes("thumbnail.jpg", thumbnail);
// setup the imageClient
ImageClient imageClient = new ImageClient(pdf4meClient);
// thumbnail creation and writing the generated picture to disk
byte[] thumbnail = imageClient.createThumbnail(4000, "1", ImageExtensionEnum.JPEG, new File("myPdf.pdf"));
FileUtils.writeByteArrayToFile(new File("thumbnail.jpg"), thumbnail);
// create pdf4meClient
const p4mClient = pdf4me.createClient('YOUR API KEY')
// thumbnail creation
p4mClient.createThumbnail(4000, '1', 'jpg', fs.createReadStream(path.join(__dirname, 'myPdf.pdf')))
.then(thumbnail => {
// and writing the generated picture to disk
fs.writeFileSync(path.join(__dirname, 'thumbnail.jpg'), thumbnail)
})
.catch(error => {
console.error(error)
})
$createThumbnail = $client->pdf4me()->createThumbnail(
[
"width" => 4000,
"pageNr" => "1",
"imageFormat" => "jpg"
"file" => __DIR__.'/myPdf.pdf'
]
);
//writing it to file
file_put_contents('thumbnail.jpg', $createThumbnail);
# setup the image_client
image_client = ImageClient(pdf4me_client)
# image creation
image = image_client.create_thumbnail(
width=4000,
page_nr='1',
image_format='jpg',
file=FileReader().get_file_handler(path='myPdf.pdf')
)
# writing the generated image to disk
with open('thumbnail.jpg', 'wb') as f:
f.write(image)
a = Pdf4me::CreateThumbnail.new(
file: '/myPdf.pdf',
page_number: 1,
width: 4000,
save_path: 'thumbnail.jpg'
)
a.run
CreateThumbnails
- curl
- C#
- Java
- JavaScript
- PHP
- Python
- Ruby
curl No Sample
// thumbnail creation
var thumbnails = await Pdf4me.Instance.ImageClient.CreateThumbnailsAsync(
File.ReadAllBytes("myPdf.pdf"),
2000,
"1,2,3",
ImageActionImageExtension.Png
);
// and writing the generated picture to disk
for (var i = 0; i < thumbnails.Count(); i++)
File.WriteAllBytes("thumbnail_" + i +".png", thumbnails[i]);
// setup the pdf4meClient
const pdf4meClient = pdf4me.createClient('YOUR API KEY')
// thumbnail creation
pdf4meClient.createThumbnails(2000, '1,2,3', 'png', fs.createReadStream(path.join(__dirname, 'myPdf.pdf')))
.then(thumbnails => {
// and writing the generated picture to disk
thumbnails.forEach((thumbnail, index) => {
fs.writeFileSync(path.join(__dirname, `thumbnail_${index + 1}.png`), thumbnail)
})
})
.catch(error => {
console.error(error)
})
// thumbnail creation
$res = $client->pdf4me()->createThumbnails(
[
"pageNrs"=> "1,2",
"width" => 1000,
"imageFormat" => "png",
"file" => 'PDF_10pages.pdf'
]);
$count = 1;
// extracting thumbnails
foreach($res as $page){
$page_base = base64_decode($page);
// and writing the resulting PDFs to disk
file_put_contents($page_base, 'thumbnail_'.$count.'.jpg');
$count = $count + 1;
}
# setup the image_client
image_client = ImageClient(pdf4me_client)
# image creation
thumbnails = image_client.create_thumbnails(
width=2000,
page_nrs='1,2,3',
image_format='jpg',
file=FileReader().get_file_handler(path='PDF_10pages.pdf')
)
# extracting the generated image
count = 0
for thumbnail in thumbnails:
# writing it to disk
with open('thumbnail_'+str(count)+'.jpg', 'wb') as f:
f.write(thumbnail)
count = count+1
Models
Image
Name | Type | Description | Notes |
---|---|---|---|
document |
Document |
||
imageAction |
ImageAction |
||
jobId |
String |
[optional] | |
jobIdExtern |
String |
[optional] | |
integrations |
[String] |
[optional] |
ImageAction
Name | Type | Notes | Description |
---|---|---|---|
pageNrs |
[integer] |
[optional] | The numbers of the pages the action is applied to. PageNrs overruels PageIds and PageSequence. |
pageIds |
[String] |
[optional] | The Ids of the pages the action is applied to. PageIds overrules the PageSequence. |
pageSequence |
String |
"all", "first", "last", "odd", "even", "notFirst", "notLast" [optional] |
Specifies what pages the action is applied to. |
center |
boolean |
Default: false [optional] |
Center mode. - true: the document is horizontally and vertically centered on the page. - false: the document is printed to the upper left corner of the page. |
fitPage |
boolean |
[optional] | Fit page mode. - true: the page is scaled to fit the image (in either width or height). - false: the page is rendered with its true size. |
bitsPerPixel |
integer |
bi-tonal: 1, gray scale: 8, RGB true color: 24, CMYK: 32 Default: 24 [optional] |
Color depth. |
bilevelThreshold |
integer |
[0, 255] Default: 181 [optional] |
Threshold for converting from gray to bi-tonal when dithering is set to "none" |
heightPixel |
integer |
[optional] | Height [pixel] |
widthPixel |
integer |
[optional] | Width [pixel] |
widthPoint |
integer |
[optional] | Width[points] |
heightPoint |
integer |
[optional] | Height [points] |
renderOptions |
[String] |
"noAntialiasing", "noInterpolation", "noLowPassFilter", "noHinting", "printingMode", "noBPC", "fitPaths", "useBoxFilter"[optional] |
Rendering options. |
rotateMode |
String |
"none" "attribute" : set the rotation to the viewing rotation attribute of the PDF page, i.e. rendering the page with the same rotation as it is displayed in a PDF viewer. "portrait" "landscape" [optional] |
Rotation mode of the page. |
preserveAspectRatio |
boolean |
Default: true [optional] |
Aspect Ratio Preservation. - true: a uniform up- or down-scaling is applied, i.e. the output image has the same ratio of width to height as the input file and its size will fit into the defined dimensions. |
imageQuality |
integer |
Default: 80 [1,100] [optional] |
Quality index of lossy compression types. It is applied to JPEG and JPEG2000 compression. For JPEG2000, a quality index of 100 means lossless compression. JPEG compression is always lossy. |
cmsEngine |
String |
Default: "lcms" "none": the algorithms specified in the PDF reference are used. This results in the maximum possible contrast. "neugebauer": efficiently converts CMYK to RGB. It does not need any color profiles. The results, however, look similar to conversion using color profiles. "lcms": uses ICC color profiles. "customCMS": a configurable version of the Neugebauer algorithm is applied. The coefficients can be defined in the customCMSConfig. [optional] |
|
customCMSConfig |
CustomCMSConfig |
Custom Management System (CMS) Engine for Neugebauer algorithm. In order for the customCMSConfig to be used, set the cmsEngine to "customCMS". | |
dithering |
String |
Default: "floydSteinberg" "none", "floydSteinberg", "halftone", "pattern", "g3Optimized", "g4Optimized", "atkinson" [optional] |
Dithering algorithm. Dithering refers to the procedure of simulating colors or grayscales. This is mainly useful for low color depth (e.g. black and white or indexed) images. |
dpi |
integer |
[optional] |
Resolution of the image in DPI (dots per inch). The x- and y-axis are set to the same value. |
fillOrder |
String |
Default: "mSB" "mSB": most significant bit. "lSB": least significant bit. [optional] |
Bit fill order. |
filterRatio |
integer |
Default: "1" 1,2,3 [optional] |
This property is used to enable and parameterize super-sampling, a technique to initially render the image at a higher resolution and then sample it down to the target resolution. As a result of that process the final image appears smoother, i.e. anti-aliased. Applying super-sampling improves the image quality when rendering at low target resolutions (72 DPI or less); the higher the target resolution the less the visual impact. This property requires memory and CPU time quadratically to the ratio, therefore only small values, such as 2 or 3 should be used. If a too high value (in combination with the original image size) is set, it is ignored. |
imageExtension |
String |
"jpg", "jpeg", "bmp", "gif", "jb2", "jp2", "jpf", "jpx", "png", "tif", "tiff" | Output type for image file. |
colorSpace |
String |
Default: "RGB" "RGB", "RGBA", "Gray", "GrayA", "CMYK", "YCbCr", "YCbCrK", "Palette", "LAB", "CMYK_Konly", "CMYKA" [optional] |
Color space of the output image. For black white bi-tonal images, a gray color space must be selected. |
compression |
String |
Default: "LZW" "raw", "jPEG", "flate", "LZW", "group3", "group3_2D", "group4", "jBIG2", "jPEG2000", "tIFFJPEG" [optional] |
Get or set the compression type of TIFF images. For any other image format, the compression is automatically defined by the file extension. |
CreateImagesRes
Name | Type | Description | Notes |
---|---|---|---|
document | Document | PDF with embedded images. |
Document
Name | Type | Description | Notes |
---|---|---|---|
jobId |
String |
JobId of Documents WorkingSet. | |
documentId |
String |
Document Id | |
name |
String |
Filename inlcuding filetype. | |
docStatus |
String |
Status of the Document, e.g. Stamped. | |
pages |
Page |
Description of pages. | |
docData |
[byte] |
Document bytes. | |
docMetadata |
DocMetadata |
Document metadata such as title, pageCount et al. | |
docLogs |
DocLog |
Logging information about the request, e.g. timestamp. |
Page
Name | Type | Description | Notes |
---|---|---|---|
documentId |
String |
Globally unique Id. | |
pageId |
String |
Globally unique Id. | |
pageNumber |
Integer |
PageNumber, starting with 1. | |
rotate |
double |
By how much the page was rotated from its original orientation. | |
thumbnail |
byte |
Thumbnail representing this particular page. | |
sourceDocumentId |
String |
Id of the document it was created from, e.g. in case of an extraction, the result's sourceDocumentId is the Id of the PDF the pages have been extracted from. | |
sourcePageNumber |
Integer |
Page number of the original page in the original document, e.g. let's assume document B consists of page number 4 of document A (extraction). Thus, document B's only page's sourcePageNumber is number 4. |
DocMetadata
Name | Type | Description | Notes |
---|---|---|---|
title |
String |
Title of document. | |
subject |
String |
Subject of document. | |
pageCount |
long |
Number of pages. | |
size |
long |
Number bytes of the document. | |
isEncrypted |
boolean |
If the document is Encrypted | |
pdfCompliance |
String |
Pdf Compliance, e.g. PDF/A. | |
isSigned |
boolean |
If the document is Encrypted | |
uploadedMimeType |
String |
Uploaded MimeType, e.g. application/bson. | |
uploadedFileSize |
long |
Uploaded file size. |
DocLog
Name | Type | Description | Notes |
---|---|---|---|
messageType |
String |
MessageType, e.g. PdfALog. | |
message |
String |
Message itself, e.g. a warning. | |
timestamp |
dateTime |
Timestamp. | |
docLogLevel |
String |
Type of message. | Supported Values : "verbose", "info", "warning", "error", "timing" |
durationMilliseconds |
long |
Timing for requested log information [ms]. |
CustomCMSConfig
Name | Type | Description | Notes |
---|---|---|---|
white |
RGBSet |
0.996078, 0.996078, 0.996078 | |
c |
RGBSet |
0.000000, 0.686275, 0.937255 | |
m |
RGBSet |
0.925490, 0.149020, 0.560784 | |
y |
RGBSet |
1.000000, 0.949020, 0.066667 | |
k |
RGBSet |
0.215686, 0.203922, 0.207843 | |
cm |
RGBSet |
0.243137, 0.247059, 0.584314 | |
cy |
RGBSet |
0.000000, 0.658824, 0.349020 | |
ck |
RGBSet |
0.066667, 0.176471, 0.215686 | |
my |
RGBSet |
0.929412, 0.196078, 0.215686 | |
mk |
RGBSet |
0.215686, 0.101961, 0.141176 | |
yk |
RGBSet |
0.200000, 0.196078, 0.125490 | |
cmy |
RGBSet |
0.266667, 0.266667, 0.274510 | |
cmk |
RGBSet |
0.133333, 0.098039, 0.160784 | |
cyk |
RGBSet |
0.074510, 0.180392, 0.133333 | |
myk |
RGBSet |
0.215686, 0.121569, 0.113725 | |
cmyk |
RGBSet |
0.125490, 0.121569, 0.121569 |