pdf viewer c# winform : Add an image to a pdf form Library SDK class asp.net wpf html ajax PDF32000_200810-part2326

© 
Adobe Systems Incorporated 2008 – All rights reserved
93
PDF 32000-1:2008
(PDF 1.3) An exponential interpolation function (type 2) defines a set of coefficients for an exponential 
function; see 7.10.3, "Type 2 (Exponential Interpolation) Functions." 
(PDF 1.3) A stitching function (type 3) is a combination of other functions, partitioned across a domain; see 
7.10.4, "Type 3 (Stitching) Functions." 
(PDF 1.3) A  PostScript  calculator  function (type 4) uses operators from the PostScript language to 
describe an arithmetic expression; see 7.10.5, "Type 4 (PostScript Calculator) Functions." 
All function dictionaries shall share the entries listed in Table 38. 
In addition, each type of function dictionary shall include entries appropriate to the particular function type. The 
number of output values can usually be inferred from other attributes of the function; if not (as is always the 
case for type 0 and type 4 functions), the Range entry is required. The dimensionality of the function implied by 
the Domain and Range entries shall be consistent with that implied by other attributes of the function. 
7.10.2
Type 0 (Sampled) Functions
Type  0 functions  use a sequence of sample values  (contained in a stream) to provide an approximation for 
functions whose domains and ranges are bounded. The samples are organized as an m-dimensional table in 
which each entry has n components. 
NOTE 1
Sampled  functions  are  highly  general  and  offer  reasonably  accurate  representations  of  arbitrary  analytic 
functions  at  low expense.  For example,  a  1-input sinusoidal function  can  be  represented over the  range 
[ 0  180 ] with an average error of only 1 percent, using just ten samples and linear interpolation. Two-input 
functions require significantly more samples but usually not a prohibitive number if the function does not have 
high frequency variations. 
There shall be no dimensionality limit of a sampled function except for possible implementation limits.
NOTE 2
The number of samples required to represent functions with high dimensionality multiplies rapidly unless the 
sampling  resolution  is  very  low.  Also,  the  process  of  multilinear  interpolation  becomes  computationally 
intensive if the number of inputs m is greater than 2. The multidimensional spline interpolation is even more 
computationally intensive. 
In addition to the entries in Table 38, a type 0 function dictionary includes those shown in Table 39. 
Table 38 –  Entries common to all function dictionaries  
Key
Type
Value
FunctionType
integer
(Required) The function type: 
 Sampled function 
 Exponential interpolation function 
 Stitching function 
 PostScript calculator function 
