best pdf library c# : Html form output to pdf software Library dll winforms .net web page web forms PDFlib-manual11-part1868

5.1  Importing Raster Images 111
5Importing and Placing Objects
PDFlib offers a variety of features for importing raster images and pages from existing 
PDF documents, and placing them on the page. This chapter covers the details of deal-
ing with raster images and importing pages from existing PDF documents. It also pre-
sents samples which demonstrate how to place images and PDF pages on an output 
page.
5.1 Importing Raster Images
5.1.1 Basic Image Handling
Embedding raster images with PDFlib is easy to accomplish. First, the image file has to 
be opened with a PDFlib function which does a brief analysis of the image parameters. 
The PDF_load_image( ) function returns a handle which serves as an image descriptor. 
This handle can be used in a call to PDF_fit_image( ), along with positioning and scaling 
parameters:
if ((image = PDF_load_image(p, "jpeg", "image.jpg", 0, "")) == -1) {
fprintf(stderr,"Error: Couldn't read image file.\n");
} else {
PDF_fit_image(p, image, 0.0, 0.0, "");
PDF_close_image(p, image);
}
The last argument to PDF_fit_image( ) is an option list which supports a variety of op-
tions for positioning, scaling, and rotating the image. Details regarding these options 
are discussed in Section 5.3, »Placing Images and Imported PDF Pages«, page 121.
Re-using image data. PDFlib supports an important PDF optimization technique for 
using repeated raster images. Consider a layout with a constant logo or background on 
multiple pages. In this situation it is possible to include the actual image data only once 
in the PDF, and generate only a reference on each of the pages where the image is used. 
Simply load the image file once, and call PDF_fit_image( ) every time you want to place 
the logo or background on a particular page. You can place the image on multiple pages, 
or use different scaling factors for different occurrences of the same image (as long as 
the image hasn’t been closed). Depending on the image’s size and the number of occur-
rences, this technique can result in enormous space savings.
Inline images. As opposed to reusable images, which are written to the PDF output as 
image XObjects, inline images are written directly into the respective content stream 
(page, pattern, template, or glyph description) . This results in some space savings, but 
should only be used for small amounts of image data (up to 4 KB) per a recommenda-
tion in the PDF reference. The primary use of inline images is for bitmap glyph descrip-
tions in Type 3 fonts.
Inline images can be generated with the PDF_load_image( ) interface by supplying the 
inline option. Inline images cannot be reused, i.e., the corresponding handle must not be 
supplied to any call which accepts image handles. For this reason if the inline option has 
been provided PDF_load_image( ) internally performs the equivalent of
Html form output to pdf - extract form data from PDF in C#.net, ASP.NET, MVC, Ajax, WPF
Help to Read and Extract Field Data from PDF with a Convenient C# Solution
save data in pdf form reader; extract data from pdf to excel
Html form output to pdf - VB.NET PDF Form Data Read library: extract form data from PDF in vb.net, ASP.NET, MVC, Ajax, WPF
Convenient VB.NET Solution to Read and Extract Field Data from PDF
how to fill in a pdf form in reader; how to fill pdf form in reader
112
Chapter 5:  Importing and Placing Objects
PDF_fit_image(p, image, 0, 0, "");
PDF_close_image(p, image);
Scaling and dpi calculations. PDFlib never changes the number of pixels in an import-
ed image. Scaling either blows up or shrinks image pixels, but doesn’t do any downsam-
pling (the number of pixels in an image will always remain the same). A scaling factor of 
1 results in a pixel size of 1 unit in user coordinates. In other words, the image will be im-
ported at 72 dpi if the user coordinate system hasn’t been scaled (since there are 72 de-
fault units to an inch).
5.1.2 Supported Image File Formats
PDFlib deals with the image file formats described below. If possible, PDFlib passes the 
compressed image data unchanged to the PDF output since PDF internally supports 
most compression schemes used in common image file formats. This technique (called 
pass-through mode in the descriptions below) results in very fast image import, since de-
compressing the image data and subsequent recompression are not necessary. How-
ever, PDFlib cannot check the integrity of the compressed image data in this mode. In-
complete or corrupt image data may result in error or warning messages when using 
the PDF document in Acrobat (e.g., Read less image data than expected).
If an image file can’t be imported successfully PDF_load_image( ) will return an error 
code by default. However, if you need to know more details about the failure set the 
imagewarning option in PDF_load_image( ) to true (see Section 7.6, »Image and Template 
Functions«, page 188). Alternatively, the imagewarning parameter can be set on a global 
basis:
PDF_set_parameter(p, "imagewarning", "true");
/* enable image warnings */
This will cause PDF_load_image( ) to raise an exception with more details about the fail-
ure in the corresponding exception message.
PNG images. PDFlib supports all flavors of PNG images (Portable Network Graphics). 
PNG images are handled in pass-through mode in most cases. PNG images which make 
use of interlacing, contain an alpha channel (which will be lost anyway, see below), or 
have 16 bit color depth will have to be uncompressed, which takes significantly longer 
than pass-through mode. If a PNG image contains transparency information, the trans-
parency is retained in the generated PDF (see Section 5.1.3, »Image Masks and Transpar-
ency«, page 114). However, alpha channels are not supported by PDFlib.
JPEG images. JPEG images are always handled in pass-through mode. PDFlib supports 
the following flavors of JPEG image compression:
>Baseline JPEG compression which accounts for the vast majority of JPEG images.
>Progressive JPEG compression.
JPEG images can be packaged in several different file formats. PDFlib supports all com-
mon JPEG file formats, and will read resolution information from the following flavors:
>JFIF, which is generated by a wide variety of imaging applications.
>JPEG files written by Adobe Photoshop and other Adobe applications. PDFlib applies 
a workaround which is necessary to correctly process Photoshop-generated CMYK 
JPEG files.
C# PDF Convert to HTML SDK: Convert PDF to html files in C#.net
Turn PDF form data to HTML form. Export PDF images to HTML images. ContextType. SVG ContextType.HTML. directory, The output file directory.
extract data from pdf form to excel; how to make a pdf form fillable in reader
VB.NET PDF Password Library: add, remove, edit PDF file password
' Define input and output file path. As String = Program.RootPath + "\\" 3_pw_a.pdf" ' Create a passwordSetting.IsAnnot = True ' Allow to fill form.
filling out pdf forms with reader; how to save a filled out pdf form in reader
5.1  Importing Raster Images 113
Note PDFlib does not interpret resolution information from JPEG images in the SPIFF file format, nor 
color space information from JPEG images in the EXIF file format. JPEG images with multiple 
scans (this is a very rare flavor) are not supported due to restrictions in Acrobat.
GIF images. GIF images are always handled in pass-through mode (PDFlib does not 
implement LZW decompression). PDFlib supports the following flavors of GIF images:
>Due to restrictions in the compression schemes supported by the PDF file format, 
the entry in the GIF file called »LZW minimum code size« must have a value of 8 bits. 
Unfortunately, there is no easy way to determine this value for a certain GIF file. An 
image which contains more than 128 distinct color values will always qualify (e.g., a 
full 8-bit color palette with 256 entries). Images with a smaller number of distinct 
colors may also work, but it is difficult to tell in advance because graphics programs 
may use 8 bits or less as LZW minimum code size in this case, and PDFlib may there-
fore reject the image. The following trick which works in Adobe Photoshop and simi-
lar image processing software is known to result in GIF images which are accepted by 
PDFlib: load the GIF image, and change the image color mode from »indexed« to 
»RGB«. Now change the image color mode back to »indexed«, and choose a color pal-
ette with more than 128 entries, for example the Mac or Windows system palette, or 
the Web palette.
>The image must not be interlaced.
For other GIF image flavors conversion to the PNG graphics format is recommended.
Note In a particular test case PDFlib converted a GIF image to a PDF file which displays just fine, but 
results in a PostScript error when printed to a PostScript Level 2 or 3 printer. Since the problem 
does not occur with Ghostscript, we consider this a bug in the PostScript interpreter. You can 
work around the problem by selecting PostScript Level 1 output in Acrobat’s print dialog.
TIFF images. PDFlib will handle most TIFF images in pass-through mode. PDFlib sup-
ports the following flavors of TIFF images:
>compression schemes: uncompressed, CCITT (group 3, group 4, and RLE), ZIP (=Flate), 
LZW (with restrictions), and PackBits (=RunLength) are handled in pass-through 
mode; other compression schemes are handled by uncompressing.
>color: black and white, grayscale, RGB, and CMYK images; any alpha channel or mask 
which may be present in the file will be ignored.
>TIFF files containing more than one image (see Section 5.1.5, »Multi-Page Image 
Files«, page 117)
>Color depth must be 1, 2, 4, or 8 bits per color sample (this is a requirement of PDF).
Multi-strip TIFF images are converted to multiple images in the PDF file which will visu-
ally exactly represent the original image, but can be individually selected with Acrobat’s 
TouchUp object tool. Multi-strip TIFF images can be converted to single-strip images 
with the tiffcp command line tool which is part of the TIFFlib package.
1
The Image-
Magick
2
tool always writes single-strip TIFF images.
Some TIFF features (e.g., CIEL*a*b* color space, JPEG compression) and certain combi-
nations of features (e.g., LZW compression and alpha channel or mask, LZW compres-
sion and tiling) are not supported.
1. See http://www.libtiff.org 
2. See http://www.imagemagick.org 
C# PDF Password Library: add, remove, edit PDF file password in C#
Define input and output file path. outputFilePath = Program.RootPath + "\\" 3_pw_a.pdf"; // Create a passwordSetting.IsAnnot = true; // Allow to fill form.
cannot save pdf form in reader; collect data from pdf forms
C# PDF File Split Library: Split, seperate PDF into multiple files
also combine generated split PDF document files with other PDF files to form a new If your page number is set as 1, then the two output PDF files will contains
how to save filled out pdf form in reader; exporting pdf data to excel
114
Chapter 5:  Importing and Placing Objects
BMP images. BMP images cannot be handled in pass-through mode. PDFlib supports 
the following flavors of BMP images:
>BMP versions 2 and 3;
>color depth 1, 4, and 8 bits per component, including 3 x 8 = 24 bit TrueColor;
>black and white or RGB color (indexed and direct); 
>uncompressed as well as 4-bit and 8-bit RLE compression;
>PDFlib will not mirror images if the pixels are stored in bottom-up order (this is a 
rarely used feature in BMP which is interpreted differently in applications).
CCITT images. Group 3 or Group 4 fax compressed image data are always handled in 
pass-through mode. Note that this format actually means raw CCITT-compressed image 
data, not TIFF files using CCITT compression. Raw CCITT compressed image files are usu-
ally not supported in end-user applications, but can only be generated with fax-related 
software. Since PDFlib is unable to analyze CCITT images, all relevant image parameters 
have to be passed to PDF_load_image( ) by the client.
Raw data. Uncompressed (raw) image data may be useful for some special applica-
tions. The nature of the image is deduced from the number of color components: 1 com-
ponent implies a grayscale image, 3 components an RGB image, and 4 components a 
CMYK image.
5.1.3 Image Masks and Transparency
Transparency in PDF. PDF supports various transparency features, all of which are im-
plemented in PDFlib:
>Masking by position: an image may carry the intrinsic information »print the fore-
ground or the background«. This is realized by a 1-bit mask image, and is often used 
in catalog images.
>Masking by color value: pixels of a certain color are not painted, but the previously 
painted part of the page shines through instead (»ignore all blue pixels in the im-
age«). In TV and video technology this is also known as bluescreening, and is most of-
ten used for combining the weather man and the map into one image.
>PDF 1.4 introduced alpha channels or soft masks. These can be used to create a 
smooth transition between foreground and background, or to create semi-transpar-
ent objects (»blend the image with the background«). Soft masks are represented by 
1-component images with 1-8 bits per pixel.
PDFlib supports three kinds of transparency information in images: implicit transpar-
ency, explicit transparency, and image masks.
Implicit transparency. In the implicit case, the transparency information from an ex-
ternal image file is respected, provided the image file format supports transparency or 
an alpha channel (this is not the case for all image file formats). Transparency informa-
tion is detected in the following image file formats:
>GIF image files may contain a single transparent color value which is respected by 
PDFlib.
>PNG image files may contain several flavors of transparency information, or a full al-
pha channel. PDFlib will retain single transparent color values; if multiple color val-
C# PDF File Merge Library: Merge, append PDF files in C#.net, ASP.
Microsoft Office Word, Excel and PowerPoint data to PDF form. 3.pdf"; String outputFilePath = Program.RootPath + "\\" Output.pdf"; String[] inputFilePaths
how to save pdf form data in reader; extract table data from pdf to excel
C# Create PDF from Tiff Library to convert tif images to PDF in C#
String inputFilePath = Program.RootPath + "\\" 1.tif"; String outputFilePath = Program.RootPath + "\\" Output.pdf"; // Load a TIFF file.
extract data from pdf forms; pdf data extraction open source
5.1  Importing Raster Images 115
ues with an attached alpha value are given, only the first one with an alpha value be-
low 50 percent is used. A full alpha channel is ignored.
Explicit transparency. The explicit case requires two steps, both of which involve im-
age operations. First, an image must be prepared for later use as a transparency mask. 
This is accomplished by opening the image with the mask option. In PDF 1.3, which sup-
ports only 1-bit masks, using this option is required; in PDF 1.4 it is optional. The follow-
ing kinds of images can be used for constructing a mask:
>PNG images
>TIFF images (only single-strip)
>raw image data
Pixel values of 0 in the mask will result in the corresponding area of the masked image 
being painted, while high pixel values result in the background shining through. If the 
pixel has more than 1 bit per pixel, intermediate values will blend the foreground image 
against the background, providing for a transparency effect. In the second step the 
mask is applied to another image which itself is acquired through one of the image 
functions:
mask = PDF_load_image(p, "png", maskfilename, 0, "mask");
if (mask == -1)
return;
sprintf(optlist, "masked %d", mask);
image = PDF_load_image(p, type, filename, optlist)
if (image == -1)
return;
PDF_fit_image(p, image, x, y, "");
Note the different use of the option list for PDF_load_image( ): mask for defining a mask, 
and masked for applying a mask to another image.
The image and the mask may have different pixel dimensions; the mask will auto-
matically be scaled to the image’s size.
Note PDFlib converts multi-strip TIFF images to multiple PDF images, which would be masked indi-
vidually. Since this is usually not intended, this kind of images will be rejected both as a mask 
as well as a masked target image. Also, it is important to not mix the implicit and explicit cases, 
i.e., don’t use images with transparent color values as mask.
Image masks. Image masks are images with a bit depth of 1 (bitmaps) in which 0-bits 
are treated as transparent: whatever contents already exist on the page will shine 
through the transparent parts of the image. 1-bit pixels are colorized with the current 
fill color. The following kinds of images can be used as image masks:
>PNG images
>TIFF images (single- or multi-strip)
>JPEG images (only as soft mask, see below)
>BMP; note that BMP images are oriented differently than other image types. For this 
reason BMP images must be reflected along the x axis before they can be used as a 
mask.
>raw image data
Image masks are simply opened with the mask option, and placed on the page after the 
desired fill color has been set:
C# Create PDF from PowerPoint Library to convert pptx, ppt to PDF
String inputFilePath = Program.RootPath + "\\" 1.pptx"; String outputFilePath = Program.RootPath + "\\" Output.pdf"; // Load a PowerPoint (.pptx) file.
pdf form data extraction; pdf data extractor
C# Create PDF from Excel Library to convert xlsx, xls to PDF in C#
String inputFilePath = Program.RootPath + "\\" 1.xlsx"; String outputFilePath = Program.RootPath + "\\" Output.pdf"; // Load an Excel (.xlsx) file.
export excel to pdf form; extract pdf form data to xml
116
Chapter 5:  Importing and Placing Objects
mask = PDF_load_image(p, "tiff", maskfilename, 0, "mask");
PDF_setcolor(p, "fill", "rgb", (float) 1, (float) 0, (float) 0, (float) 0);
if (mask != -1) {
PDF_fit_image(p, mask, x, y, "");
}
If you want to apply a color to an image without the 0-bit pixels being transparent you 
must use the colorize option (see Section 5.1.4, »Colorizing Images«, page 116).
Soft masks. Soft masks generalize the concept of image masks to masks with more 
than 1 bit. They have been introduced in PDF 1.4 and blend the image against some ex-
isting background. PDFlib accepts all kinds of single-channel (grayscale) images as soft 
mask. They can be used the same way as image masks, provided the PDF output com-
patibility is at least PDF 1.4.
Ignoring transparency. Sometimes it is desirable to ignore any transparency informa-
tion which may be contained in an image file. For example, Acrobat’s anti-aliasing fea-
ture (also known as »smoothing«) isn’t used for 1-bit images which contain black and 
transparent as their only colors. For this reason imported images with fine detail (e.g., 
rasterized text) may look ugly when the transparency information is retained in the 
generated PDF. In order to deal with this situation, PDFlib’s automatic transparency 
support can be disabled with the ignoremask option when opening the file:
image = PDF_load_image(p, "gif", filename, 0, "ignoremask");
5.1.4 Colorizing Images
Similarly to image masks, where a color is applied to the non-transparent parts of an 
image, PDFlib supports colorizing an image with a spot color. This feature works for 
black and white or grayscale images in the following formats:
>BMP
>PNG
>JPEG
>TIFF (single- or multi-strip)
>GIF
For images with an RGB palette, colorizing is only reasonable when the palette contains 
only gray values, and the palette index is identical to the gray value. PDFlib does not 
check this condition, however.
In order to colorize an image with a spot color you must supply the colorize option 
when opening the image, and supply the respective spot color handle which must have 
been retrieved with PDF_makespotcolor( ):
PDF_setcolor(p, "both", "cmyk", 1, .79, 0, 0);
spot = PDF_makespotcolor(p, "PANTONE Reflex Blue CV", 0);
sprintf(optlist, "colorize %d", spot);
image = PDF_load_image(p, "tiff", "image.tif", 0, optlist)
if (image != -1) {
PDF_fit_image(p, image, x, y, "");
}
C# Create PDF from Word Library to convert docx, doc to PDF in C#.
String inputFilePath = Program.RootPath + "\\" 1.docx"; String outputFilePath = Program.RootPath + "\\" Output.pdf"; // Load a Word (.docx) document.
exporting pdf form to excel; java read pdf form fields
C# PDF Convert to Tiff SDK: Convert PDF to tiff images in C#.net
String inputFilePath = Program.RootPath + "\\" 1.pdf"; PDFDocument doc = new PDFDocument(inputFilePath); // Convert and output to a TIFF file.
pdf form field recognition; save pdf forms in reader
5.1  Importing Raster Images 117
5.1.5 Multi-Page Image Files
PDFlib supports TIFF files which contain more than one image, also known as multi-
page files. In order to use multi-page TIFFs, additional string and numerical parameters 
are used in the call to PDF_load_image( ):
image = PDF_load_image(p, "tiff", filename, 0 "page 2");
The page option indicates that a multi-image file is to be used. The last parameter speci-
fies the number of the image to use. The first image is numbered 1. This option may be 
increased until PDF_load_image( ) returns -1, signalling that no more images are avail-
able in the file.
A code fragment similar to the following can be used to convert all images in a multi-
image TIFF file to a multi-page PDF file:
for (frame = 1; /* */ ; frame++) {
sprintf(optlist, "page %d", frame);
image = PDF_load_image(p, "tiff", filename, 0, optlist);
if (image == -1)
break;
PDF_begin_page(p, width, height);
PDF_fit_image(p, image, 0.0, 0.0, "");
PDF_close_image(p, image);
PDF_end_page(p);
}
118
Chapter 5:  Importing and Placing Objects
5.2 Importing PDF Pages with PDI (PDF Import Library)
Note All functions described in this section require PDFlib+PDI. The PDF import library (PDI) is not 
contained in PDFlib or PDFlib Lite. Although PDI is integrated in all precompiled editions of 
PDFlib, a license key for PDI (or PPS, which includes PDI) is required.
5.2.1 PDI Features and Applications
When the optional PDI (PDF import) library is attached to PDFlib, pages from existing 
PDF documents can be imported. PDI contains a parser for the PDF file format, and pre-
pares pages from existing PDF documents for easy use with PDFlib. Conceptually, im-
ported PDF pages are treated similarly to imported raster images such as TIFF or PNG: 
you open a PDF document, choose a page to import, and place it on an output page, ap-
plying any of PDFlib’s transformation functions for translating, scaling, rotating, or 
skewing the imported page. Imported pages can easily be combined with new content 
by using any of PDFlib’s text or graphics functions after placing the imported PDF page 
on the output page (think of the imported page as the background for new content). Us-
ing PDFlib and PDI you can easily accomplish the following tasks:
>overlay two or more pages from multiple PDF documents (e.g., add stationary to ex-
isting documents in order to simulate preprinted paper stock);
>place PDF ads in existing documents;
>clip the visible area of a PDF page in order to get rid of unwanted elements (e.g., crop 
marks), or scale pages;
>impose multiple pages on a single sheet for printing;
>process multiple PDF/X-conforming documents to create a new PDF/X file;
>add some text (e.g., headers, footers, stamps, page numbers) or images (e.g., company 
logo) to existing PDF pages;
>copy all pages from an input document to the output document, and place barcodes 
on the pages.
In order to place a PDF background page and populate it with dynamic data (e.g., mail 
merge, personalized PDF documents on the Web, form filling) we recommend using PDI 
along with PDFlib blocks (see Chapter 6).
5.2.2 Using PDI Functions with PDFlib
General considerations. It is important to understand that PDI will only import the ac-
tual page contents, but not any hypertext features (such as sound, movies, embedded 
files, hypertext links, form fields, JavaScript, bookmarks, thumbnails, and notes) which 
may be present in the imported PDF document. These hypertext features can be gener-
ated with the corresponding PDFlib functions. PDFlib blocks will also be ignored when 
importing a page.
You can not re-use individual elements of imported pages with other PDFlib func-
tions. For example, re-using fonts from imported documents for some other content is 
not possible. Instead, all required fonts must be configured in PDFlib. If multiple im-
ported documents contain embedded font data for the same font, PDI will not remove 
any duplicate font data. On the other hand, if fonts are missing from some imported 
PDF, they will also be missing from the generated PDF output file. As an optimization 
you should keep the imported document open as long as possible in order to avoid the 
same fonts to be embedded multiple times in the output document.
5.2  Importing PDF Pages with PDI (PDF Import Library) 119
PDI does not change the color of imported PDF documents in any way. For example, 
if a PDF contains ICC color profiles these will be retained in the output document.
PDFlib uses the template feature for placing imported PDF pages on the output page. 
Since some third-party PDF software does not correctly support the templates, restric-
tions in certain environments other than Acrobat may apply (see Section 3.2.4, »Tem-
plates«, page 57). 
PDFlib-generated output which contains imported pages from other PDF documents 
can be processed with PDFlib+PDI again. However, due to restrictions in PostScript 
printing the nesting level should not exceed 10.
Code fragments for importing PDF pages. Dealing with pages from existing PDF docu-
ments is possible with a very simple code structure. The following code snippet opens a 
page from an existing document, and copies the page contents to a new page in the out-
put PDF document (which must have been opened before):
int
doc, page, pageno = 1;
char
*filename = "input.pdf";
...
doc = PDF_open_pdi(p, filename, "", 0);
if (doc == -1) {
printf("Couldn't open PDF input file '%s'\n", filename);
exit(1);
}
page = PDF_open_pdi_page(p, doc, pageno, "");
if (page == -1) {
printf("Couldn't open page %d of PDF file '%s'\n", pageno, filename);
exit(2);
}
/* dummy page size, will be modified by the adjustpage option */
PDF_begin_page(p, 20, 20);
PDF_fit_pdi_page(p, page, 0, 0, "adjustpage");
PDF_close_pdi_page(p, page);
...add more content to the page using PDFlib functions...
PDF_end_page(p);
The last argument to PDF_fit_pdi_page( ) is an option list which supports a variety of op-
tions for positioning, scaling, and rotating the imported page. Details regarding these 
options are discussed in Section 5.3, »Placing Images and Imported PDF Pages«, page 121.
Dimensions of imported PDF pages. Imported PDF pages are regarded similarly to im-
ported raster images, and can be placed on the output page using PDF_fit_pdi_page( ). By 
default, PDI will import the page exactly as it is displayed in Acrobat, in particular:
>cropping will be retained (in technical terms: if a CropBox is present, PDI favors the 
CropBox over the MediaBox; see Section 3.2.2, »Page Sizes and Coordinate Limits«, 
page 55);
>rotation which has been applied to the page will be retained.
Alternatively, you can use the pdiusebox option to explicitly instruct PDI to use any of 
the MediaBox, CropBox, BleedBox, TrimBox or ArtBox entries of a page (if present) for 
determining the size of the imported page (see Table 7.29 for details).
120
Chapter 5:  Importing and Placing Objects
Many important properties, such as width and height of an imported PDF page, all of 
the Box entries, and the number of pages in a document, can be queried via PDFlib’s pa-
rameter mechanism. The relevant parameters are listed in Table 7.28 and Table 7.29. 
These properties can be useful in making decisions about the placement of imported 
PDF pages on the output page.
Imported PDF pages with layers. Acrobat 6 (PDF 1.5) introduced the layer functionality 
(technically known as optional content). PDI will ignore any layer information which 
may be present in a file. All layers in the imported page, including invisible layers, will 
be visible in the generated output.
5.2.3 Acceptable PDF Documents
Generally, PDI will happily process all kinds of PDF documents which can be opened 
with Acrobat, regardless of PDF version number or features used within the file. In order 
to import pages from encrypted documents (i.e., files with permission settings or pass-
word) the corresponding master password must be supplied.
However, in rare cases a PDF document or a particular page of a document may be re-
jected by PDI.
If a PDF document or page can’t be imported successfully PDF_open_pdi( ) and PDF_
open_pdi_page( ) will return an error code by default. However, if you need to know 
more details about the failure set the pdiwarning option in the option lists of these func-
tions to true. Alternatively, the pdiwarning parameter can be set on a global basis:
PDF_set_parameter(p, "pdiwarning", "true");
/* enable PDI warnings */
This will cause PDF_open_pdi( ) and PDF_open_pdi_page( ) to raise an exception with 
more details about the failure in the corresponding exception message. The following 
kinds of PDF documents can not be imported with PDI:
>PDF documents which use a higher PDF version number than the PDF output docu-
ment that is currently being generated. The reason is that PDFlib can no longer make 
sure that the output will actually conform to the requested PDF version after a PDF 
with a higher version number has been imported. Solution: set the version of the 
output PDF to the required level using the compatibility parameter.
>Files with a damaged cross-reference table. You can identify such files by Acrobat’s 
warning message File is damaged but is being repaired. Solution: open and resave the 
file with Acrobat.
Documents you may be interested
Documents you may be interested