pdf viewer control in asp net c# : Add image to pdf preview Library SDK component .net asp.net azure mvc PDF32000_20087-part2391

© 
Adobe Systems Incorporated 2008 – All rights reserved
63
PDF 32000-1:2008
d) Create an RC4 encryption key using the first n bytes of the output from the final MD5 hash, where n shall 
always  be 5  for security  handlers of revision  2  but, for  security  handlers  of revision  3  or greater, shall 
depend on the value of the encryption dictionary’s Length entry. 
e) Pad or truncate the user password string as described in step (a) of "Algorithm 2: Computing an encryption 
key". 
f) Encrypt the result of step (e), using an RC4 encryption function with the encryption key obtained in step 
(d). 
g) (Security handlers of revision 3 or greater) Do the following 19 times: Take the output from the previous 
invocation of the RC4 function and pass it as input to a new invocation of the function; use an encryption 
key  generated by  taking each  byte of the encryption  key  obtained  in step  (d)  and  performing an  XOR 
(exclusive or) operation between that byte and the single-byte value of the iteration counter (from 1 to 19). 
h) Store the output from the final invocation of the RC4 function as the value of the O entry in the encryption 
dictionary. 
Algorithm 4: Computing the encryption dictionary’s U (user password) value (Security handlers of 
revision 2)
a) Create an encryption key based on the user password string, as described in "Algorithm 2: Computing an 
encryption key". 
b) Encrypt the 32-byte padding string shown in step (a) of "Algorithm 2: Computing an encryption key", using 
an RC4 encryption function with the encryption key from the preceding step. 
c) Store the result of step (b) as the value of the U entry in the encryption dictionary. 
Algorithm 5: Computing the encryption dictionary’s U (user password) value (Security handlers of 
revision 3 or greater)
a) Create an encryption key based on the user password string, as described in "Algorithm 2: Computing an 
encryption key". 
b) Initialize the MD5  hash  function  and pass the  32-byte padding  string shown in step (a) of "Algorithm 2: 
Computing an encryption key" as input to this function. 
c) Pass the first element of the file’s file identifier array (the value of the ID  entry in the document’s trailer 
dictionary; see Table 15) to the hash function and finish the hash. 
d) Encrypt the 16-byte result of the hash, using an RC4 encryption function with the encryption key from step 
(a). 
e) Do the following 19 times: Take the output from the previous invocation of the RC4 function and pass it as 
input  to  a  new  invocation of  the  function; use an encryption  key  generated by taking each  byte  of the 
original encryption key obtained in step (a) and performing an XOR (exclusive or) operation between that 
byte and the single-byte value of the iteration counter (from 1 to 19). 
f) Append 16 bytes of arbitrary padding to the output from the final invocation of the RC4 function and store 
the 32-byte result as the value of the U entry in the encryption dictionary. 
NOTE
The  standard  security  handler  uses  the  algorithms  6  and  7 that  follow,  to  determine  whether a  supplied 
password string is the correct user or owner password. Note too that algorithm 6 can be used to determine 
whether a document’s user password is the empty string, and therefore whether to suppress prompting for a 
password when the document is opened. 
Add image to pdf preview - insert images into PDF in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Sample C# code to add image, picture, logo or digital photo into PDF document page using PDF page editor control
add jpg to pdf acrobat; adding a png to a pdf
Add image to pdf preview - VB.NET PDF insert image library: insert images into PDF in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Guide VB.NET Programmers How to Add Images in PDF Document
add image to pdf reader; add picture pdf
PDF 32000-1:2008
64
© 
Adobe Systems Incorporated 2008 – All rights reserved
Algorithm 6: Authenticating the user password
a) Perform  all  but the last  step  of  "Algorithm 4:  Computing  the encryption dictionary’s  U  (user  password) 
value  (Security  handlers  of  revision 2)" or  "Algorithm  5:  Computing  the  encryption dictionary’s  U  (user 
password) value (Security handlers of revision 3 or greater)" using the supplied password string. 
b) If the result of step (a) is equal to the value of the encryption dictionary’s U entry (comparing on the first 16 
bytes in the case of security handlers of revision 3 or greater), the password supplied is the correct user 
password. The key obtained in step (a) (that is, in the first step of "Algorithm 4: Computing the encryption 
dictionary’s U  (user  password)  value (Security  handlers of revision  2)" or  "Algorithm  5: Computing  the 
encryption dictionary’s U (user password) value (Security handlers of revision 3 or greater)") shall be used 
to decrypt the document. 
Algorithm 7: Authenticating the owner password
a) Compute  an  encryption  key  from  the  supplied  password  string,  as  described  in  steps  (a)  to  (d)  of 
"Algorithm 3: Computing the encryption dictionary’s O (owner password) value". 
b) (Security handlers of revision 2 only) Decrypt the value of the encryption dictionary’s O entry, using an RC4 
encryption function with the encryption key computed in step (a). 
(Security handlers of revision 3 or greater) Do the following 20 times: Decrypt the value of the encryption 
dictionary’s O entry  (first  iteration)  or  the  output  from the  previous  iteration  (all subsequent  iterations), 
using  an  RC4  encryption  function  with  a  different  encryption  key  at  each  iteration.  The  key  shall  be 
generated by taking the original key (obtained in step (a)) and performing an XOR (exclusive or) operation 
between each byte of the key and the single-byte value of the iteration counter (from 19 to 0). 
c) The result of step (b) purports to be the user password. Authenticate this user password using "Algorithm 
6: Authenticating the user password". If it is correct, the password supplied is the correct owner password. 
7.6.4
Public-Key Security Handlers
7.6.4.1 General
Security  handlers may use public-key encryption  technology to encrypt a document  (or strings and streams 
within  a  document).  When  doing  so, specifying  one or  more  lists  of recipients,  where each  list has its own 
unique  access  permissions  may  be  done. Only  specified  recipients  shall  open  the  encrypted  document or 
content, unlike the standard security handler, where a password determines access. The permissions defined 
for public-key security handlers are shown in Table 24 in 7.6.4.2, "Public-Key Encryption Dictionary".
Public-key  security  handlers  use  the  industry  standard  Public  Key  Cryptographic  Standard  Number  7 
(PKCS#7) binary encoding syntax to encode recipient list, decryption key, and access permission information. 
The PKCS#7 specification is in Internet RFC 2315, PKCS #7: Cryptographic Message Syntax, Version 1.5 (see 
the Bibliography). 
When  encrypting  the  data,  each  recipient’s  X.509  public  key  certificate  (as  described  in  ITU-T 
Recommendation X.509; see the Bibliography) shall be available. When decrypting the data, the conforming 
reader shall scan the recipient list for which the content is encrypted and shall attempt to find a match with a 
certificate that belongs to the user. If a match is found, the user requires access to the corresponding private 
key, which may require authentication, possibly using a password. Once access is obtained, the private key 
shall be used to decrypt the encrypted data.
7.6.4.2 Public-Key Encryption Dictionary
Encryption dictionaries for public-key security handlers contain the common entries shown in Table 20, whose 
values are described above. In addition, they may contain the entry shown in Table 23 as described below.
The Filter entry shall be the name of a public-key security handler. 
C# WinForms Viewer: Load, View, Convert, Annotate and Edit PDF
Convert PDF to Tiff image (.tif, .tiff). • Convert PDF to HTML (.htm, .html). PDF Annotation. • Add sticky notes to PDF document in preview.
add photo to pdf form; add picture to pdf form
C# WPF Viewer: Load, View, Convert, Annotate and Edit PDF
PDF to Tiff image (.tif, .tiff). • Convert PDF to HTML (.htm, .html). PDF Annotation. • Add sticky notes to PDF document. • Highlight PDF text in preview.
add image to pdf java; how to add picture to pdf
© 
Adobe Systems Incorporated 2008 – All rights reserved
65
PDF 32000-1:2008
NOTE
Examples  of  existing  security  handlers  that  support  public-key  encryption  are Entrust.PPKEF, 
Adobe.PPKLite, and  Adobe.PubSec. This handler will be the preferred handler when encrypting the 
document.
Permitted  values  of  the SubFilter  entry  for  use  with  conforming  public-key  security  handlers  are 
adbe.pkcs7.s3adbe.pkcs7.s4, which shall be used when not using crypt filters (see 7.6.5, "Crypt Filters") 
and adbe.pkcs7.s5, which shall be used when using crypt filters.
The CFStmF, and StrF entries may be present when SubFilter is adbe.pkcs7.s5.
The value of the P entry shall be interpreted as an unsigned 32-bit quantity containing a set of flags specifying 
which access permissions shall be granted when the document is opened with user access. Table 24 shows 
the meanings of these flags. Bit positions within the flag word shall be numbered from 1 (low-order) to 32 (high-
order). A 1 bit in any position shall enable the corresponding access permission.
Conforming readers shall ignore all flags other than those at bit positions 2, 3, 4, 5, 6, 9, 10, 11, and 12.
Table 23 –  Additional encryption dictionary entries for public-key security handlers  
Key
Type
Value
Recipients
array
(Required when SubFilter is adbe.pkcs7.s3 or adbe.pkcs7.s4; PDF 1.3)
An  array  of  byte-strings,  where  each  string  is  a  PKCS#7  object  listing 
recipients who have been granted equal access rights to the document. The 
data contained in the PKCS#7 object shall include both a cryptographic key 
that shall be used to decrypt the encrypted data and the access permissions 
(see  Table 24)  that  apply  to  the  recipient  list.  There  shall  be  only  one 
PKCS#7 object per unique set of access permissions; if a recipient appears 
in  more  than  one  list,  the  permissions  used  shall  be  those  in  the  first 
matching list. 
When SubFilter is adbe.pkcs7.s5, recipient lists shall be specified in the 
crypt filter dictionary; see Table 27.
P
integer
(Required) A  set  of  flags  specifying  which  operations  shall  be  permitted 
when the document is opened with user access. If bit 2 is set to 1, all other 
bits  are  ignored  and  all  operations  are  permitted.  If  bit  2  is  set  to  0, 
permission for operations are based on the values of the remaining  flags 
defined in Table 24.
Table 24 –  Public-Key security handler user access permissions  
Bit position
Meaning
2
When set permits change of encryption and enables all other 
permissions.
3
Print the document (possibly not at the highest quality level, 
depending on whether bit 12 is also set). 
4
Modify the contents of the document by operations other than 
those controlled by bits 6, 9, and 11. 
5
Copy  or  otherwise  extract  text  and  graphics  from  the 
document by operations other than that controlled by bit 10. 
6
Add or modify text annotations, fill in interactive form fields, 
and, if bit 4 is also set, create or modify interactive form fields 
(including signature fields). 
9
Fill  in  existing  interactive  form  fields  (including  signature 
fiel
ds), even if bit 6 is clear. 
10
Extract text and graphics (in support of accessibility to users 
with disabilities or for other purposes). 
How to C#: Preview Document Content Using XDoc.Word
C# DLLs for Word File Preview. Add references: Get Preview From File. You may get document preview image from an existing Word file in C#.net.
adding images to pdf files; adding image to pdf
How to C#: Preview Document Content Using XDoc.PowerPoint
Add necessary XDoc.PowerPoint DLL libraries into your created C# application as You may get document preview image from an existing PowerPoint file in C#.net.
add a jpeg to a pdf; add image pdf acrobat
PDF 32000-1:2008
66
© 
Adobe Systems Incorporated 2008 – All rights reserved
7.6.4.3 Public-Key Encryption Algorithms
Figure  4  illustrates  how  PKCS#7  objects  shall  be  used  when  encrypting  PDF  files.  A  PKCS#7  object  is 
designed to encapsulate and encrypt what is referred to as the enveloped data.
Figure 4 –  Public-key encryption algorithm
The enveloped data in the PKCS#7 object contains keying material that shall be used to decrypt the document 
(or individual strings or streams in the document, when crypt filters are used; see 7.6.5, "Crypt Filters"). A key 
shall be used to encrypt (and decrypt) the enveloped data. This key (the plaintext key in Figure 4) shall be 
encrypted for each recipient, using that recipient’s public key, and shall be stored in the PKCS#7 object (as the 
encrypted key for each recipient). To decrypt the document, that key shall be decrypted using the recipient’s 
private key, which yields a decrypted (plaintext) key. That key, in turn, shall be used to decrypt the enveloped 
data in the PKCS#7 object, resulting in a byte array that includes the following information:
A 20-byte seed that shall be used to create the encryption key that is used by "Algorithm 1: Encryption of 
data using the RC4  or  AES  algorithms". The seed shall be  a unique random  number generated by  the 
security handler that encrypted the document.
 4-byte  value  defining  the  permissions,  least  significant  byte  first.  See  Table 24  for  the  possible 
