pdf viewer control in asp net c# : How to add an image to a pdf in reader Library software class asp.net winforms wpf ajax PDF32000_20083-part2347

© 
Adobe Systems Incorporated 2008 – All rights reserved
23
PDF 32000-1:2008
Decompression filters enable decoding of data that has been compressed. The compressed data shall be 
in binary format, even if the original data is ASCII text. 
NOTE 1
ASCII filters serve no useful purpose in a PDF file that is encrypted; see 7.6, “Encryption”.
NOTE 2
Compression is particularly valuable for large sampled images, since it reduces  storage  requirements and 
transmission time. Some types of compression are lossy, meaning that some data is lost during the encoding, 
resulting in a loss of quality when the data is decompressed. Compression in which no loss of data occurs is 
called lossless. Though somehow obvious it might be worth pointing out that lossy compression can only be 
applied to sampled image  data (and only certain types of lossy compression  for certain  types of  images). 
Lossless compression on the other hand can be used for any kind of stream.
The  standard  filters  are  summarized  in  Table 6,  which  also  indicates  whether  they  accept  any  optional 
parameters.  The following  sub-clauses  describe  these  filters and  their parameters (if  any) in greater detail, 
including specifications of encoding algorithms for some filters. 
EXAMPLE 3
The  following  example  shows  a  stream,  containing  the  marking  instructions  for  a  page,  that  was 
compressed using the LZW compression method and then encoded in ASCII base-85 representation. 
1  0  obj
<<  /Length  534
/Filter  [ /ASCII85Decode  /LZWDecode ]
>>
Table 6 –  Standard filters  
FILTER name
Parameters
Description
ASCIIHexDecode
no
Decodes  data  encoded  in  an  ASCII  hexadecimal 
representation, reproducing the original binary data. 
ASCII85Decode
no
Decodes data encoded  in an ASCII  base-85  representation, 
reproducing the original binary data. 
LZWDecode
yes
Decompresses  data  encoded  using  the  LZW  (Lempel-Ziv-
Welch) adaptive compression method, reproducing the original 
text or binary data. 
FlateDecode
yes
(PDF 1.2) Decompresses data encoded using the zlib/deflate 
compression  method,  reproducing  the original  text  or  binary 
data. 
RunLengthDecode
no
Decompresses data encoded using a byte-oriented run-length 
encoding algorithm, reproducing the original text or binary data 
(typically monochrome image data, or any data that contains 
frequent long runs of a single byte value). 
CCITTFaxDecode
yes
Decompresses  data  encoded  using  the  CCITT  facsimile 
standard, reproducing the original data (typically monochrome 
image data at 1 bit per pixel). 
JBIG2Decode
yes
(PDF 1.4) Decompresses data encoded using the JBIG2 
standard, reproducing the original monochrome (1 bit per pixel) 
image data (or an approximation of that data). 
DCTDecode
yes
Decompresses  data  encoded  using  a  DCT  (discrete  cosine 
transform)  technique  based  on  the  JPEG  standard, 
reproducing image sample data that approximates the original 
data. 
JPXDecode
no
(PDF  1.5) Decompresses data encoded using the wavelet-
based  JPEG2000  standard,  reproducing  the  original  image 
data.
Crypt
yes
(PDF  1.5) Decrypts data encrypted by a security handler, 
reproducing the data as it was before encryption.
How to add an image to a pdf in reader - 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
adding an image to a pdf in preview; add jpg to pdf file
How to add an image to a pdf in reader - 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
how to add a picture to a pdf document; add picture to pdf file
PDF 32000-1:2008
24
© 
Adobe Systems Incorporated 2008 – All rights reserved
stream
J..)6T`?p&<!J9%_[umg"B7/Z7KNXbN'S+,*Q/&"OLT'F
LIDK#!n`$"<Atdi`\Vn%b%)&'cA*VnK\CJY(sF>c!Jnl@
RM]WM;jjH6Gnc75idkL5]+cPZKEBPWdR>FF(kj1_R%W_d
&/jS!;iuad7h?[L-F$+]]0A3Ck*$I0KZ?;<)CJtqi65Xb
Vc3\n5ua:Q/=0$W<#N3U;H,MQKqfg1?:lUpR;6oN[C2E4
ZNr8Udn.'p+?#X+1>0Kuk$bCDF/(3fL5]Oq)^kJZ!C2H1
'TO]Rl?Q:&'<5&iP!$Rq;BXRecDN[IJB`,)o8XJOSJ9sD
S]hQ;Rj@!ND)bD_q&C\g:inYC%)&u#:u,M6Bm%IY!Kb1+
":aAa'S`ViJglLb8<W9k6Yl\\0McJQkDeLWdPN?9A'jX*
al>iG1p&i;eVoK&juJHs9%;Xomop"5KatWRT"JQ#qYuL,
JD?M$0QP)lKn06l1apKDC@\qJ4B!!(5m+j.7F790m(Vj8
8l8Q:_CZ(Gm1%X\N1&u!FKHMB~>
endstream
endobj
EXAMPLE 4
The  following  shows  the  same  stream  without  any  filters  applied  to  it.  (The  stream’s  contents  are 
explained in 7.8.2, "Content Streams," and the operators used there are further described in clause 9, 
"Text".)
 0  obj
<<  /Length  568  >>
stream
 J
BT
/F1  12  Tf
 Tc
 Tw
72.5  712  TD
[ ( Unfiltered streams can be read easily )  65  ( , ) ]  TJ
 -14  TD
[ ( b )  20  ( ut generally tak )  10  ( e more space than \311 ) ]  TJ
T*  ( compressed streams . )  Tj
 -28  TD
[ ( Se )  25  ( v )  15  ( eral encoding methods are a )  20  ( v)  25  ( ailable in PDF )  80  ( . ) ]  TJ
 -14  TD
( Some are used for compression and others simply )  Tj
T*  [ ( to represent binary data in an )  55  ( ASCII format . ) ]  TJ
T*  ( Some of the compression filters are \
suitable )  Tj
T*  ( for both data and images , while others are \
suitable only )  Tj
T*  ( for continuous-tone images . )  Tj
ET
endstream
endobj
7.4.2
ASCIIHexDecode Filter
The ASCIIHexDecode  filter  decodes  data  that  has  been  encoded  in  ASCII  hexadecimal  form.  ASCII 
hexadecimal encoding and ASCII base-85 encoding (7.4.3, "ASCII85Decode Filter") convert binary data, such 
as image data or previously compressed data, to 7-bit ASCII characters. 
NOTE
ASCII base-85 encoding is preferred to ASCII hexadecimal encoding. Base-85 encoding is preferred because 
it is more compact: it expands the data by a factor of 4 : 5, compared with 1 : 2 for ASCII hexadecimal encoding.
The ASCIIHexDecode filter shall produce one byte of binary data for each pair of ASCII hexadecimal digits 
(0–9  and  A–F  or  a–f).  All  white-space  characters  (see  7.2,  "Lexical  Conventions")  shall  be  ignored.  A 
GREATER-THAN SIGN (3Eh) indicates EOD. Any other characters shall cause an error. If the filter encounters 
the EOD marker after reading an odd number of hexadecimal digits, it shall behave as if a 0 (zero) followed the 
last digit. 
C# Imaging - Scan Barcode Image in C#.NET
RasterEdge Barcode Reader DLL add-in enables developers to add barcode image recognition & types, such as Code 128, EAN-13, QR Code, PDF-417, etc.
acrobat add image to pdf; adding image to pdf file
C# PDF Image Extract Library: Select, copy, paste PDF images in C#
Get image information, such as its location, zonal information, metadata, and so on. Able to edit, add, delete, move, and output PDF document image.
add picture pdf; how to add picture to pdf
© 
Adobe Systems Incorporated 2008 – All rights reserved
25
PDF 32000-1:2008
7.4.3
ASCII85Decode Filter
The ASCII85Decode filter  decodes  data that has been encoded  in  ASCII  base-85 encoding  and  produces 
binary data. The following paragraphs describe the process for encoding binary data in  ASCII base-85; the 
ASCII85Decode filter reverses this process. 
The ASCII base-85 encoding shall use the ASCII characters ! through u ((21h) - (75h)) and the character z 
(7Ah), with the 2-character sequence ~> (7Eh)(3Eh) as its EOD marker. The ASCII85Decode filter shall ignore 
all  white-space  characters  (see  7.2,  "Lexical  Conventions").  Any  other  characters,  and  any  character 
sequences that represent impossible combinations in the ASCII base-85 encoding shall cause an error. 
Specifically, ASCII base-85 encoding shall produce 5 ASCII characters for every 4 bytes of binary data. Each 
group of 4 binary input bytes, (b
1
b
2
b
3
b
4
), shall be converted to a group of 5 output bytes, (c
1
c
2
c
3
c
4
c
5
), 
using the relation 
In other words, 4 bytes of binary data shall be interpreted as a base-256 number and then shall be converted to 
a  base-85  number.  The five  bytes  of  the  base-85  number  shall  then  be  converted  to  ASCII  characters  by 
adding 33 (the ASCII code for the character ! ) to each. The resulting encoded data shall contain only printable 
ASCII characters with codes in the range 33 (!) to 117 (u). As a special case, if all five bytes are 0, they shall be 
represented by the character with code 122 (z) instead of by five exclamation points ( ! ! ! ! ! ). 
If the length of the data to be encoded is not a multiple of 4 bytes, the last, partial group of 4 shall be used to 
produce a last, partial group of 5 output characters. Given n (1, 2, or 3) bytes of binary data, the encoder shall 
first append 4 - n zero bytes to make a complete group of 4. It shall encode this group in the usual way, but 
shall not apply the special z case. Finally, it shall write only the first n + 1 characters of the resulting group of 5. 
These characters shall be immediately followed by the ~> EOD marker. 
The following conditions shall never occur in a correctly encoded byte sequence: 
The value represented by a group of 5 characters is greater than 232 - 1. 
A z character occurs in the middle of a group. 
A final partial group contains only one character. 
7.4.4
LZWDecode and FlateDecode Filters
7.4.4.1 General
The LZWDecode and (PDF 1.2FlateDecode filters have much in common and are discussed together in this 
sub-clause.  They  decode  data  that  has  been encoded  using  the  LZW  or  Flate  data  compression  method, 
respectively: 
LZW (Lempel-Ziv-Welch) is a variable-length, adaptive compression method that has been adopted as one 
of the standard compression methods in the Tag Image File Format (TIFF) standard. For details on LZW 
encoding see 7.4.4.2, "Details of LZW Encoding." 
The  Flate  method  is  based on  the public-domain  zlib/deflate compression  method, which  is  a  variable-
length  Lempel-Ziv  adaptive  compression  method  cascaded  with  adaptive  Huffman  coding.  It  is  fully 
defined  in  Internet  RFCs  1950,  ZLIB  Compressed  Data  Format  Specification,  and  1951,  DEFLATE 
Compressed Data Format Specification (see the Bibliography). 
b
1
256
3
( ×
)
b
2
256
2
( ×
)
b
3
256
1
( ×
)
b
4
+
+
+
=
c
1
85
4
( ×
)
c
2
85
3
( ×
)
c
3
85
2
( ×
)
c
4
85
1
( ×
)
c
+
+
+
+
VB.NET PDF Image Extract Library: Select, copy, paste PDF images
DLLs for PDF Image Extraction in VB.NET. In order to run the sample code, the following steps would be necessary. Add necessary references:
add jpg to pdf preview; add jpg to pdf form
VB.NET PDF Password Library: add, remove, edit PDF file password
VB: Add Password to PDF with Permission Settings Applied. This VB.NET example shows how to add PDF file password with access permission setting.
how to add a photo to a pdf document; add picture to pdf
PDF 32000-1:2008
26
© 
Adobe Systems Incorporated 2008 – All rights reserved
Both of these methods compress either binary data or ASCII text but (like all compression methods) always 
produce binary data, even if the original data was text. 
The LZW and Flate compression methods can discover and exploit many patterns in the input data, whether 
the  data  is  text  or  images.  As  described  later,  both  filters  support  optional  transformation  by  a predictor 
function, which improves the compression of sampled image data. 
NOTE 1
Because of its cascaded adaptive Huffman coding, Flate-encoded output is usually much more compact than 
LZW-encoded output for the same input. Flate and LZW decoding speeds are comparable, but Flate encoding 
is considerably slower than LZW encoding. 
NOTE 2
Usually, both  Flate and  LZW encodings compress their input  substantially. However, in  the worst case (in 
which no pair of adjacent bytes appears twice), Flate encoding expands its input by no more than 11 bytes or a 
factor of 1.003 (whichever is larger), plus the effects of algorithm tags added by PNG predictors. For LZW 
encoding, the best case (all zeros) provides a compression approaching 1365 : 1 for long files, but the worst-
case expansion is at least a factor of 1.125, which can increase to nearly 1.5 in some implementations, plus 
the effects of PNG tags as with Flate encoding. 
7.4.4.2 Details of LZW Encoding
Data encoded using the LZW compression method shall consist of a sequence of codes that are 9 to 12 bits 
long. Each code shall represent a single character of input data (0–255), a clear-table marker (256), an EOD 
marker  (257),  or  a  table  entry  representing  a  multiple-character  sequence  that  has  been  encountered 
previously in the input (258 or greater). 
Initially, the code length shall be 9 bits and the LZW table shall contain only entries for the 258 fixed codes. As 
encoding  proceeds, entries  shall be  appended  to  the  table,  associating  new codes  with  longer  and  longer 
sequences of input characters. The encoder and the decoder shall maintain identical copies of this table. 
Whenever both the encoder and the decoder independently (but synchronously) realize that the current code 
length is no longer sufficient to represent the number of entries in the table, they shall increase the number of 
bits per code by 1. The first output code that is 10 bits long shall be the one following the creation of table entry 
511, and similarly for 11 (1023) and 12 (2047) bits. Codes shall never be longer than 12 bits; therefore, entry 
4095 is the last entry of the LZW table. 
The encoder shall execute the following sequence of steps to generate each output code: 
a) Accumulate a sequence of one or more input characters matching a sequence already present in the table. 
For maximum compression, the encoder looks for the longest such sequence. 
b) Emit the code corresponding to that sequence. 
c) Create a new table entry for the first unused code. Its value is the sequence found in step (a) followed by 
the next input character. 
EXAMPLE 1
Suppose the input consists of the following sequence of ASCII character codes: 
45  45  45  45  45  65  45  45  45  66
Starting with an empty table, the encoder proceeds as shown in Table 7. 
Table 7 –  Typical LZW encoding sequence  
Input
sequence
Output
code
Code added
to table
Sequence 
represented
by new code
256 (clear-table)
45
45
258
45  45
45  45
258
259
45  45  45
C# PDF Password Library: add, remove, edit PDF file password in C#
C# Sample Code: Add Password to PDF with Permission Settings Applied in C#.NET. This example shows how to add PDF file password with access permission setting.
add jpg to pdf online; add a picture to a pdf
XImage.Barcode Scanner for .NET, Read, Scan and Recognize barcode
VB.NET Write: Add Image to PDF; VB.NET Protect: Add Password to VB.NET Annotate: PDF Markup & Drawing. XDoc.Word for C#; XDoc.Excel for C#; XDoc.PowerPoint for
add an image to a pdf acrobat; how to add image to pdf document
© 
Adobe Systems Incorporated 2008 – All rights reserved
27
PDF 32000-1:2008
Codes shall be packed into a continuous bit stream, high-order bit first. This stream shall then be divided into 
bytes, high-order bit first. Thus, codes may straddle byte boundaries arbitrarily. After the EOD marker (code 
value 257), any leftover bits in the final byte shall be set to 0. 
In the example above, all the output codes are 9 bits long; they would pack into bytes as follows (represented in 
hexadecimal): 
EXAMPLE 2
80  0B  60  50  22  0C  0C  85  01
To adapt to changing input sequences, the encoder may at any point issue a clear-table code, which causes 
both the encoder and the decoder to restart with initial tables and a 9-bit code length. The encoder shall begin 
by issuing a clear-table code. It shall issue a clear-table code when the table becomes full; it may do so sooner. 
7.4.4.3 LZWDecode and FlateDecode Parameters
The LZWDecode and FlateDecode filters shall accept optional parameters to control the decoding process. 
NOTE
Most  of these parameters  are related to  techniques that  reduce  the  size of  compressed sampled  images 
(rectangular arrays of colour values, described in 8.9, "Images"). For example, image data typically changes 
very little from sample to sample. Therefore, subtracting the values of adjacent samples (a process called 
differencing), and encoding the differences rather than  the raw sample values, can reduce the size of the 
output data. Furthermore, when the image data contains several colour components (red-green-blue or cyan-
magenta-yellow-black) per sample, taking the difference between the values of corresponding components in 
adjacent samples, rather than between different colour components in the same sample, often reduces the 
output data size. 
Table 8  shows  the  parameters  that  may  optionally  be  specified  for LZWDecode  and FlateDecode  filters. 
Except where otherwise noted, all values supplied to the decoding filter for any optional parameters shall match 
those used when the data was encoded. 
45  45
258
260
45  45  65
65
65
261
65  45
45  45  45
259
262
45  45  45  66
66
66
257 (EOD)
Table 8 –  Optional parameters for LZWDecode and FlateDecode filters  
Key
Type
Value
Predictor
integer
A code that selects the predictor algorithm, if any. If the value of this 
entry is 1, the filter shall assume that the normal algorithm was used to 
encode the data, without prediction. If the value is greater than 1, the 
filter shall assume that the data was differenced before being encoded, 
and Predictor selects  the predictor algorithm. For more information 
regarding Predictor  values  greater  than 1,  see  7.4.4.4,  "LZW  and 
Flate Predictor Functions." Default value: 1. 
Colors
integer
(May  be  used  only  if Predictor  is  greater  than  1) The number of 
interleaved colour components  per  sample. Valid  values  are  1  to 4 
(PDF 1.0) and 1 or greater (PDF 1.3). Default value: 1. 
Table 7 –  Typical LZW encoding sequence  (continued)
Input
sequence
Output
code
Code added
to table
Sequence 
represented
by new code
C# PDF Sticky Note Library: add, delete, update PDF note in C#.net
Evaluation library and components enable users to annotate PDF without adobe PDF reader control installed. Able to add notes to PDF using C# source code in
pdf insert image; add photo to pdf form
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; add image pdf acrobat
PDF 32000-1:2008
28
© 
Adobe Systems Incorporated 2008 – All rights reserved
7.4.4.4 LZW and Flate Predictor Functions
LZW  and  Flate  encoding  compress  more  compactly  if  their  input  data  is  highly  predictable.  One  way  of 
increasing  the  predictability  of  many  continuous-tone  sampled  images  is  to  replace  each  sample  with  the 
difference between that sample and a predictor function applied to earlier neighboring samples. If the predictor 
function works well, the postprediction data clusters toward 0. 
PDF supports two groups of predictor functions. The first, the TIFF group, consists of the single function that is 
Predictor 2 in the TIFF 6.0 specification. 
NOTE 1
(In  the TIFF 6.0  specification,  Predictor 2  applies only  to  LZW  compression,  but here  it  applies  to Flate 
compression as well.) TIFF Predictor 2 predicts that each colour component of a sample is the same as the 
corresponding colour component of the sample immediately to its left.
The second supported group of predictor functions, the PNG group, consists of the filters of the World Wide 
Web  Consortium’s  Portable  Network  Graphics  recommendation,  documented  in  Internet  RFC  2083,  PNG 
(Portable Network Graphics) Specification (see the Bibliography).
The term predictors is used here instead of filters to avoid confusion.
There  are  five  basic  PNG  predictor  algorithms  (and  a  sixth  that  chooses  the  optimum  predictor  function 
separately for each row).
The predictor algorithm to be used, if any, shall be indicated by the Predictor filter parameter (see Table 8), 
whose value shall be one of those listed in Table 10. 
BitsPerComponent
integer
(May be used only if Predictor is greater than 1) The number of bits 
used to represent each colour component in a sample. Valid values 
are 1, 2, 4, 8, and (PDF 1.5) 16. Default value: 8.
Columns
integer
(May  be  used  only  if Predictor  is  greater  than  1) The number of 
samples in each row. Default value: 1. 
EarlyChange
integer
(LZWDecode only) An indication of when to increase the code length. 
If the value of this entry is 0, code length increases shall be postponed 
as long as possible. If the value is 1, code length increases shall occur 
one code early. This parameter is included because LZW sample code 
distributed  by  some  vendors  increases  the  code  length  one  code 
earlier than necessary. Default value: 1. 
Table 9 –  PNG predictor algorithms  
PNG 
Predictor 
Algorithms
Description
None
No prediction
Sub
Predicts the same as the sample to the left 
Up
Predicts the same as the sample above
Average
Predicts the average of the sample
to the left and the 
sample above
Paeth
A nonlinear function of the sample above, the sample 
to the left, and the sample to the upper left 
Table 8 –  Optional parameters for LZWDecode and FlateDecode filters  (continued)
Key
Type
Value
© 
Adobe Systems Incorporated 2008 – All rights reserved
29
PDF 32000-1:2008
For LZWDecode and FlateDecode, a Predictor value greater than or equal to 10 shall indicate that a PNG 
predictor is in use; the specific predictor function used shall be explicitly encoded in the incoming data. The 
value of Predictor supplied by the decoding filter need not match the value used when the data was encoded if 
they are both greater than or equal to 10. 
The two groups of predictor functions have some commonalities. Both make the following assumptions: 
Data shall be presented in order, from the top row to the bottom row and, within a row, from left to right. 
A row shall occupy a whole number of bytes, rounded up if necessary. 
Samples and their components shall be packed into bytes from high-order to low-order bits. 
All  colour  components  of  samples  outside  the  image  (which  are  necessary  for  predictions  near  the 
boundaries) shall be 0. 
The predictor function groups also differ in significant ways: 
The postprediction data for each PNG-predicted row shall begin with an explicit algorithm tag; therefore, 
different rows can be predicted with different algorithms to improve compression. TIFF Predictor 2 has no 
such identifier; the same algorithm applies to all rows. 
The TIFF function group shall predict each colour component from the prior instance of that component, 
taking into account the number of bits per component and components per sample. In contrast, the PNG 
function  group shall  predict each  byte  of data  as  a  function  of  the  corresponding  byte  of  one  or  more 
previous image samples, regardless of whether there are multiple colour components in a byte or whether 
a single colour component spans multiple bytes. 
NOTE 2
This can yield significantly better speed at the cost of somewhat worse compression.
7.4.5
RunLengthDecode Filter
The RunLengthDecode filter decodes data that has been encoded in a simple byte-oriented format based on 
run length. The  encoded  data shall  be  a sequence  of runs ,  where  each  run  shall  consist  of  a length  byte 
followed by 1 to 128 bytes of data. If the length  byte is in the range 0 to 127, the following length  + 1 (1 to 128) 
bytes shall be copied literally during decompression. If length  is in the range 129 to 255, the following single 
byte shall be copied 257 - length  (2 to 128) times during decompression. A length  value of 128 shall denote 
EOD. 
Table 10 –  Predictor values  
Value
Meaning
1
No prediction (the default value)
2
TIFF Predictor 2
10
PNG prediction (on encoding, PNG None on all rows)
11
PNG prediction (on encoding, PNG Sub on all rows)
12
PNG prediction (on encoding, PNG Up on all rows)
13
PNG prediction (on encoding, PNG Average on all rows)
14
PNG prediction (on encoding, PNG Paeth on all rows)
15
PNG prediction (on encoding, PNG optimum)
PDF 32000-1:2008
30
© 
Adobe Systems Incorporated 2008 – All rights reserved
NOTE
The compression achieved by run-length encoding depends on the input data. In the best case (all zeros), a 
compression of approximately 64 : 1 is achieved for long files. The worst case (the hexadecimal sequence 00 
alternating with FF) results in an expansion of 127 : 128. 
7.4.6
CCITTFaxDecode Filter
The CCITTFaxDecode filter decodes image  data that has been encoded using  either Group  3  or Group  4 
CCITT facsimile (fax) encoding. 
NOTE 1
CCITT encoding is designed to achieve efficient compression of monochrome (1 bit per pixel) image data at 
relatively low resolutions, and so is useful only for bitmap image data, not for colour images, grayscale images, 
or general data. 
NOTE 2
The CCITT encoding standard is defined by the International Telecommunications Union (ITU), formerly known 
as the Comité Consultatif International Téléphonique et Télégraphique (International Coordinating Committee 
for Telephony and Telegraphy). The encoding algorithm is not described in detail in this standard but can be 
found in ITU Recommendations T.4 and T.6 (see the Bibliography). For historical reasons, we refer to these 
documents as the CCITT standard. 
CCITT encoding is bit-oriented, not byte-oriented. Therefore, in principle, encoded or decoded data need not 
end at a byte boundary. This problem shall be dealt with in the following ways: 
Unencoded data shall be treated as complete scan lines, with unused bits inserted at the end of each scan 
line to fill out the last byte. This approach is compatible with the PDF convention for sampled image data. 
Encoded data shall ordinarily be treated as a continuous, unbroken bit stream. The EncodedByteAlign
parameter (described in Table 11) may  be used to  cause  each  encoded scan  line  to be filled to a byte 
boundary. 
NOTE 3
Although  this  is  not  prescribed  by  the  CCITT  standard  and  fax  machines  never  do  this,  some  software 
packages find it convenient to encode data this way.
When a filter reaches EOD, it shall always skip to the next byte boundary following the encoded data. 
The  filter  shall  not  perform  any  error  correction  or  resynchronization,  except  as  noted  for  the 
DamagedRowsBeforeError parameter in Table 11. 
Table 11 lists the optional parameters that may be used to control the decoding. Except where noted otherwise, 
all values supplied to the decoding filter by any of these parameters shall match those used when the data was 
encoded. 
Table 11 –  Optional parameters for the CCITTFaxDecode filter  
Key
Type
Value
K
integer
A code identifying the encoding scheme used: 
0
Pure two-dimensional encoding (Group 4) 
=
0
Pure one-dimensional encoding (Group 3, 1-D) 
>
0
Mixed  one- and  two-dimensional  encoding  (Group 3, 
2-D), in which a line encoded one-dimensionally may 
be  followed  by  at  most K 
 lines  encoded  two-
dimensionally 
The filter shall distinguish among negative, zero, and positive 
values of K to determine how to interpret the encoded data; 
however, it shall not distinguish between different positive K
values. Default value: 0. 
© 
Adobe Systems Incorporated 2008 – All rights reserved
31
PDF 32000-1:2008
NOTE 4
The compression achieved using CCITT encoding depends on the data, as well as on the value of various 
optional  parameters. For Group 3 one-dimensional  encoding, in the best case (all zeros), each  scan  line 
compresses to 4 bytes, and the compression factor depends on the length of a scan line. If the scan line is 300 
bytes long, a compression ratio of approximately 75 : 1 is achieved. The worst case, an image of alternating 
ones and zeros, produces an expansion of 2 : 9. 
7.4.7
JBIG2Decode Filter
The JBIG2Decode filter (PDF 1.4) decodes monochrome (1 bit per pixel) image data that has been encoded 
using JBIG2 encoding. 
NOTE 1
JBIG stands  for the  Joint Bi-Level  Image Experts Group, a  group within the International Organization for 
Standardization (ISO) that developed the format. JBIG2 is the second version of a standard originally released 
as JBIG1. 
JBIG2 encoding,  which  provides for  both lossy and  lossless  compression, is useful  only for  monochrome 
images, not for colour images, grayscale images, or general data. The algorithms used by the encoder, and 
EndOfLine
boolean
A  flag  indicating  whether  end-of-line  bit  patterns  shall  be 
present in the encoding.  The CCITTFaxDecode  filter shall 
always  accept end-of-line bit patterns.  If EndOfLine is true
end-of-line bit patterns shall be present.Default value: false . 
EncodedByteAlign
boolean
A flag  indicating whether the filter shall expect extra 0 bits 
before each encoded line so that the line begins on a byte 
boundary.  If true ,  the  filter  shall skip over  encoded  bits  to 
begin decoding each line at a byte boundary. If false , the filter 
shall  not  expect  extra  bits  in  the  encoded  representation. 
Default value: false . 
Columns
integer
The width of the image in pixels. If the value is not a multiple 
of 8, the filter shall adjust the width of the unencoded image 
to the next  multiple of 8 so that each line starts  on a byte 
boundary. Default value: 1728.
Rows
integer
The  height of the image  in scan lines.  If  the  value  is  0 or 
absent,  the  image’s  height  is  not  predetermined,  and  the 
encoded  data  shall  be  terminated  by  an  end-of-block  bit 
pattern or by the end of the filter’s data. Default value: 0. 
EndOfBlock
boolean
A flag indicating whether the filter shall expect the encoded 
data to be terminated by an end-of-block pattern, overriding 
the Rows parameter. If false , the filter shall stop when it has 
decoded the number of lines indicated by Rows or when its 
data has been exhausted, whichever occurs first. The end-of-
block  pattern  shall  be  the  CCITT  end-of-facsimile-block 
(EOFB)  or  return-to-control  (RTC)  appropriate  for  the K
parameter. Default value: true. 
BlackIs1
boolean
A flag indicating whether 1 bits shall be interpreted as black 
pixels and 0 bits as white pixels, the reverse of the normal 
PDF convention for image data. Default value: false
DamagedRowsBeforeError
integer
The number of damaged rows of data that shall be tolerated 
before  an  error  occurs.  This  entry  shall  apply  only  if 
EndOfLine is  true and  K is non-negative. Tolerating a 
damaged row shall mean locating its end in the encoded data 
by searching for an EndOfLine pattern and then substituting 
decoded data from the previous row if the previous row was 
not  damaged, or a white  scan line if the previous row was 
also damaged. Default value: 0. 
Table 11 –  Optional parameters for the CCITTFaxDecode filter  (continued)
Key
Type
Value
PDF 32000-1:2008
32
© 
Adobe Systems Incorporated 2008 – All rights reserved
the details of the format, are not described here. See ISO/IEC 11544 published standard for the current JBIG2 
specification.  Additional  information  can  be  found  through  the  Web  site  for  the  JBIG  and  JPEG  (Joint 
Photographic Experts Group) committees at < http://www.jpeg.org >. 
In general, JBIG2 provides considerably better compression than the existing CCITT standard (discussed in 
7.4.6, "CCITTFaxDecode Filter"). The compression it achieves depends strongly on the nature of the image. 
Images of pages containing text in any language compress particularly well, with typical compression ratios of 
20:1 to 50:1 for a page full of text.
The JBIG2 encoder shall build a table of unique symbol bitmaps found in the image, and other symbols found 
later in the image shall be matched against the table. Matching symbols shall be replaced by an index into the 
table, and symbols that fail to match shall be added to the table. The table itself shall be compressed using 
other means. 
NOTE 2
This method results in high compression ratios for documents in which the same symbol is repeated often, as 
is typical for images created by scanning text pages. It also results in high compression of white space in the 
image, which does not need to be encoded because it contains no symbols. 
While  best compression  is  achieved  for images  of  text,  the  JBIG2  standard  also  includes  algorithms  for 
compressing regions of an image that contain dithered halftone images (for example, photographs).
The JBIG2 compression method may also be used for encoding multiple images into a single JBIG2 bit stream.
NOTE 3
Typically,  these  images are scanned  pages of  a  multiple-page document.  Since  a  single  table of  symbol 
bitmaps  is  used  to  match  symbols  across  multiple  pages,  this  type  of  encoding  can  result  in  higher 
compression ratios than if each of the pages had been individually encoded using JBIG2.
In general, an image may be specified in PDF as either an image XObject or an inline image  (as described in 
8.9, "Images"); however, the JBIG2Decode filter shall not be used with inline images.
This filter addresses both single-page and multiple-page JBIG2 bit streams by representing each JBIG2 page 
as a PDF image, as follows: 
The filter shall use the embedded file organization of JBIG2. (The details of this and the other types of file 
organization are provided in an annex of the ISO specification.) The optional 2-byte combination (marker) 
mentioned in the specification shall not be used in PDF. JBIG2 bit streams in random-access organization 
should  be  converted  to the embedded file  organization. Bit streams  in sequential  organization  need  no 
reorganization, except for the mappings described below. 
The JBIG2 file header, end-of-page segments, and end-of-file segment shall not be used in PDF. These 
should be removed before the PDF objects described below are created. 
The  image  XObject  to  which  the JBIG2Decode  filter  is  applied  shall  contain  all  segments  that  are 
associated with the JBIG2 page represented by that image; that  is, all segments  whose segment  page 
association field  contains  the page number  of the  JBIG2 page represented by  the image.  In the image 
XObject, however, the segment’s page number should always be 1; that is, when each such segment is 
written to the XObject, the value of its segment page association field should be set to 1. 
If the bit stream contains global segments (segments whose segment page association field contains 0), 
these  segments  shall  be  placed  in a  separate  PDF stream,  and  the  filter  parameter  listed  in  Table 12
should  refer  to  that  stream.  The  stream  can  be  shared  by  multiple  image  XObjects  whose  JBIG2 
encodings use the same global segments. 
Table 12 –  Optional parameter for the JBIG2Decode filter  
Key
Type
Value
JBIG2Globals
stream
 stream  containing  the  JBIG2  global  (page  0)  segments.  Global 
segments shall be placed in this stream even if only a single JBIG2 
image XObject refers to it. 
Documents you may be interested
Documents you may be interested