8.5  Pseudo Objects s 191
Pseudo objects for simplified resource handling. Resources are a key concept for man-
aging various kinds of data which are required for completely describing the contents 
of a page. The resource concept in PDF is very powerful and efficient, but complicates 
access with various technical concepts, such as recursion and resource inheritance. 
pCOS greatly simplifies resource retrieval and supplies several groups of pseudo objects 
which can be used to directly query resources. Some of these pseudo resource dictionar-
ies contain entries in addition to the standard PDF keys in order to further simplify re-
source information retrieval.
pCOS supports two groups of pseudo objects for resource retrieval. Global resource 
arrays contain all resources in a PDF document, while page resources contain only the 
resources used by a particular page. The resource entries in the global and page-based 
resource arrays reflect resources from the user’s point of view. They differ from native 
PDF resources in several ways:
>Some entries may be added (e.g. inline images, simple color spaces) or deleted (e.g. 
the parts of multi-strip images).
>In addition to the original PDF dictionary keys resource dictionaries may contain 
some user-friendly keys for auxiliary information (e.g. embedding status of a font, 
number of components of a color space).
The following list details the two categories using the images resource type as an exam-
ple; the same scheme applies to all resource types listed in Table 8.5:
>A list of image resources in the document is available in images[].
>A list of image resources on each page is available in pages[]/images[].
Table 8.5 5 Pseudo objects for resource retrieval; each pseudo object P in this table creates two arrays with resources P[] 
and pages[]/P[].
object name
explanation
colorspaces
(Array of dicts) Array containing dictionaries for all color spaces on the page or in the document. In addi-
tion to the standard PDF keys in color space and ICC profile stream dictionaries the following pseudo keys 
are supported:
alternateid
(Integer; only for name=Separation and DeviceN) Index of the underlying alternate color 
space in the colorspaces[] pseudo object.
alternateonly
(Boolean) If true, the colorspace is only used as the alternate color space for (one or more) 
Separation or DeviceN color spaces, but not directly.
baseid
(Integer; only for name=Indexed) Index of the underlying base color space in the 
colorspaces[] pseudo object.
colorantname
(Name; only for name=Separation) Name of the colorant
colorantnames
(Array of names; only for name=DeviceN) Names of the colorants
components
(Integer) Number of components of the color space
name
(String) Name of the color space
csarray
(Array; not for name=DeviceGray/RGB/CMYK) Array describing the underlying native color 
space.
Color space resources will include all color spaces which are referenced from any type of object, including 
the color spaces which do not require any native PDF resources (i.e. DeviceGray, DeviceRGB, and 
DeviceCMYK).
Pdf thumbnail preview - Draw thumbnail images for PDF in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Thumbnail Generation with Various Options for Quick PDF Navigation
print pdf thumbnails; pdf file thumbnail preview
Pdf thumbnail preview - VB.NET PDF Thumbnail Create SDK: Draw thumbnail images for PDF in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Thumbnail Generation with Various Options for Quick PDF Navigation
pdf thumbnail creator; create thumbnail from pdf c#
192
Chapter 8:  The pCOS Interface
extgstates
(Array of dicts) Array containing the dictionaries for all extended graphics states (ExtGStates) on the page 
or in the document
fonts
(Array of dicts) Array containing dictionaries for all fonts on the page or in the document. In addition to 
the standard PDF keys in font dictionaries, the following pseudo keys are supported:
name
(String) PDF name of the font without any subset prefix. Non-ASCII CJK font names will be 
converted to Unicode.
embedded(Boolean) Embedding status of the font
type
(String) Font type
vertical
(Boolean) true for fonts with vertical writing mode, false otherwise
images
(Array of dicts) Array containing dictionaries for all images on the page or in the document. In addition 
to the standard PDF keys the following pseudo keys are supported:
bpc
(Integer) The number of bits per component. This entry is usually the same as 
BitsPerComponent, but unlike this it is guaranteed to be available.
colorspaceid
(Integer) Index of the image’s color space in the colorspaces[] pseudo object. This can be 
used to retrieve detailed color space properties.
filterinfo (Dict) Describes the remaining filter for streams with unsupported filters or when retrieving 
stream data with the keepfilter option set to true. If there is no such filter no filterinfo 
dictionary will be available. The dictionary contains the following entries:
name
(Name) Name of the filter
supported(Boolean) True if the filter is supported
decodeparms
(Dict) The DecodeParms dictionary if one is present for the filter
maskid
(Integer) Index of the image’s mask in the images[] pseudo object if the image is masked, 
otherwise -1
maskonly (Boolean) If true, the image is only used as a mask for (one or more) other images, but not 
directly
patterns
(Array of dicts) Array containing dictionaries for all patterns on the page or in the document
properties
(Array of dicts) Array containing dictionaries for all properties on the page or in the document
shadings
(Array of dicts) Array containing dictionaries for all shadings on the page or in the document. In addition 
to the standard PDF keys in shading dictionaries the following pseudo key is supported:
colorspaceid
(Integer) Index of the underlying color space in the colorspaces[] pseudo object.
templates
(Array of dicts) Array containing dictionaries for all templates (Form XObjects) on the page or in the doc-
ument
Table 8.5 5 Pseudo objects for resource retrieval; each pseudo object P in this table creates two arrays with resources P[] 
and pages[]/P[].
object name
explanation
How to C#: Preview Document Content Using XDoc.Word
With the SDK, you can preview the document content according to the preview thumbnail by the ways as following. C# DLLs for Word File Preview. Add references:
create pdf thumbnail image; pdf thumbnail viewer
How to C#: Preview Document Content Using XDoc.PowerPoint
With the SDK, you can preview the document content according to the preview thumbnail by the ways as following. C# DLLs: Preview PowerPoint Document.
create thumbnails from pdf files; view pdf thumbnails
8.6  Encrypted PDF Documents s 193
8.6Encrypted PDF Documents
pCOS supports encrypted and unencrypted PDF documents as input. However, full ob-
ject retrieval for encrypted documents requires the appropriate master password to be 
supplied when opening the document. Depending on the availability of user and mas-
ter password, encrypted documents can be processed in one of the pCOS modes de-
scribed below.
Full pCOS mode (mode 2). Encrypted PDFs can be processed without any restriction 
provided the master password has been supplied upon opening the file. All objects will 
be returned unencrypted. Unencrypted documents will always be opened in full pCOS 
mode.
Restricted pCOS mode (mode 1). If the document has been opened without the appro-
priate master password and does not require a user password (or the user password has 
been supplied) pCOS operations are subject to the following restriction: The contents of 
objects with type string, stream, or fstream can not be retrieved with the following excep-
tions:
>The objects /Root/Metadata and /Info/* (document info keys) can be retrieved if 
nocopy=false or plainmetadata=true.
>The objects bookmarks[...]/Title and annots[...]/Contents (bookmark and annotation 
contents) can be retrieved if nocopy=false, i.e. if text extraction is allowed for the 
main text on the pages.
Minimum pCOS mode (mode 0). Regardless of the encryption status and the availabil-
ity of passwords, the universal pCOS pseudo objects listed in Table 8.3 are always avail-
able. For example, the encrypt pseudo object can be used to query a document’s encryp-
tion status. Encrypted objects can not be retrieved in minimum pCOS mode.
Table 8.6 lists the resulting pCOS modes for various password combinations. De-
pending on the document’s encryption status and the password supplied when open-
ing the file, PDF object paths may be available in minimum, restricted, or full pCOS 
mode. Trying to retrieve a pCOS path which is inappropriate for the respective mode 
will raise an exception.
Table 8.6 6 Resulting pCOS modes for various password combinations
If you know...
...pCOS will run in...
none of the passwords
restricted pCOS mode if no user password is set, minimum pCOS mode 
otherwise
only the user password
restricted pCOS mode
the master password
full pCOS mode
How to C#: Set Image Thumbnail in C#.NET
VB.NET How-to, VB.NET PDF, VB.NET Word, VB.NET Excel, VB.NET PowerPoint, VB How to C#: Set Image Thumbnail in C#.NET. To Preview Images in WinForm Application.
pdf preview thumbnail; pdf thumbnail generator
How to C#: Preview Document Content Using XDoc.excel
document in memory. With the SDK, you can preview the document content according to the preview thumbnail by the ways as following.
create pdf thumbnails; thumbnail view in for pdf files
194
Chapter 8:  The pCOS Interface
How to C#: Generate Thumbnail for Word
Preview Document. Conversion. Convert Word to PDF. Convert Word Convert Word to ODT. Convert PDF to Word. Text Search. Insert Image. Thumbnail Create. Thumbnail Create
how to view pdf thumbnails in; view pdf image thumbnail
How to C#: Generate Thumbnail for PowerPoint
Preview Document. Conversion. Convert PowerPoint to PDF. Convert PowerPoint to Pages. Annotate PowerPoint. Text Search. Insert Image. Thumbnail Create.
html display pdf thumbnail; pdf reader thumbnails
9.1  Acrobat and PDF Versions s 195
9Generating various PDF Flavors
9.1Acrobat and PDF Versions
At the user’s option PDFlib generates output according to PDF 1.3 (Acrobat 4), PDF1.4 
(Acrobat 5), PDF1.5 (Acrobat 6), or PDF1.6 (Acrobat 7). In addition, PDF1.7 (Acrobat8) files 
can be created, but at this time no specific features of PDF1.7 are supported. The PDF 
output version can be controlled with the compatibility option in PDF_begin_document()
.
Cookbook Code samples regarding PDF flavors can be found in the pdf_flavors category of the PDFlib 
Cookbook.
PDFlib output features for PDF 1.4 or above. In PDF1.3 compatibility mode the PDFlib 
features for higher PDF versions are not available. Trying to use one of these features in 
PDF1.3 mode will result in an exception.
PDFlib output features for PDF 1.5 or above. In PDF1.3 or 1.4 compatibility modes the 
PDFlib features for higher PDF versions are not available. Trying to use one of these fea-
tures in PDF1.3 or PDF1.4 mode will result in an exception.
Table 9.1 1 PDFlib features for PDF 1.4 which are not available in PDF1.3 compatibility mode
Feature
PDFlib API functions and options
smooth shadings (color blends)
PDF_shading_pattern(), PDF_shfill(), PDF_shading()
soft masks
PDF_load_image() with the masked option referring to an image with more than 
1 bit pixel depth
128-bit encryption
PDF_begin_document() with the userpassword, masterpassword, permissions 
options
extended permission settings
PDF_begin_document() with permissions option, see Table 9.4
certain CMaps for CJK fonts
PDF_load_font(), see Table 4.5
transparency and other graphics 
state options
PDF_create_gstate() with options alphaisshapeblendmodeopacityfill
opacitystroketextknockout
certain options for actions
PDF_create_action()
certain options for annotations
PDF_create_annotation()
certain field options
PDF_create_field() and PDF_create_fieldgroup()
Tagged PDF
tagged option in PDF_begin_document()
Table 9.2 2 PDFlib features for PDF1.5 which are not available in lower compatibility modes
Feature
PDFlib API functions and options
certain field options
PDF_create_field() and PDF_create_fieldgroup()
page layout
PDF_begin/end_document(): option pagelayout=twopageleft/right
certain annotation options
PDF_create_annotation()
extended permission settings
permissions=plainmetadata in PDF_begin_document(), see Table 9.4
C# Image: View & Operate Web Page Using .NET Doc Image Web Viewer
Support multiple document and image formats, like PDF and TIFF; Thumbnail images order of source document file using mouse dragging in thumbnail preview section;
create thumbnail from pdf; pdf thumbnails
How to C#: Generate Thumbnail for Excel
Preview Document. Conversion. Convert Excel to PDF. Convert Excel to Insert Image. Thumbnail Create. Thumbnail Create. |. Home ›› XDoc.Excel ›› C# Excel
pdf thumbnails in; generate pdf thumbnail c#
196
Chapter 9:  Generating various PDF Flavors
PDFlib output features for PDF 1.6 or above. In PDF compatibility modes up to PDF1.5 
the PDFlib features for PDF1.6 are not available. Trying to use one of these features in 
lower PDF modes will result in an exception.
PDF version of documents imported with PDI. In all compatibility modes only PDF 
documents with the same or a lower compatibility level can be imported with PDI. If 
you must import a PDF with a newer level you must set the compatibility option accord-
ingly (see Section 6.2.3, »Acceptable PDF Documents«, page 132.
Changing the PDF version of a document. If you must create output according to a 
particular PDF version, but need to import PDFs which use a higher PDF version you 
must convert the documents to the desired lower PDF version before you can import 
them with PDI. You can do this with Acrobat 7/8/9 Professional: save the file in the for-
mats PDF1.3 - PDF1.6 (Acrobat7) or PDF1.3 - PDF1.7 (Acrobat 8) using Advanced, PDF 
Optimizer, Make compatible with.
certain CMaps for CJK fonts
PDF_load_font(), see Table 4.5
Tagged PDF
certain options for PDF_begin_item();
PDF_begin/end_page_ext(): option taborder
Layers
PDF_define_layer(), PDF_begin_layer(), PDF_end_layer(), PDF_layer_
dependency()
JPEG2000 images
imagetype=jpeg2000 in PDF_load_image()
Table 9.3 3 PDFlib features for PDF1.6 which are not available in lower compatibility modes
Feature
PDFlib API functions and options
user units
PDF_begin/end_document(): option userunit
print scaling
PDF_begin/end_document(): suboption printscaling for viewerpreferences 
option
document open mode
PDF_begin/end_document(): option openmode=attachments
AES encryption
PDF_begin_document(): AES encryption will automatically be used with 
compatibility=1.6 or above when the masterpassworduserpassword
attachmentpassword, or permissions option is supplied
encrypt file attachments only
PDF_begin/end_document(): option attachmentpassword
attachment description
PDF_begin/end_document(): suboption description for option attachments
embed U3D models
PDF_load_3ddata(), PDF_create_3dview(); PDF_create_annotation(): type=3D
Table 9.2 2 PDFlib features for PDF1.5 which are not available in lower compatibility modes
Feature
PDFlib API functions and options
How to C#: Overview of Using XDoc.PowerPoint
document (ODP). Empower to navigate PowerPoint document content quickly via thumbnail. Able to you want. Create Thumbnail. See this
enable pdf thumbnails; pdf thumbnail generator online
How to C#: Overview of Using XDoc.Word
Tell C# users how to: create a new Word file and load Word from pdf; merge, append, and split Word files; insert, delete, move, rotate, copy Create Thumbnail.
create pdf thumbnail; pdf thumbnail html
9.2  Encrypted PDF F 197
9.2Encrypted PDF
9.2.1Strengths and Weaknesses of PDF Security
PDF supports various security features which aid in protecting document contents. 
They are based on Acrobat’s standard encryption handler which uses symmetric en-
cryption. Both Acrobat Reader and the full Acrobat product support the following secu-
rity features:
>Permissions restrict certain actions for the PDF document, such as printing or ex-
tracting text.
>The user password is required to open the file.
>The master password is required to change any security settings, i.e. permissions, 
user or master password. Files with user and master passwords can be opened for 
reading or printing with either password.
>(PDF1.6) Attachments can be encrypted even in otherwise unprotected documents.
If a file has a user or master password or any permission restrictions set, it will be en-
crypted.
Cracking protected PDF documents. The length of the encryption keys used for pro-
tecting documents depends on the PDF compatibility level:
>For PDF versions up to and including 1.3 (i.e., Acrobat 4) the key length is 40 bits.
>For PDF version 1.4 and above the key length is 128 bits. This requires Acrobat 5 or 
above. For PDF1.5 the key length will also be 128 bits, but a slightly different encryp-
tion method will be used, which requires Acrobat 6.
>PDF1.6 supports AES (Advanced Encryption Standard) with 128-bit keys. This re-
quires Acrobat7 or above.
It is widely known that a key length of 40 bits for symmetrical encryption (as used in 
PDF) is not secure. Actually, using commercially available cracking software it is possi-
ble to disable 40-bit PDF security settings with a brute-force attack within days or 
weeks, depending on the length and quality of the password. For maximum security we 
recommend the following:
>Use 128-bit encryption (i.e., PDF 1.4 compatibility setting) if at all possible. This re-
quires Acrobat 5 or above for all users of the document.
>Use AES encryption unless your users work with older versions than Acrobat7.
>Documents which have only a master password, but no user password, can always be 
cracked. You should therefore consider applying a user password (but of course the 
user password must be available to legitimate users of the document).
>Passwords should be at least six characters long and should contain non-alphabetic 
characters. Passwords should definitely not resemble your spouse’s or pet’s name, 
your birthday etc. in order to prevent so-called dictionary attacks or password guess-
ing. It is important to mention that even with 128-bit encryption short passwords 
can be cracked within minutes.
Access permissions. Setting some access restriction, such as printing prohibited will dis-
able the respective function in Acrobat. However, this not necessarily holds true for 
third-party PDF viewers or other software. It is up to the developer of PDF tools whether 
or not access permissions will be honored. Indeed, several PDF tools are known to ignore 
permission settings altogether; commercially available PDF cracking tools can be used 
198
Chapter 9:  Generating various PDF Flavors
to disable any access restrictions. This has nothing to do with cracking the encryption; 
there is simply no way that a PDF file can make sure it won’t be printed while it still re-
mains viewable. This is actually documented in Adobe’s own PDF reference:
There is nothing inherent in PDF encryption that enforces the document permissions speci-
fied in the encryption dictionary. It is up to the implementors of PDF viewers to respect the in-
tent of the document creator by restricting user access to an encrypted PDF file according to 
the permissions contained in the file.
9.2.2Protecting Documents with PDFlib
Encryption algorithm and key length. When creating protected documents PDFlib will 
choose the strongest possible encryption and key length which are possible with the 
PDF compatibility level chosen by the client:
>For PDF 1.3 (Acrobat 4) RC4 with 40-bit keys is used.
>For PDF 1.4 (Acrobat 5) RC4 with 128-bit keys is used. This requires Acrobat 5 or above.
>For PDF1.5 (Acrobat 6) RC4 with 128-bit keys is used. This is the same key length as 
with PDF1.4, but a slightly different encryption method will be used which requires 
Acrobat 6.
>For PDF1.6 (Acrobat 7) and above the Advanced Encryption Standard (AES) with 128-
bit keys will be used.
Passwords. Passwords can be set with the userpassword and masterpassword options in 
PDF_begin_document(). PDFlib interacts with the client-supplied passwords in the fol-
lowing ways:
>If a user password or permissions (see below), but no master password has been sup-
plied, a regular user would be able to change the security settings. For this reason 
PDFlib considers this situation as an error.
>If user and master password are the same, a distinction between user and owner of 
the file would no longer be possible, again defeating effective protection. PDFlib con-
siders this situation as an error.
>For both user and master passwords up to 32 characters are accepted. Empty pass-
words are not allowed.
The supplied passwords will be used for all subsequently generated documents.
Good and bad passwords. The strength of PDF encryption is not only determined by 
the length of the encryption key, but also by the length and quality of the password. It is 
widely known that names, plain words, etc. should not be used as passwords since these 
can easily be guessed or systematically tried using a so-called dictionary attack. Surveys 
have shown that a significant number of passwords are chosen to be the spouse’s or 
pet’s name, the user’s birthday, the children’s nickname etc., and can therefore easily be 
guessed.
While PDF encryption internally works with 40- or 128-bit keys, on the user level 
passwords of up to 32 characters are used. The internal key which is used to encrypt the 
PDF document is derived from the user-supplied password by applying some compli-
cated calculations. If the password is weak, the resulting protection will be weak as well, 
regardless of the key length. Even 128-bit keys and AES encryption are not very secure if 
short passwords are used.
9.2  Encrypted PDF F 199
Non-ASCII characters in passwords. Attention must be paid when characters outside 
the range 0x20-0x7E are used in passwords, i.e. characters which are not in the tradi-
tional ASCII character set. As an example, let’s take a look at the use of the character Ä 
within a password. On the Mac this character has code 0x80, while on Windows it is en-
coded as 0xC4. Since users expect the file to be opened when using the password Ä on 
either platform, Acrobat converts the supplied password to an internal encoding (called 
PDFDocEncoding) before applying the password. Characters which are not available in 
this encoding will be mapped to the space character. PDFDocEncoding contains all char-
acters of the Mac and Windows platforms, but requires several characters to be convert-
ed. In the example above, when the user encrypts the file with password Ä on the Mac, 
PDI would be unable to decrypt the file if the code for Ä would be used directly. PDI 
therefore applies the same password conversion as Acrobat in order to make sure that 
files encrypted with Mac or Windows versions of Acrobat can successfully be decrypted. 
Upon decryption PDI will automatically detect the required conversion:
>WinAnsi to PDFDocEncoding conversion if the document was encrypted with Acro-
bat on Windows or with PDFlib PLOP 2.1 or above;
>MacRoman to PDFDocEncoding conversion if the document was encrypted with Ac-
robat on the Mac;
>No conversion if the document was encrypted with some other software, including 
PDFlib PLOP 2.0 (but not any newer versions).
When encrypting files, PDFlib will act like Acrobat on Windows and interpret the sup-
plied passwords in WinAnsi encoding, i.e., it will apply a WinAnsi to PDFDocEncoding 
conversion to the supplied user and master passwords; on EBCDIC platforms it will ap-
ply EBCDIC to WinAnsi conversion prior to that.
Permissions. Access restrictions can be set with the permissions option in PDF_begin_
document(). It contains one or more access restriction keywords. When setting the 
permissions option the masterpassword option must also be set, because otherwise Acro-
bat users could easily remove the permission settings. By default, all actions are al-
lowed. Specifying an access restriction will disable the respective feature in Acrobat. Ac-
cess restrictions can be applied without any user password. Multiple restriction 
keywords can be specified as in the following example:
p.begin_document(filename, "masterpassword=abc123 permissions={noprint nocopy}");
Table 9.4 lists all supported access restriction keywords. As detailed in the table, some 
keywords require PDF 1.4 or higher compatibility. They will be rejected if the PDF output 
version is too low.
Cookbook A full code sample can be found in the Cookbook topic general/permission_settings.
Table 9.4 4 Access restriction keywords for the permissions option in PDF_begin_document()
keyword
explanation
noprint
Acrobat will prevent printing the file.
nomodify
Acrobat will prevent editing or cropping pages and creating or changing form fields.
nocopy
Acrobat will prevent copying and extracting text or graphics; the accessibility interface will be controlled 
by noaccessible.
noannots
Acrobat will prevent creating or changing annotations and form fields.
200
Chapter 9:  Generating various PDF Flavors
Note When serving PDFs over the Web, clients can always produce a local copy of the document with 
their browser. There is no way for a PDF to prevent users from saving a local copy.
Encrypted file attachments. In PDF1.6 and above file attachments can be encrypted 
even in otherwise unprotected documents. This can be achieved by supplying the 
attachmentpassword option to PDF_begin_document().
noforms
(PDF 1.4; implies nomodify and noannots) Acrobat will prevent form field filling.
noaccessible
(PDF 1.4) Acrobat will prevent extracting text or graphics for accessibility purposes (such as a screenreader 
program).
noassemble
(PDF 1.4; implies nomodify) Acrobat will prevent inserting, deleting, or rotating pages and creating 
bookmarks and thumbnails.
nohiresprint
(PDF 1.4) Acrobat will prevent high-resolution printing. If noprint isn’t set, printing is restricted to the 
»print as image« feature which prints a low-resolution rendition of the page.
plainmeta-
data
(PDF 1.5) Keep XMP document metadata unencrypted even for encrypted documents.
Table 9.4 4 Access restriction keywords for the permissions option in PDF_begin_document()
keyword
explanation
Documents you may be interested
Documents you may be interested