Domain
array
(Required) An array of 2 
×
m numbers, where m shall be the number 
of input values. For each i from 0 to m 
1, Domain
2i
shall be less than 
or  equal  to Domain
2i
+
1
, and  the ith  input  value, x
i
, shall lie in the 
interval Domain
2i
x
i
Domain
2i
+
1
. Input values outside the declared 
domain shall be clipped to the nearest boundary value. 
Range
array
(Required  for  type  0  and  type  4 functions,  optional  otherwise;  see 
below) An array of 2 
×
n numbers, where n shall be  the  number of 
output values. For each j from 0 to n 
1, Range
2j 
shall be less than or 
equal to Range
2j+1
, and the jth output value, y
j
, shall lie in the interval 
Range
2j
y
j
Range
2j+1
. Output  values outside the declared range 
shall be clipped to the nearest boundary value. If this entry is absent, 
no clipping shall be done. 
Add an image to a pdf form - 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
how to add an image to a pdf file; adding images to pdf
Add an image to a pdf form - 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 picture to pdf document; adding images to pdf files
PDF 32000-1:2008
94
© 
Adobe Systems Incorporated 2008 – All rights reserved
The DomainEncode, and Size entries determine how the function’s input variable values are mapped into the 
sample table. For example, if Size is [ 21  31 ], the default Encode array shall be [ 0  20  0  30 ], which maps the 
entire domain into the full set of sample table entries. Other values of Encode may be used. 
To  explain  the  relationship  between Domain, EncodeSizeDecode,  and Range,  we  use  the  following 
notation: 
For a given value of x, Interpolate calculates the y value on the line defined by the two points (x
min 
y
min
) and 
(x
max
y
max
). 
When a sampled function is called, each input value x
i
, for 0 £ i < m, shall be clipped to the domain: 
That value shall be encoded: 
That value shall be clipped to the size of the sample table in that dimension: 
The  encoded  input  values  shall  be  real  numbers,  not  restricted  to  integers.  Interpolation  shall  be  used  to 
determine  output values from the nearest surrounding  values  in the sample  table. Each output  value r
j 
,  for 
0 £ j < n, shall then be decoded: 
Table 39 –  Additional entries specific to a type 0 function dictionary  
Key
Type
Value
Size
array
(Required) An array of  m positive integers that shall specify the 
number of samples in each input dimension of the sample table. 
BitsPerSample
integer
(Required) The number of bits that shall represent each sample. (If the 
function  has  multiple  output  values,  each  one  shall  occupy 
BitsPerSample bits.) Valid values shall be 1, 2, 4, 8, 12, 16, 24, and 
32. 
Order
integer
(Optional) The order of interpolation between samples. Valid values 
shall  be  1  and  3,  specifying  linear  and  cubic  spline  interpolation, 
respectively. Default value: 1. 
Encode
array
(Optional) An array of 2 
×
m numbers specifying the linear mapping of 
input values into  the  domain of  the  function’s sample table.  Default 
value: [ 0  (Size0 
1)  0  (Size
1)  … ]. 
Decode
array
(Optional) An array of 2 
×
n numbers specifying the linear mapping of 
sample  values  into  the  range  appropriate  for  the  function’s  output 
values. Default value: same as the value of Range. 
other stream
attributes
(various)
(Optional) Other attributes of the stream that shall provide the sample 
values, as appropriate (see Table 5). 
y
Interpolate x x
min
x
max
y
min
y
max
,
,
,
,
)
(
=
y
min
x x
min
)
(
y
max
y
min
x
max
x
min
----------------------------
×
+
=
x
i
min max x
i
Domain
2i
,
)
(
Domain
2i 1
+
,
)
(
=
e
i
Interpolate x
i
Domain
2i
Domain
2i 1
+
Encode
2i
Encode
2i 1
+
,
,
,
,
)
(
=
e
i
min max e
i
0
, )
(
Size
i
1
,
)
(
=
C# PDF Image Extract Library: Select, copy, paste PDF images in C#
Scan image to PDF, tiff and various image formats. Get image information, such as its location, zonal information Able to edit, add, delete, move, and output PDF
add picture to pdf file; add jpeg signature to pdf
C# PDF Form Data Read Library: extract form data from PDF in C#.
featured PDF software, it should have functions for processing text, image as well can help you have a quick evaluation of our PDF SDK. Add necessary references
adding a jpeg to a pdf; how to add a picture to a pdf document
© 
Adobe Systems Incorporated 2008 – All rights reserved
95
PDF 32000-1:2008
Finally, each decoded value shall be clipped to the range: 
Sample data shall be represented as a stream of bytes. The bytes shall constitute a continuous bit stream, with 
the high-order bit of each byte first. Each sample value shall be represented as a sequence of BitsPerSample
bits. Successive values shall be adjacent in the bit stream; there shall be no padding at byte boundaries. 
For  a  function  with  multidimensional  input  (more  than  one  input  variable),  the  sample  values  in  the  first 
dimension vary fastest, and the values in the last dimension vary slowest. 
EXAMPLE 1
For a function f (a, b, c), where a, b, and c vary from 0 to 9 in steps of 1, the sample values would appear 
in this order: f (0, 0, 0), f (1, 0, 0), … , f (9, 0, 0), f (0, 1, 0), f (1, 1, 0), … , f (9, 1, 0), f (0, 2, 0), f (1, 2, 0), … , 
f (9, 9, 0), f (0, 0, 1), f (1, 0, 1), and so on. 
For  a  function  with  multidimensional output  (more  than one output  value), the values shall  be stored in the 
same order as Range. 
The stream data shall be long enough to contain the entire sample array, as indicated by SizeRange, and 
BitsPerSample; see 7.3.8.2, "Stream Extent." 
Example 2 illustrates a sampled function with 4-bit samples in an array containing 21 columns and 31 rows 
(651 values). The function takes two arguments, x and y, in the domain [-1.0  1.0 ], and returns one value, z, in 
that same range. The x argument shall be linearly transformed by the encoding to the domain [ 0  20 ] and the y
argument to the domain [ 0  30 ]. Using bilinear interpolation between sample points, the function computes a 
value for z, which (because BitsPerSample is 4) will be in the range [ 0  15 ], and the decoding transforms z to 
a num
ber in the range  [ -1.0  1.0 ]  for  the  result.  The sample  array  shall  be  stored  in a string  of 326  bytes, 
calculated as follows (rounded up): 
326 bytes = 31 rows ¥ 21 samples / row ¥ 4 bits / sample ³ 8 bits / byte
The first byte contains the sample for the point (-1.0, -1.0) in the high-order 4 bits and the sample for the point 
(-0.9, -1.0) in the low-order 4 bits. 
EXAMPLE 2
14  0  obj
<<  /FunctionType  0
/Domain  [-1.0  1.0   -1.0  1.0 ]
/Size  [ 21  31 ]
/Encode  [ 0  20   0  30 ]
/BitsPerSample  4
/Range  [ -1.0  1.0 ]
/Decode  [ -1.0  1.0 ]
/Length  …
/Filter  …
>>
stream
… 651 sample values …
endstream
endobj
NOTE 3
The Decode entry can be used creatively to increase the accuracy of encoded samples corresponding to 
certain values in the range. 
EXAMPLE 3
If the range of the function is [ -1.0  1.0 ] and BitsPerSample is 4, the usual value of Decode would be 
[ -1.0  1.0 ] and the sample values would be integers in the interval [ 0  15 ] (as shown in Figure 8). But if 
these values are used, the midpoint of the range, 0.0, is not represented exactly by any sample value, 
since it falls halfway between 7 and 8. However, if the Decode array is [ -1.0  +1.1429 ] (1.1429 being 
r
j
Interpolate r
j
0 2
BitsPerSample
1
Decode
2j
Decode
2j 1
+
, ,
,
,
)
(
=
y
j
min max r
j
Range
2j
,
)
(
Range
2j 1
+
,
)
(
=
VB.NET PDF Form Data Read library: extract form data from PDF in
featured PDF software, it should have functions for processing text, image as well can help you have a quick evaluation of our PDF SDK. Add necessary references
add image pdf acrobat; how to add a jpeg to a pdf
VB.NET PDF Image Extract Library: Select, copy, paste PDF images
multiple types of image from PDF file in VB.NET, like XObject Image, XObject Form, Inline Image DLLs for PDF Image Extraction in VB.NET. Add necessary references
how to add image to pdf file; adding a png to a pdf
PDF 32000-1:2008
96
© 
Adobe Systems Incorporated 2008 – All rights reserved
approximately equal to 16 ³ 14) and the sample values supplied are in the interval [ 0  14 ], the effective 
range of [ -1.0  1.0 ] is achieved, and the range value 0.0 is represented by the sample value 7. 
The Size  value for  an  input  dimension  can  be 1, in which  case all input  values in that  dimension shall be 
mapped to the single allowed value. If Size is less than 4, cubic spline interpolation is not possible and Order 3 
shall be ignored if specified. 
Figure 8 –  Mapping with the Decode array
7.10.3
Type 2 (Exponential Interpolation) Functions
Type 2 functions (PDF 1.3) include a set of parameters that define an exponential interpolation of one input 
value and n output values: 
In addition to the entries in Table 38, a type 2 function dictionary shall include those listed in Table 40. 
Values of Domain  shall  constrain x  in  such a way  that if N  is not an  integer,  all  values  of x  shall be  non-
negative, and if N is negative, no value of x shall be zero. Typically, Domain is declared as [ 0.0  1.0 ], and N is 
a positive number. To clip the output to a specified range The Range attribute shall be used. 
NOTE
When N is 1, the function performs a linear interpolation between C0 and C1; therefore, the function can also 
be expressed as a sampled function (type 0). 
7.10.4
Type 3 (Stitching) Functions
Type 3 functions (PDF 1.3) define a stitching of the subdomains of several 1-input functions to produce a single 
new 1-input function. Since the resulting stitching function is a 1-input function, the domain is given by a two-
element array, [ Domain
0
Domain
1
]. 
Table 40 –  Additional entries specific to a type 2 function dictionary  
Key
Type
Value
C0
array
(Optional) An array of n numbers that shall define the function result when x 
=
0.0. 
Default value: [ 0.0 ]. 
C1
array
(Optional) An array of n numbers that shall define the function result when x 
=
1.0. 
Default value: [ 1.0 ]. 
N
number
(Required) The interpolation exponent. Each input value x shall return n values, 
given by y
j
=
C0
j
+
xN 
×
(C1
j
C0
j 
), for 0 
j 
<
n
1
+1
-1
0
2 3 4 5
7 8 9 10 0 11 12 2 13 3 14 15
Samples
Range
/Decode [-1 1]
1
+1
-1
0
2 3 4
7 8 9 10 11 12 13 14 15
Samples
Range
/Decode [-1 1.1429]
f x
( )
y
0
y
1
, ,
=
VB.NET PDF Password Library: add, remove, edit PDF file password
passwordSetting.IsAnnot = True ' Allow to fill form. passwordSetting document. passwordSetting.IsAssemble = True ' Add password to PDF file. PDFDocument
how to add an image to a pdf; add image to pdf form
C# PDF Password Library: add, remove, edit PDF file password in C#
passwordSetting.IsAnnot = true; // Allow to fill form. passwordSetting document. passwordSetting.IsAssemble = true; // Add password to PDF file. PDFDocument
add jpeg to pdf; add picture pdf
© 
Adobe Systems Incorporated 2008 – All rights reserved
97
PDF 32000-1:2008
In addition to the entries in Table 38, a type 3 function dictionary shall include those listed in Table 41. 
Domain shall be of size 2 (that is, m = 1), and Domain
0
shall be strictly less than Domain
1
unless k = 1. The 
domain shall be partitioned into subdomains, as indicated by the dictionary’s Bounds entry, which shall be an 
array of - 1 numbers that obey the following relationships (with exceptions as noted below): 
The Bounds  array  shall  describe a  series  of  half-open  intervals,  closed  on  the  left  and  open on  the  right 
(except the last, which is closed on the right as well). The value of the Functions entry shall be an array of k
functions. The first function shall apply to x values in the first subdomain, Domain
0
£ x < Bounds
0
; the second 
function  shall  apply  to x  values  in  the  second  subdomain, Bounds
0
£ x < Bounds
1
;  and  so  on.  The  last 
function shall apply to x values in the last subdomain, which includes the upper bound:
Bounds
k-2
£ x £ Domain
1
. The value of k may be 1, in which case the Bounds array shall be empty and the 
single item in the Functions array shall apply to all x values, Domain
0
£ x £ Domain
1
The Encode array contains 2 ¥ k numbers. A value x from the ith subdomain shall be encoded as follows: 
for 0 £ i < k. In this equation, Bounds
-1
means Domain
0
, and Bounds
k-1
means Domain
1
. If the last bound, 
Bounds
k-2
, is equal to Domain
, then x ¢ shall be defined to be Encode
2i
NOTE
The stitching function is designed to make it easy to combine several functions to be used within one shading 
pattern  over  different  parts  of  the  shading’s  domain.  Shading  patterns  are  discussed  in  8.7.4,  "Shading 
Patterns".  The  same  effect  could  be achieved  by creating  a separate  shading dictionary for  each  of  the 
functions, with adjacent domains. However, since each shading would have similar parameters, and because 
the  overall  effect  is  one  shading,  it  is  more  convenient  to  have  a  single  shading  with  multiple  function 
definitions. Also, type 3 functions provide a general mechanism for inverting the domains of 1-input functions. 
EXAMPLE
Consider a function f with a Domain of [ 0.0  1.0 ] and a stitching function g with a Domain of [ 0.0  1.0 ], a 
Functions array containing f, and an Encode array of [ 1.0 0.0 ]. In effect, g (x) = f (1 - x). 
7.10.5
Type 4 (PostScript Calculator) Functions
7.10.5.1 General
A  type  4  function (PDF 1.3), also  called  a  PostScript  calculator function, shall be  represented as  a  stream 
containing code written in a small subset of the PostScript language. 
Table 41 –  Additional entries specific to a type 3 function dictionary  
Key
Type
Value
Functions
array
(Required) An array of  k 1-input functions that shall make up the stitching 
function.  The  output  dimensionality  of  all  functions  shall  be  the  same,  and 
compatible with the value of Range if Range is present. 
Bounds
array
(Required) An array of k 
1 numbers that, in combination with Domain, shall 
define the intervals to which each function from the Functions array shall apply. 
Bounds elements shall be in order of increasing value, and each value shall be 
within the domain defined by Domain
Encode
array
(Required) An array of 2 
×
k  numbers  that,  taken  in  pairs,  shall  map  each 
subset of the domain defined by Domain and the Bounds array to the domain 
of the corresponding function. 
Domain
0
Bounds
0
Bounds
1
Bounds
2
Domain
1
<
<
<
<
<
x
Interpolate x
Bounds
1
Bounds
i
·
Encode
2i
Encode
2i 1
+
,
,
,
,
)
(
=
C# Create PDF from images Library to convert Jpeg, png images to
List<Bitmap> images = new List<Bitmap>(); images.Add(new Bitmap(Program.RootPath + "\\" 1.gif")); / Build a PDF document with GIF image.
adding image to pdf form; how to add image to pdf
C# PDF Sticky Note Library: add, delete, update PDF note in C#.net
C#.NET PDF SDK - Add Sticky Note to PDF Page in C#.NET. Able to add notes to PDF using C# source code in Visual Studio .NET framework.
add multiple jpg to pdf; add picture to pdf online
PDF 32000-1:2008
98
© 
Adobe Systems Incorporated 2008 – All rights reserved
NOTE
Although any function can be sampled (in a type 0 PDF function) and others can be described with exponential 
functions  (type  2  in  PDF),  type  4  functions  offer  greater  flexibility  and  potentially  greater  accuracy.  For 
example, a  tint transformation  function for  a  hexachrome  (six-component) DeviceN colour space  with  an 
alternate colour space of DeviceCMYK (see 8.6.6.5, "DeviceN Colour Spaces") requires a 6-in, 4-out function. 
If such a function were sampled with m values for each input variable, the number of samples, 4 ¥ m6, could be 
prohibitively large. In practice, such functions can often be written as short, simple PostScript functions. 
Type 4 functions also make it possible to include a wide variety of halftone spot functions without the loss of 
accuracy that comes from sampling, and without adding to the list of predefined spot functions (see 10.5.3, 
"Spot Functions"). All of the predefined spot functions can be written as type 4 functions. 
The language that shall be used in a type 4 function contains expressions involving integers, real numbers, and 
boolean values only. There shall be no composite data structures such as strings or arrays, no procedures, and 
no  variables  or  names.  Table 42  lists  the  operators  that  can  be  used  in
this  type  of  function.  (For  more 
information  on  these  operators,  see  Appendix  B  of  the PostScript Language Reference,  Third  Edition.) 
Although the semantics are those of the corresponding PostScript operators, a full PostScript interpreter is not 
required. 
The operand syntax for type 4 functions shall follow PDF conventions rather than PostScript conventions. The 
entire code stream defining the function shall be enclosed in braces { } (using LEFT CURLY BRACE (7Bh) and 
RIGHT CURLY BRACE (07hD)). Braces also shall delimit expressions that are executed conditionally by the if
and ifelse  operators: 
boolean { expression } if
boolean { expression
1
 { expression
2
 ifelse
This construct is purely syntactic; unlike in PostScript, no “procedure objects” shall be involved. 
A type 4 function dictionary shall include the entries in Table 38, as well as other appropriate stream attributes 
(see  Table 5).  The  following  example  shows  a  type  4  function  equivalent  to  the  predefined  spot  function 
DoubleDot (see 10.5.3, "Spot Functions"). 
EXAMPLE
10  0  obj
<<  /FunctionType  4
/Domain  [ -1.0  1.0   -1.0  1.0 ]
/Range  [ -1.0   1.0 ]
/Length  71
>>
stream
Table 42 –  Operators in type 4 functions  
Operator Type
Operators
Arithmetic operators
abs
add
atan
ceiling
cos
cvi
cvr
div
exp
floor
idiv
ln
log
mod
mul
neg
round
sin
sqrt
sub
truncate
Relational, boolean, 
and bitwise 
operators
and
bitshift
eq
false
ge
gt
le 
lt
ne
not
or
true
xor
Conditional 
operators
if
ifelse
Stack operators
copy
dup
exch
index
pop
roll
© 
Adobe Systems Incorporated 2008 – All rights reserved
99
PDF 32000-1:2008
{  360  mul  sin
 div
exch  360  mul  sin
 div
add
}
endstream
endobj
The Domain and Range entries shall both be required. The input variables shall constitute the initial operand 
stack; the items remaining on the operand stack after execution of the function shall be the output variables. It 
shall be an error for the number of remaining operands to differ from the number of output variables specified 
by Range or for any of them to be objects other than numbers. 
Implementations of type 4 functions shall provide a stack with room for at least 100 entries. No implementation 
shall be required to provide a larger stack, and it shall be an error to overflow the stack. 
Although any integers or real numbers that may appear in the stream fall under the same implementation limits 
(defined in Annex C) as in other contexts, the intermediate  results in type 4 function computations shall not. An 
implementation may use a representation that exceeds those limits. Operations on real numbers, for example, 
might use single-precision or double-precision floating-point numbers. 
7.10.5.2 Errors in Type 4 Functions
The part of a conforming reader that reads a type 4 function (analogous to the PostScript scanner) shall detect 
and report syntax errors. Any errors detected by the conforming reader shall be errors in the PDF file and shall 
be handled like other errors in the file. 
The part of a conforming reader that executes a type 4 function (analogous to the PostScript interpreter) shall 
detect and report errors. This specification does not define a representation for the errors; those details shall be 
provided by the conforming reader that processes the PDF file. The following types of errors can occur (among 
others): 
Stack overflow 
Stack underflow 
A type error (for example, applying not to a real number) 
A range error (for example, applying sqrt to a negative number) 
An undefined result (for example, dividing by 0) 
7.11 File Specifications
7.11.1
General
A PDF file can refer to the contents of another file by using a file specification  (PDF 1.1), which shall take either 
of two forms:
simple file specification shall give just the name of the target file in a standard format, independent of the 
naming conventions of any particular file system. It shall take the form of either a string or a dictionary
full file specification shall include information related to one or more specific file systems. It shall only be 
represented as a dictionary. 
PDF 32000-1:2008
100
© 
Adobe Systems Incorporated 2008 – All rights reserved
A file specification shall refer to a file external to the PDF file or to a file embedded within the referring PDF file, 
allowing  its contents  to be  stored or transmitted  along with  the PDF file.  The file shall be considered to  be 
external to the PDF file in either case. 
7.11.2
File Specification Strings
7.11.2.1 General
The standard format for representing a simple file specification in string form divides the string into component 
substrings separated by the SOLIDUS  character (2Fh) (/).  The  SOLIDUS is a generic component separator 
that shall be mapped to the appropriate platform-specific separator when generating a platform-dependent file 
name. Any of the components may be empty. If a component contains one or more literal SOLIDI, each shall be 
preceded by a REVERSE SOLIDUS (5Ch) (\), which in turn shall be preceded by another REVERSE SOLIDUS 
to indicate that it is part of the string and not an escape character. 
EXAMPLE
( in \ \ /out )
represents the file name 
in / out
The  REVERSE  SOLIDI shall be  removed in processing the  string;  they are needed only to  distinguish  the 
component values from the component separators.  The component substrings shall be stored as bytes and 
shall be passed to the operating system without interpretation or conversion of any sort. 
7.11.2.2 Absolute and Relative File Specifications
 simple  file  specification  that  begins  with  a  SOLIDUS  shall  be  an absolute  file  specification.  The  last 
component  shall  be  the  file  name;  the  preceding  components  shall  specify  its  context.  In  some  file 
specifications, the file name may be  empty; for example, URL (uniform  resource  locator) specifications  can 
specify directories instead of files. A file specification that does not begin with a SOLIDUS shall be a relative  file 
specification giving the location of the file relative to that of the PDF file containing it. 
In the case of a URL-based file system, the rules of Internet RFC 1808, Relative Uniform Resource Locators
(see the Bibliography), shall be used to  compute an absolute URL from a  relative file specification and  the 
specification of the PDF file. Prior to this process, the relative file specification shall be converted to a relative 
URL by using the escape mechanism of RFC 1738, Uniform Resource Locators, to represent any bytes that 
would be either unsafe according to RFC 1738 or not representable in 7-bit U.S. ASCII. In addition, such URL-
based  relative  file  specifications  shall  be  limited  to  paths  as  defined  in  RFC  1808.  The  scheme,  network 
location/login, fragment identifier, query information, and parameter sections shall not be allowed. 
In the case of other file systems, a relative file specification shall be converted to an absolute file specification 
by  removing the  file name component  from the specification  of the  containing  PDF  file  and  appending  the 
relative file specification in its place. 
EXAMPLE 1
The relative file specification
ArtFiles / Figure1 . pdf
appearing in a PDF file whose specification is 
/ HardDisk / PDFDocuments / AnnualReport / Summary . pdf
yields the absolute specification 
/ HardDisk / PDFDocuments / AnnualReport / ArtFiles / Figure1 . pdf
The special component . . (two PERIODs) (2Eh) can be used in a relative file specification to move up a level in 
the file system hierarchy. After an absolute specification has been derived, when the component immediately 
preceding . . is not another . . , the two cancel each other; both are eliminated from the file specification and the 
process is repeated. 
© 
Adobe Systems Incorporated 2008 – All rights reserved
101
PDF 32000-1:2008
EXAMPLE 2
The relative file specification from EXAMPLE 1 in this sub-clause using the .. (two PERIODs) special 
component
. . /. . / ArtFiles / Figure1 . pdf
would yield the absolute specification
/ HardDisk / ArtFiles / Figure1 . pdf
7.11.2.3 Conversion to Platform-Dependent File Names
The conversion of a file specification to a platform-dependent file name depends on the specific file naming 
conventions of each platform: 
For DOS, the initial component shall be either a physical or logical drive identifier or a network resource 
name as  returned by  the Microsoft  Windows  function  WNetGetConnection, and shall be  followed by a 
COLON (3Ah) ( : ). A network resource name shall be constructed from the first two components; the first 
component  shall  be  the  server  name  and  the  second  shall  be  the  share  name  (volume  name).  All 
components shall be separated by REVERSE SOLIDI (backslashes) (5Ch). It shall be possible to specify 
an  absolute  DOS  path  without  a  drive  by  making  the  first  component  empty.  (Empty  components  are 
ignored by other platforms.) 
For Mac OS, all components shall be separated by COLONs. 
For UNIX, all components shall be separated by SOLIDI (2Fh) (slashes). An initial SOLIDUS, if present, 
shall be preserved. 
Strings used to specify a file name shall be interpreted in the standard encoding for the platform on which the 
document is being viewed. Table 43 shows examples of file specifications on the most common platforms. 
NOTE 1
When creating documents that are to be viewed on multiple platforms, care should be taken to ensure file 
name compatibility. Only a subset of the U.S. ASCII character set should be used in file specifications: the 
uppercase alphabetic characters (A–Z), the numeric characters (0–9), the PERIOD (2Eh) and the LOW LINE 
(underscore)  (5Fh). The PERIOD has special  meaning in  DOS and Windows file names,  and as the first 
character in a Mac OS pathname. In file specifications, the PERIOD should be used only to separate a base 
file name from a file extension. 
NOTE 2
Some file systems are case-insensitive, and names within a directory are unique so names should remain 
distinguishable  if  lowercase  letters  are  changed  to  uppercase  or  vice  versa.  On  DOS  and  Windows  3.1 
systems  and  on  some  CD-ROM  file  systems,  file  names  are  limited  to  8  characters  plus  a  3-character 
extension. File  system software typically converts long names to short names by retaining the first 6 or 7 
characters of the file name and the first 3 characters after the last PERIOD, if any. Since characters beyond the 
sixth or seventh are often converted  to other values unrelated  to the original  value, file names should be 
distinguishable from the first 6 characters. 
Table 43 –  Examples of file specifications  
System
System-dependent paths
Written form
DOS
\ pdfdocs \ spec . pdf ( no drive )
r : \ pdfdocs \ spec . pdf 
pclib / eng : \ pdfdocs \ spec . pdf
( / / pdfdocs / spec . pdf ) 
( / r / pdfdocs / spec . pdf )
( / pclib / eng / pdfdocs /
spec . pdf )
Mac OS
Mac  HD : PDFDocs : spec . pdf
( /Mac  HD/ PDFDocs/
spec . pdf )
UNIX
/ user / fred / pdfdocs / spec . pdf
pdfdocs / spec . pdf ( relative )
( / user / fred / pdfdocs /
spec . pdf )
( pdfdocs / spec . pdf )
PDF 32000-1:2008
102
© 
Adobe Systems Incorporated 2008 – All rights reserved
7.11.2.4 Multiple-Byte Strings in File Specifications
In  PDF  1.2  or  higher,  a  file  specification  may  contain  multiple-byte  character  codes,  represented  in 
hexadecimal form between angle  brackets (< and >) (using LESS-THAN SIGN (3Ch) and GREATER-THAN 
SIGN (3Eh)). Since the SOLIDUS (2Fh) (slash character), denoted as < 2F >, is used as a component delimiter 
and the REVERSE SOLIDUS (5Ch) (backslash character), denoted as < 5C >, is used as an escape character, 
any occurrence of either of these bytes in a multiple-byte character shall be preceded by the ASCII code for the 
SOLIDUS (2Fh). 
EXAMPLE
A  file  name  containing  the  2-byte  character  code  < 89  5C >  is  written  as  < 89  5C  5C >.  When  the 
application encounters this sequence of bytes in a file name, it replaces the sequence with the original 
2-byte code. 
7.11.3
File Specification Dictionaries
The dictionary form of file specification provides more flexibility than the string form, allowing different files to be 
specified for different file systems or platforms, or for file systems other than the standard ones (DOS/Windows, 
Mac OS, and UNIX). Table 44 shows the entries in a file specification dictionary. Regardless of the platform, 
conforming readers should use the F and UF (beginning with PDF 1.7) entries to specify files. The UF entry is 
optional, but should be included because it enables cross-platform and cross-language compatibility. 
Table 44 –  Entries in a file specification dictionary  
Key
Type
Value
Type
name
(Required if an EF or RF entry is present; recommended always) The type of 
PDF  object  that  this  dictionary  describes;  shall  be Filespec  for  a  file 
specification dictionary.
FS
name
(Optional) The name of the file system that shall be used to interpret this file 
specification. If this entry is present, all other entries in the dictionary shall be 
interpreted by the designated file system. PDF shall define only one standard 
file system name, URL (see 7.11.5, "URL Specifications"); an application can 
register other names (see Annex E). This entry shall be independent of the F, 
UFDOSMac, and Unix entries. 
F
string
(Required if the DOS, Mac, and Unix entries are all absent; amended with the 
UF entry for PDF 1.7) file specification string of the form described in 7.11.2, 
"File Specification Strings," or (if the file system is URL) a uniform resource 
locator, as described in 7.11.5, "URL Specifications." 
The UF entry should be used in addition to the F entry. The UF entry provides 
cross-platform  and  cross-language  compatibility  and  the F  entry  provides 
backwards compatibility. 
UF
text string
(Optional, but recommended if the F entry exists in the dictionary; PDF 1.7) A 
Unicode  text string that  provides  file specification  of the  form described  in 
7.11.2,  "File  Specification  Strings."  This  is  a  text  string  encoded  using 
PDFDocEncoding or UTF-16BE with a leading byte-order marker (as defined 
in 7.9.2.2, "Text String Type"). The F entry should be included along with this 
entry for backwards compatibility reasons.
DOS
byte string
(Optional) A file specification string (see 7.11.2, "File Specification Strings") 
representing a DOS file name. 
This entry is obsolescent and should not be used by conforming writers.
Mac
byte string
(Optional) A file specification string (see 7.11.2, "File Specification Strings") 
representing a Mac OS file name. 
This entry is obsolescent and should not be used by conforming writers.
Unix
byte string
(Optional) A file specification string (see 7.11.2, "File Specification Strings") 
representing a UNIX file name. 
This entry is obsolescent and should not be used by conforming writers.
Documents you may be interested
Documents you may be interested