permission values. 
When SubFilter is adbe.pkcs7.s3, the relevant permissions shall be only those specified for revision 2 of 
the standard security handler.
For adbe.pkcs7.s4, security handlers of revision 3 permissions shall apply. 
For adbe.pkcs7.s5,  which  supports  the  use  of  crypt  filters,  the  permissions  shall  be  the  same  as 
adbe.pkcs7.s4 when the crypt filter is referenced from the  StmF or  StrF entries of the encryption 
11
Assemble the document (insert, rotate, or delete pages and 
create bookmarks or thumbnail images), even if bit 4 is clear. 
12
Print the document to a representation from which a faithful 
digital  copy of the PDF content could be generated. When 
this bit is clear (and bit 3 is set), printing is limited to a low-
level representation of the appearance, possibly of degraded 
quality. 
Table 24 –  Public-Key security handler user access permissions  (continued)
Bit position
Meaning
20-byte seed
Permissions*
PKCS#7 Object
Enveloped data
Encrypted key
John Doe
Decrypt
John Doe’s private key
Plaintext key
Decrypt
Plaintext byte array
Used to generate 
encryption key
Encrypted key
Jeff Smith
* Permissions not pres-
ent when PKCS#7 object 
is referenced from Crypt 
filter decode parameter 
dictionary
VB.NET PDF File Compress Library: Compress reduce PDF size in vb.
enables compressing and decompressing in preview in ASP.NET to reduce or minimize original PDF document size Reduce image resources: Since images are usually or
add an image to a pdf form; add picture to pdf in preview
How to C#: Preview Document Content Using XDoc.excel
Add necessary references: RasterEdge.Imaging.Basic.dll. Get Preview From File. You may get document preview image from an existing Excel file in C#.net.
add photo to pdf; add multiple jpg to pdf
© 
Adobe Systems Incorporated 2008 – All rights reserved
67
PDF 32000-1:2008
dictionary.  When referenced  from  the Crypt filter decode parameter  dictionary of  a  stream object  (see 
Table 14), the 4 bytes of permissions shall be absent from the enveloped data.
The  algorithms that  shall be  used to  encrypt the  enveloped  data in the PKCS#7 object are:  RC4 with  key 
lengths  up to 256-bits, DES, Triple  DES, RC2 with  key  lengths up to 128  bits, 128-bit AES in  Cipher Block 
Chaining (CBC) mode, 192-bit AES in CBC mode, 256-bit AES in CBC mode. The PKCS#7 specification is in 
Internet RFC 2315, PKCS #7: Cryptographic Message Syntax, Version 1.5 (see the Bibliography). 
The  encryption  key  used  by  "Algorithm  1:  Encryption  of  data  using  the  RC4  or  AES  algorithms"  shall  be 
calculated by means of an SHA-1 message digest operation that digests the following data, in order:
a) The 20 bytes of seed
b) The bytes of each item in the Recipients array of PKCS#7 objects in the order in which they appear in the 
array
c) 4 bytes with the value 0xFF if the key being generated is intended for use in document-level encryption 
and the document metadata is being left as plaintext 
The first n/8 bytes of the resulting digest shall be used as the encryption key, where n is the bit length of the 
encryption key. 
7.6.5
Crypt Filters
PDF 1.5 introduces crypt filters, which provide finer granularity control of encryption within a PDF file. The use 
of crypt filters involves the following structures:
The encryption dictionary (see Table 20) contains entries that enumerate the crypt filters in the document 
(CF) and specify which ones are used by default to decrypt all the streams (StmF) and strings (StrF) in the 
document. In addition, the value of the V entry shall be 4 to use crypt filters.
Each crypt filter specified in the CF entry of the encryption dictionary shall be represented by a crypt filter 
dictionary, whose entries are shown in Table 25.
A  stream  filter  type, the Crypt  filter  (see  7.4.10, "Crypt  Filter") can  be  specified  for  any stream  in  the 
document to override the default filter for streams. A conforming reader shall provide a standard Identity
filter which  shall pass  the  data  unchanged (see Table 26) to allow  specific streams, such  as document 
metadata, to be unencrypted in an otherwise encrypted document. The stream’s DecodeParms entry shall 
contain  a Crypt  filter  decode  parameters  dictionary  (see  Table 14)  whose Name  entry  specifies  the 
particular crypt filter to be used (if missing, Identity  is used). Different streams may specify different crypt 
filters. 
Authorization to decrypt a stream shall always be obtained before the stream can be accessed. This typically 
occurs when the document is opened, as specified by a value of DocOpen for the AuthEvent entry in the crypt 
filter dictionary. Conforming readers and security handlers shall treat any attempt to access a stream for which 
authorization  has  failed as an  error. AuthEvent  can also  be EFOpen,  which indicates  the  presence  of  an 
embedded file that is encrypted with a crypt filter that may be different from the crypt filters used by default to 
encrypt strings and streams in the document. 
In the file specification dictionary (see 7.11.3, "File Specification Dictionaries"), related files (RF) shall use the 
same crypt filter as the embedded file (EF).
How to C#: Set Image Thumbnail in C#.NET
VB.NET How-to, VB.NET PDF, VB.NET Word following steps below, you can create an image viewer WinForm Open or create a new WinForms application, add necessary dll
add photo to pdf for; add image to pdf file acrobat
C# PDF remove image library: remove, delete images from PDF in C#.
Generally speaking, using well-designed APIs, C# developers can do following things. Remove Image from PDF Page Using C#. Add necessary references:
add picture to pdf preview; adding a jpg to a pdf
PDF 32000-1:2008
68
© 
Adobe Systems Incorporated 2008 – All rights reserved
A  value  of None  for  the CFM  entry  in  the  crypt  filter  dictionary  allows  the  security  handler  to  do  its  own 
decryption. This allows the handler to tightly control  key management and use any preferred symmetric-key 
cryptographic algorithm. 
Table 25 –  Entries common to all crypt filter dictionaries  
Key
Type
Value
Type
name
(Optional) If present, shall be CryptFilter for a crypt filter dictionary.
CFM
name
(Optional) The method used, if any, by the conforming reader to 
decrypt data. The following values shall be supported:
None
The application shall not  decrypt data but shall  direct the 
input stream to the security handler for decryption. 
V2
The  application  shall  ask  the  security  handler  for  the 
encryption  key  and  shall  implicitly  decrypt  data  with 
"Algorithm  1:  Encryption  of  data  using  the  RC4  or  AES 
algorithms", using the RC4 algorithm. 
AESV2 (PDF 1.6) The application shall ask the security handler for 
the  encryption  key  and  shall  implicitly  decrypt  data  with 
"Algorithm  1:  Encryption  of  data  using  the  RC4  or  AES 
algorithms",  using  the  AES  algorithm  in  Cipher  Block 
Chaining  (CBC)  mode  with  a  16-byte  block  size  and  an 
initialization  vector  that  shall  be  randomly  generated  and 
placed as the first 16 bytes in the stream or string. 
When the value is V2 or AESV2, the application may ask once for this 
encryption key and cache the key for subsequent use for streams that 
use  the  same  crypt  filter.  Therefore,  there  shall  be  a  one-to-one 
relationship  between  a  crypt  filter  name  and  the  corresponding 
encryption key.
Only  the  values  listed  here  shall  be  supported.  Applications  that 
encounter other values shall report that the file is encrypted with an 
unsupported algorithm.
Default value: None. 
AuthEvent
name
(Optional) The event to be used to trigger the authorization that is 
required to access encryption keys used by this filter. If authorization 
fails, the event shall fail. Valid values shall be:
DocOpen: Authorization shall be required when a document is 
opened.
EFOpen: Authorization shall be required when accessing 
embedded files.
Default value: DocOpen.
If this filter is used  as  the value of StrF  or StmF in  the  encryption 
dictionary (see Table 20), the conforming reader shall ignore this key 
and behave as if the value is DocOpen.
Length
integer
(Optional) The bit length of the encryption key. It shall be a multiple of 
8 in the range of 40 to 128. 
Security handlers may define their own use of the Length entry and 
should use it to define the bit length of the encryption key. Standard 
security handler expresses the length in multiples of 8 (16 means 128) 
and public-key security handler expresses it as is (128 means 128).
© 
Adobe Systems Incorporated 2008 – All rights reserved
69
PDF 32000-1:2008
Security handlers may add their own private data to crypt filter dictionaries. Names for private data entries shall 
conform to the PDF name registry (see Annex E). 
Table 27  lists  the  additional  crypt  filter  dictionary  entries  used  by  public-key  security  handlers  (see  7.6.4, 
"Public-Key Security Handlers"). When these entries are present, the value of CFM shall be V2 or AESV2
EXAMPLE
The following shows the use of crypt filters in an encrypted document containing a plaintext document-
level  metadata  stream.  The  metadata  stream  is  left  as  is  by  applying  the Identity   crypt  filter.  The 
remaining streams and strings are decrypted using the default filters.
%PDF–1.5
1 0 obj
% Document catalog
<< /Type /Catalog
/Pages 2 0 R
/Metadata 6 0 R
>>
endobj
2 0 obj
% Page tree
<< /Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
% 1s t page
<< /Type /Page
Table 26 –  Standard crypt filter names  
Name
Description
Identity
Input data shall be passed through without any processing.
Table 27 –  Additional crypt filter dictionary entries for public-key security handlers  
Key
Type
Value
Recipients
array or 
string
(Required) If the crypt filter is referenced from StmF or StrF in the 
encryption dictionary, this entry shall be an array of byte strings, where 
each string shall be a binary-encoded  PKCS#7 object that shall list 
recipients  that  have  been  granted  equal  access  rights  to  the 
document. The enveloped data contained in the PKCS#7 object shall 
include both a 20-byte seed value that shall be used to compute the 
encryption  key  (see  7.6.4.3,  "Public-Key  Encryption  Algorithms") 
followed by 4 bytes of permissions settings (see Table 22) that shall 
apply to the recipient list. There shall be only one object per unique set 
of access permissions. If a recipient appears in more than one list, the 
permissions used shall be those in the first matching list. 
If the crypt filter is referenced from a Crypt filter decode parameter 
dictionary (see Table 14), this entry shall be a string that shall be a 
binary-encoded PKCS#7 object shall contain a list of all recipients who 
are  permitted  to  access  the  corresponding  encrypted  stream.  The 
enveloped data  contained in  the  PKCS#7  object shall be  a  20-byte 
seed value that shall be used to create the encryption key that shall be 
used by the algorithm in "Algorithm 1: Encryption of  data using the 
RC4 or AES algorithms". 
EncryptMetadata
boolean
(Optional; used only by crypt filters that are referenced from StmF in 
an  encryption  dictionary) Indicates whether the document-level 
metadata stream (see 14.3.2, "Metadata Streams") shall be encrypted. 
Conforming readers shall respect this value when determining whether 
metadata shall be encrypted. The value of the EncryptMetadata entry 
is set by the security handler rather than the conforming reader. 
Default value: true . 
PDF 32000-1:2008
70
© 
Adobe Systems Incorporated 2008 – All rights reserved
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
>>
endobj
4 0 obj
% Page contents
<< /Length 35 >>
stream
*** Encrypted Page-marking operators ***
endstream
endobj
5 0 obj
<< /Title ($#*#%*$#^&##) >>
% Info dictionary: encrypted text string 
endobj
6 0 obj
<< /Type /Metadata
/Subtype /XML
/Length 15
/Filter [/Crypt]
% Uses a crypt filter
/DecodeParms
% with these parameters
<< /Type /CryptFilterDecodeParms
/Name /Identity
% Indicates no encryption
>>
>>
stream
XML metadata 
% Unencrypted metadata
endstream
endobj
8 0 obj
% Encryption dictionary
<< /Filter /MySecurityHandlerName
/V 4
% Version 4: allow crypt filters
/CF
% List of crypt filters
<< /MyFilter0
<< /Type /CryptFilter
/CFM V2 >>
% Uses the standard algorithm
>>
/StrF /MyFilter0
% Strings are decrypted using /MyFilter0
/StmF /MyFilter0
% Streams are decrypted using /MyFilter0
... 
% Private data for /MySecurityHandlerName
/MyUnsecureKey (12345678)
/EncryptMetadata false  
>>
endobj
xref
....
trailer
<< /Size 8
/Root 1 0 R
/Info 5 0 R
/Encrypt 8 0 R
>>
startxref
495
%%EOF
7.7
Document Structure
7.7.1
General
A PDF document can be regarded as a hierarchy of objects contained in the body section of a PDF file. At the 
root of the hierarchy is the document’s catalog dictionary (see 7.7.2, "Document Catalog"). 
NOTE
Most of the objects in the hierarchy are dictionaries. Figure 5 illustrates the structure of the object hierarchy. 
© 
Adobe Systems Incorporated 2008 – All rights reserved
71
PDF 32000-1:2008
EXAMPLE
Each page of the document is represented by a page object—a dictionary that includes references to the 
page’s contents and other attributes, such as its thumbnail image (12.3.4, "Thumbnail Images") and any 
annotations (12.5, "Annotations") associated with it. The individual page objects are tied together in a 
structure called the page tree (described in 7.7.3, "Page Tree"), which in turn is specified by an indirect 
reference in the document catalog. Parent, child, and sibling relationships within the hierarchy are defined 
by dictionary entries whose values are indirect references to other dictionaries. 
The  data  structures  described  in  this  sub-clause,  particularly  the Catalog  and Page  dictionaries,  combine 
entries describing document structure with ones dealing with the detailed semantics of documents and pages. 
All entries are listed here, but many of their descriptions are deferred to subsequent sub-clauses. 
7.7.2
Document Catalog
The root of a document’s object hierarchy is the catalog dictionary, located by means of the Root entry in the 
trailer of the PDF file (see 7.5.5, "File Trailer"). The catalog contains references to other objects defining the 
document’s contents, outline, article threads, named destinations, and other attributes. In addition, it contains 
information  about  how  the  document  shall  be  displayed  on  the  screen,  such  as  whether  its  outline  and 
thumbnail page images shall be displayed automatically and whether some location other than the first page 
shall be shown when the document is opened. Table 28 shows the entries in the catalog dictionary.
PDF 32000-1:2008
72
© 
Adobe Systems Incorporated 2008 – All rights reserved
Figure 5 –  Structure of a PDF document
Outline
entry
Page
Thumbnail
image
Annotations
Bead
Bead
Thread
Outline
entry
Content
stream
Thread
Named
destinations
Article
threads
Interactive
form
Outline
hierarchy
Document catalog
Page
Page
tree
•••
•••
•••
•••
Documents you may be interested
Documents you may be interested