com.lowagie.text.pdf

Class PdfReader

public class PdfReader extends Object implements PdfViewerPreferences

Reads a PDF document.

Author: Paulo Soares (psoares@consiste.pt) Kazuya Ujihara

Nested Class Summary
static classPdfReader.PageRefs
Field Summary
protected PRAcroFormacroForm
protected booleanacroFormParsed
booleanappendable
Holds value of property appendable.
protected PdfDictionarycatalog
protected Certificatecertificate
protected KeycertificateKey
protected StringcertificateKeyProvider
protected booleanconsolidateNamedDestinations
PRIndirectReferencecryptoRef
protected PdfEncryptiondecrypt
protected booleanencrypted
booleanencryptionError
static byte[]endobj
static byte[]endstream
protected inteofPos
intfileLength
protected intfreeXref
booleanhybridXref
protected intlastXref
intlastXrefPartial
protected booleannewXrefType
intobjGen
intobjNum
protected HashMapobjStmMark
protected IntHashtableobjStmToOffset
booleanownerPasswordUsed
static PdfName[]pageInhCandidates
protected PdfReader.PageRefspageRefs
booleanpartial
protected byte[]password
protected charpdfVersion
protected intpValue
protected booleanrebuilt
PdfDictionaryrootPages
protected intrValue
protected booleansharedStreams
protected ArrayListstrings
protected booleantampered
protected PRTokenisertokens
protected PdfDictionarytrailer
PdfViewerPreferencesImpviewerPreferences
protected int[]xref
ArrayListxrefObj
Constructor Summary
protected PdfReader()
PdfReader(String filename)
Reads and parses a PDF document.
PdfReader(String filename, byte[] ownerPassword)
Reads and parses a PDF document.
PdfReader(byte[] pdfIn)
Reads and parses a PDF document.
PdfReader(byte[] pdfIn, byte[] ownerPassword)
Reads and parses a PDF document.
PdfReader(String filename, Certificate certificate, Key certificateKey, String certificateKeyProvider)
Reads and parses a PDF document.
PdfReader(URL url)
Reads and parses a PDF document.
PdfReader(URL url, byte[] ownerPassword)
Reads and parses a PDF document.
PdfReader(InputStream is, byte[] ownerPassword)
Reads and parses a PDF document.
PdfReader(InputStream is)
Reads and parses a PDF document.
PdfReader(RandomAccessFileOrArray raf, byte[] ownerPassword)
Reads and parses a pdf document.
PdfReader(PdfReader reader)
Creates an independent duplicate.
Method Summary
static byte[]ASCII85Decode(byte[] in)
Decodes a stream that has the ASCII85Decode filter.
static byte[]ASCIIHexDecode(byte[] in)
Decodes a stream that has the ASCIIHexDecode filter.
PRIndirectReferenceaddPdfObject(PdfObject obj)
voidaddViewerPreference(PdfName key, PdfObject value)
Adds a viewer preference
voidcheckPRStreamLength(PRStream stream)
voidclose()
Closes the reader
byte[]computeUserPassword()
voidconsolidateNamedDestinations()
Replaces all the local named links with the actual destinations.
intcreateFakeFontSubsets()
Finds all the fonts not subset but embedded and marks them as subset.
static byte[]decodePredictor(byte[] in, PdfObject dicPar)
doubledumpPerc()
protected static PdfDictionaryduplicatePdfDictionary(PdfDictionary original, PdfDictionary copy, PdfReader newReader)
protected static PdfObjectduplicatePdfObject(PdfObject original, PdfReader newReader)
voideliminateSharedStreams()
Eliminates shared streams if they exist.
voidensureXrefSize(int size)
booleanequalsArray(byte[] ar1, byte[] ar2, int size)
static booleanequalsn(byte[] a1, byte[] a2)
static booleanexistsName(PdfDictionary dic, PdfName key, PdfName value)
static byte[]FlateDecode(byte[] in)
Decodes a stream that has the FlateDecode filter.
static byte[]FlateDecode(byte[] in, boolean strict)
A helper to FlateDecode.
AcroFieldsgetAcroFields()
Gets a read-only version of AcroFields.
PRAcroFormgetAcroForm()
Returns the document's acroform, if it has one.
RectanglegetBoxSize(int index, String boxName)
Gets the box size.
PdfDictionarygetCatalog()
Returns the document's catalog.
intgetCertificationLevel()
Gets the certification level for this document.
RectanglegetCropBox(int index)
Gets the crop box without taking rotation into account.
intgetCryptoMode()
PdfIndirectReferencegetCryptoRef()
PdfEncryptiongetDecrypt()
intgetEofPos()
Gets the byte address of the %%EOF marker.
intgetFileLength()
Getter for property fileLength.
static StringgetFontName(PdfDictionary dic)
HashMapgetInfo()
Returns the content of the document information dictionary as a HashMap of String.
StringgetJavaScript(RandomAccessFileOrArray file)
Gets the global document JavaScript.
StringgetJavaScript()
Gets the global document JavaScript.
intgetLastXref()
Gets the byte address of the last xref table.
ArrayListgetLinks(int page)
byte[]getMetadata()
Gets the XML metadata.
static PdfArraygetNameArray(PdfObject obj)
HashMapgetNamedDestination()
Gets all the named destinations as an HashMap.
HashMapgetNamedDestinationFromNames()
Gets the named destinations from the /Dests key in the catalog as an HashMap.
HashMapgetNamedDestinationFromStrings()
Gets the named destinations from the /Names key in the catalog as an HashMap.
static RectanglegetNormalizedRectangle(PdfArray box)
Normalizes a Rectangle so that llx and lly are smaller than urx and ury.
intgetNumberOfPages()
Gets the number of pages in the document.
byte[]getPageContent(int pageNum, RandomAccessFileOrArray file)
Gets the contents of the page.
byte[]getPageContent(int pageNum)
Gets the contents of the page.
PdfDictionarygetPageN(int pageNum)
Gets the dictionary that represents a page.
PdfDictionarygetPageNRelease(int pageNum)
PRIndirectReferencegetPageOrigRef(int pageNum)
Gets the page reference to this page.
intgetPageRotation(int index)
Gets the page rotation.
intgetPageRotation(PdfDictionary page)
RectanglegetPageSize(int index)
Gets the page size without taking rotation into account.
RectanglegetPageSize(PdfDictionary page)
Gets the page from a page dictionary
RectanglegetPageSizeWithRotation(int index)
Gets the page size, taking rotation into account.
RectanglegetPageSizeWithRotation(PdfDictionary page)
Gets the rotated page from a page dictionary.
static PdfObjectgetPdfObject(PdfObject obj)
Reads a PdfObject resolving an indirect reference if needed.
static PdfObjectgetPdfObject(PdfObject obj, PdfObject parent)
PdfObjectgetPdfObject(int idx)
static PdfObjectgetPdfObjectRelease(PdfObject obj)
static PdfObjectgetPdfObjectRelease(PdfObject obj, PdfObject parent)
Reads a PdfObject resolving an indirect reference if needed.
PdfObjectgetPdfObjectRelease(int idx)
protected PdfReaderInstancegetPdfReaderInstance(PdfWriter writer)
chargetPdfVersion()
Gets the PDF version.
intgetPermissions()
Gets the encryption permissions.
RandomAccessFileOrArraygetSafeFile()
Gets a new file instance of the original PDF document.
intgetSimpleViewerPreferences()
static byte[]getStreamBytes(PRStream stream, RandomAccessFileOrArray file)
Get the content from a stream applying the required filters.
static byte[]getStreamBytes(PRStream stream)
Get the content from a stream applying the required filters.
static byte[]getStreamBytesRaw(PRStream stream, RandomAccessFileOrArray file)
Get the content from a stream as it is without applying any filter.
static byte[]getStreamBytesRaw(PRStream stream)
Get the content from a stream as it is without applying any filter.
static StringgetSubsetPrefix(PdfDictionary dic)
PdfDictionarygetTrailer()
Gets the trailer dictionary
intgetXrefSize()
Gets the number of xref objects.
booleanis128Key()
Returns true if the PDF has a 128 bit key encryption.
booleanisAppendable()
Getter for property appendable.
booleanisEncrypted()
Returns true if the PDF is encrypted.
booleanisHybridXref()
Getter for property hybridXref.
booleanisMetadataEncrypted()
booleanisNewXrefType()
Getter for property newXrefType.
booleanisOpenedWithFullPermissions()
Checks if the document was opened with the owner password so that the end application can decide what level of access restrictions to apply.
booleanisRebuilt()
Checks if the document had errors and was rebuilt.
booleanisTampered()
Checks if the document was changed.
voiditerateBookmarks(PdfObject outlineRef, HashMap names)
static PdfObjectkillIndirect(PdfObject obj)
Eliminates the reference to the object freeing the memory used by it and clearing the xref entry.
protected voidkillXref(PdfObject obj)
static byte[]LZWDecode(byte[] in)
Decodes a stream that has the LZWDecode filter.
protected PdfArrayreadArray()
voidreadDecryptedDocObj()
protected PdfDictionaryreadDictionary()
protected voidreadDocObj()
protected voidreadDocObjPartial()
protected voidreadObjStm(PRStream stream, IntHashtable map)
protected PdfObjectreadOneObjStm(PRStream stream, int idx)
protected voidreadPages()
protected voidreadPdf()
protected voidreadPdfPartial()
protected PdfObjectreadPRObject()
protected PdfObjectreadSingleObject(int k)
protected voidreadXref()
protected PdfDictionaryreadXrefSection()
protected booleanreadXRefStream(int ptr)
protected voidrebuildXref()
voidreleaseLastXrefPartial()
static voidreleaseLastXrefPartial(PdfObject obj)
voidreleasePage(int pageNum)
voidremoveAnnotations()
Removes all the annotations and fields from the document.
voidremoveFields()
Removes all the fields from the document.
protected voidremoveUnusedNode(PdfObject obj, boolean[] hits)
intremoveUnusedObjects()
Removes all the unreachable objects.
voidremoveUsageRights()
Removes any usage rights that this PDF may have.
booleanreplaceNamedDestination(PdfObject obj, HashMap names)
voidresetLastXrefPartial()
voidresetReleasePage()
voidselectPages(String ranges)
Selects the pages to keep in the document.
voidselectPages(List pagesToKeep)
Selects the pages to keep in the document.
voidsetAppendable(boolean appendable)
Setter for property appendable.
voidsetPageContent(int pageNum, byte[] content)
Sets the contents of the page.
voidsetPageContent(int pageNum, byte[] content, int compressionLevel)
Sets the contents of the page.
voidsetTampered(boolean tampered)
Sets the tampered state.
voidsetViewerPreferences(int preferences)
Sets the viewer preferences as the sum of several constants.
voidsetViewerPreferences(PdfViewerPreferencesImp vp)
voidsetXrefPartialObject(int idx, PdfObject obj)
intshuffleSubsetNames()
Finds all the font subsets and changes the prefixes to some random values.

Field Detail

acroForm

protected PRAcroForm acroForm

acroFormParsed

protected boolean acroFormParsed

appendable

private boolean appendable
Holds value of property appendable.

catalog

protected PdfDictionary catalog

certificate

protected Certificate certificate

certificateKey

protected Key certificateKey

certificateKeyProvider

protected String certificateKeyProvider

consolidateNamedDestinations

protected boolean consolidateNamedDestinations

cryptoRef

private PRIndirectReference cryptoRef

decrypt

protected PdfEncryption decrypt

encrypted

protected boolean encrypted

encryptionError

private boolean encryptionError

endobj

static final byte[] endobj

endstream

static final byte[] endstream

eofPos

protected int eofPos

fileLength

private int fileLength

freeXref

protected int freeXref

hybridXref

private boolean hybridXref

lastXref

protected int lastXref

lastXrefPartial

private int lastXrefPartial

newXrefType

protected boolean newXrefType

objGen

private int objGen

objNum

private int objNum

objStmMark

protected HashMap objStmMark

objStmToOffset

protected IntHashtable objStmToOffset

ownerPasswordUsed

private boolean ownerPasswordUsed

pageInhCandidates

static final PdfName[] pageInhCandidates

pageRefs

protected PdfReader.PageRefs pageRefs

partial

private boolean partial

password

protected byte[] password

pdfVersion

protected char pdfVersion

pValue

protected int pValue

rebuilt

protected boolean rebuilt

rootPages

PdfDictionary rootPages

rValue

protected int rValue

sharedStreams

protected boolean sharedStreams

strings

protected ArrayList strings

tampered

protected boolean tampered

tokens

protected PRTokeniser tokens

trailer

protected PdfDictionary trailer

viewerPreferences

private PdfViewerPreferencesImp viewerPreferences

xref

protected int[] xref

xrefObj

private ArrayList xrefObj

Constructor Detail

PdfReader

protected PdfReader()

PdfReader

public PdfReader(String filename)
Reads and parses a PDF document.

Parameters: filename the file name of the document

Throws: IOException on error

PdfReader

public PdfReader(String filename, byte[] ownerPassword)
Reads and parses a PDF document.

Parameters: filename the file name of the document ownerPassword the password to read the document

Throws: IOException on error

PdfReader

public PdfReader(byte[] pdfIn)
Reads and parses a PDF document.

Parameters: pdfIn the byte array with the document

Throws: IOException on error

PdfReader

public PdfReader(byte[] pdfIn, byte[] ownerPassword)
Reads and parses a PDF document.

Parameters: pdfIn the byte array with the document ownerPassword the password to read the document

Throws: IOException on error

PdfReader

public PdfReader(String filename, Certificate certificate, Key certificateKey, String certificateKeyProvider)
Reads and parses a PDF document.

Parameters: filename the file name of the document certificate the certificate to read the document certificateKey the private key of the certificate certificateKeyProvider the security provider for certificateKey

Throws: IOException on error

PdfReader

public PdfReader(URL url)
Reads and parses a PDF document.

Parameters: url the URL of the document

Throws: IOException on error

PdfReader

public PdfReader(URL url, byte[] ownerPassword)
Reads and parses a PDF document.

Parameters: url the URL of the document ownerPassword the password to read the document

Throws: IOException on error

PdfReader

public PdfReader(InputStream is, byte[] ownerPassword)
Reads and parses a PDF document.

Parameters: is the InputStream containing the document. The stream is read to the end but is not closed ownerPassword the password to read the document

Throws: IOException on error

PdfReader

public PdfReader(InputStream is)
Reads and parses a PDF document.

Parameters: is the InputStream containing the document. The stream is read to the end but is not closed

Throws: IOException on error

PdfReader

public PdfReader(RandomAccessFileOrArray raf, byte[] ownerPassword)
Reads and parses a pdf document. Contrary to the other constructors only the xref is read into memory. The reader is said to be working in "partial" mode as only parts of the pdf are read as needed. The pdf is left open but may be closed at any time with PdfReader.close(), reopen is automatic.

Parameters: raf the document location ownerPassword the password or null for no password

Throws: IOException on error

PdfReader

public PdfReader(PdfReader reader)
Creates an independent duplicate.

Parameters: reader the PdfReader to duplicate

Method Detail

ASCII85Decode

public static byte[] ASCII85Decode(byte[] in)
Decodes a stream that has the ASCII85Decode filter.

Parameters: in the input data

Returns: the decoded data

ASCIIHexDecode

public static byte[] ASCIIHexDecode(byte[] in)
Decodes a stream that has the ASCIIHexDecode filter.

Parameters: in the input data

Returns: the decoded data

addPdfObject

public PRIndirectReference addPdfObject(PdfObject obj)

Parameters: obj

Returns: an indirect reference

addViewerPreference

public void addViewerPreference(PdfName key, PdfObject value)
Adds a viewer preference

Parameters: key a key for a viewer preference value a value for the viewer preference

See Also: PdfViewerPreferences

checkPRStreamLength

private void checkPRStreamLength(PRStream stream)

close

public void close()
Closes the reader

computeUserPassword

public byte[] computeUserPassword()

consolidateNamedDestinations

public void consolidateNamedDestinations()
Replaces all the local named links with the actual destinations.

createFakeFontSubsets

public int createFakeFontSubsets()
Finds all the fonts not subset but embedded and marks them as subset.

Returns: the number of fonts altered

decodePredictor

public static byte[] decodePredictor(byte[] in, PdfObject dicPar)

Parameters: in dicPar

Returns: a byte array

dumpPerc

public double dumpPerc()

Returns: the percentage of the cross reference table that has been read

duplicatePdfDictionary

protected static PdfDictionary duplicatePdfDictionary(PdfDictionary original, PdfDictionary copy, PdfReader newReader)

duplicatePdfObject

protected static PdfObject duplicatePdfObject(PdfObject original, PdfReader newReader)

eliminateSharedStreams

public void eliminateSharedStreams()
Eliminates shared streams if they exist.

ensureXrefSize

private void ensureXrefSize(int size)

equalsArray

private boolean equalsArray(byte[] ar1, byte[] ar2, int size)

equalsn

static boolean equalsn(byte[] a1, byte[] a2)

existsName

static boolean existsName(PdfDictionary dic, PdfName key, PdfName value)

FlateDecode

public static byte[] FlateDecode(byte[] in)
Decodes a stream that has the FlateDecode filter.

Parameters: in the input data

Returns: the decoded data

FlateDecode

public static byte[] FlateDecode(byte[] in, boolean strict)
A helper to FlateDecode.

Parameters: in the input data strict true to read a correct stream. false to try to read a corrupted stream

Returns: the decoded data

getAcroFields

public AcroFields getAcroFields()
Gets a read-only version of AcroFields.

Returns: a read-only version of AcroFields

getAcroForm

public PRAcroForm getAcroForm()
Returns the document's acroform, if it has one.

Returns: the document's acroform

getBoxSize

public Rectangle getBoxSize(int index, String boxName)
Gets the box size. Allowed names are: "crop", "trim", "art", "bleed" and "media".

Parameters: index the page number. The first page is 1 boxName the box name

Returns: the box rectangle or null

getCatalog

public PdfDictionary getCatalog()
Returns the document's catalog. This dictionary is not a copy, any changes will be reflected in the catalog.

Returns: the document's catalog

getCertificationLevel

public int getCertificationLevel()
Gets the certification level for this document. The return values can be PdfSignatureAppearance.NOT_CERTIFIED, PdfSignatureAppearance.CERTIFIED_NO_CHANGES_ALLOWED, PdfSignatureAppearance.CERTIFIED_FORM_FILLING and PdfSignatureAppearance.CERTIFIED_FORM_FILLING_AND_ANNOTATIONS.

No signature validation is made, use the methods available for that in AcroFields.

Returns: gets the certification level for this document

getCropBox

public Rectangle getCropBox(int index)
Gets the crop box without taking rotation into account. This is the value of the /CropBox key. The crop box is the part of the document to be displayed or printed. It usually is the same as the media box but may be smaller. If the page doesn't have a crop box the page size will be returned.

Parameters: index the page number. The first page is 1

Returns: the crop box

getCryptoMode

public int getCryptoMode()

getCryptoRef

PdfIndirectReference getCryptoRef()

getDecrypt

PdfEncryption getDecrypt()

getEofPos

public int getEofPos()
Gets the byte address of the %%EOF marker.

Returns: the byte address of the %%EOF marker

getFileLength

public int getFileLength()
Getter for property fileLength.

Returns: Value of property fileLength.

getFontName

static String getFontName(PdfDictionary dic)

getInfo

public HashMap getInfo()
Returns the content of the document information dictionary as a HashMap of String.

Returns: content of the document information dictionary

getJavaScript

public String getJavaScript(RandomAccessFileOrArray file)
Gets the global document JavaScript.

Parameters: file the document file

Returns: the global document JavaScript

Throws: IOException on error

getJavaScript

public String getJavaScript()
Gets the global document JavaScript.

Returns: the global document JavaScript

Throws: IOException on error

getLastXref

public int getLastXref()
Gets the byte address of the last xref table.

Returns: the byte address of the last xref table

getLinks

public ArrayList getLinks(int page)

getMetadata

public byte[] getMetadata()
Gets the XML metadata.

Returns: the XML metadata

Throws: IOException on error

getNameArray

private static PdfArray getNameArray(PdfObject obj)

getNamedDestination

public HashMap getNamedDestination()
Gets all the named destinations as an HashMap. The key is the name and the value is the destinations array.

Returns: gets all the named destinations

getNamedDestinationFromNames

public HashMap getNamedDestinationFromNames()
Gets the named destinations from the /Dests key in the catalog as an HashMap. The key is the name and the value is the destinations array.

Returns: gets the named destinations

getNamedDestinationFromStrings

public HashMap getNamedDestinationFromStrings()
Gets the named destinations from the /Names key in the catalog as an HashMap. The key is the name and the value is the destinations array.

Returns: gets the named destinations

getNormalizedRectangle

public static Rectangle getNormalizedRectangle(PdfArray box)
Normalizes a Rectangle so that llx and lly are smaller than urx and ury.

Parameters: box the original rectangle

Returns: a normalized Rectangle

getNumberOfPages

public int getNumberOfPages()
Gets the number of pages in the document.

Returns: the number of pages in the document

getPageContent

public byte[] getPageContent(int pageNum, RandomAccessFileOrArray file)
Gets the contents of the page.

Parameters: pageNum the page number. 1 is the first file the location of the PDF document

Returns: the content

Throws: IOException on error

getPageContent

public byte[] getPageContent(int pageNum)
Gets the contents of the page.

Parameters: pageNum the page number. 1 is the first

Returns: the content

Throws: IOException on error

getPageN

public PdfDictionary getPageN(int pageNum)
Gets the dictionary that represents a page.

Parameters: pageNum the page number. 1 is the first

Returns: the page dictionary

getPageNRelease

public PdfDictionary getPageNRelease(int pageNum)

Parameters: pageNum

Returns: a Dictionary object

getPageOrigRef

public PRIndirectReference getPageOrigRef(int pageNum)
Gets the page reference to this page.

Parameters: pageNum the page number. 1 is the first

Returns: the page reference

getPageRotation

public int getPageRotation(int index)
Gets the page rotation. This value can be 0, 90, 180 or 270.

Parameters: index the page number. The first page is 1

Returns: the page rotation

getPageRotation

int getPageRotation(PdfDictionary page)

getPageSize

public Rectangle getPageSize(int index)
Gets the page size without taking rotation into account. This is the value of the /MediaBox key.

Parameters: index the page number. The first page is 1

Returns: the page size

getPageSize

public Rectangle getPageSize(PdfDictionary page)
Gets the page from a page dictionary

Parameters: page the page dictionary

Returns: the page

getPageSizeWithRotation

public Rectangle getPageSizeWithRotation(int index)
Gets the page size, taking rotation into account. This is a Rectangle with the value of the /MediaBox and the /Rotate key.

Parameters: index the page number. The first page is 1

Returns: a Rectangle

getPageSizeWithRotation

public Rectangle getPageSizeWithRotation(PdfDictionary page)
Gets the rotated page from a page dictionary.

Parameters: page the page dictionary

Returns: the rotated page

getPdfObject

public static PdfObject getPdfObject(PdfObject obj)
Reads a PdfObject resolving an indirect reference if needed.

Parameters: obj the PdfObject to read

Returns: the resolved PdfObject

getPdfObject

public static PdfObject getPdfObject(PdfObject obj, PdfObject parent)

Parameters: obj parent

Returns: a PdfObject

getPdfObject

public PdfObject getPdfObject(int idx)

Parameters: idx

Returns: aPdfObject

getPdfObjectRelease

public static PdfObject getPdfObjectRelease(PdfObject obj)

Parameters: obj

Returns: a PdfObject

getPdfObjectRelease

public static PdfObject getPdfObjectRelease(PdfObject obj, PdfObject parent)
Reads a PdfObject resolving an indirect reference if needed. If the reader was opened in partial mode the object will be released to save memory.

Parameters: obj the PdfObject to read parent

Returns: a PdfObject

getPdfObjectRelease

public PdfObject getPdfObjectRelease(int idx)

Parameters: idx

Returns: a PdfObject

getPdfReaderInstance

protected PdfReaderInstance getPdfReaderInstance(PdfWriter writer)

getPdfVersion

public char getPdfVersion()
Gets the PDF version. Only the last version char is returned. For example version 1.4 is returned as '4'.

Returns: the PDF version

getPermissions

public int getPermissions()
Gets the encryption permissions. It can be used directly in PdfWriter.setEncryption().

Returns: the encryption permissions

getSafeFile

public RandomAccessFileOrArray getSafeFile()
Gets a new file instance of the original PDF document.

Returns: a new file instance of the original PDF document

getSimpleViewerPreferences

public int getSimpleViewerPreferences()

Returns: an int that contains the Viewer Preferences.

getStreamBytes

public static byte[] getStreamBytes(PRStream stream, RandomAccessFileOrArray file)
Get the content from a stream applying the required filters.

Parameters: stream the stream file the location where the stream is

Returns: the stream content

Throws: IOException on error

getStreamBytes

public static byte[] getStreamBytes(PRStream stream)
Get the content from a stream applying the required filters.

Parameters: stream the stream

Returns: the stream content

Throws: IOException on error

getStreamBytesRaw

public static byte[] getStreamBytesRaw(PRStream stream, RandomAccessFileOrArray file)
Get the content from a stream as it is without applying any filter.

Parameters: stream the stream file the location where the stream is

Returns: the stream content

Throws: IOException on error

getStreamBytesRaw

public static byte[] getStreamBytesRaw(PRStream stream)
Get the content from a stream as it is without applying any filter.

Parameters: stream the stream

Returns: the stream content

Throws: IOException on error

getSubsetPrefix

static String getSubsetPrefix(PdfDictionary dic)

getTrailer

public PdfDictionary getTrailer()
Gets the trailer dictionary

Returns: the trailer dictionary

getXrefSize

public int getXrefSize()
Gets the number of xref objects.

Returns: the number of xref objects

is128Key

public boolean is128Key()
Returns true if the PDF has a 128 bit key encryption.

Returns: true if the PDF has a 128 bit key encryption

isAppendable

public boolean isAppendable()
Getter for property appendable.

Returns: Value of property appendable.

isEncrypted

public boolean isEncrypted()
Returns true if the PDF is encrypted.

Returns: true if the PDF is encrypted

isHybridXref

public boolean isHybridXref()
Getter for property hybridXref.

Returns: Value of property hybridXref.

isMetadataEncrypted

public boolean isMetadataEncrypted()

isNewXrefType

public boolean isNewXrefType()
Getter for property newXrefType.

Returns: Value of property newXrefType.

isOpenedWithFullPermissions

public final boolean isOpenedWithFullPermissions()
Checks if the document was opened with the owner password so that the end application can decide what level of access restrictions to apply. If the document is not encrypted it will return true.

Returns: true if the document was opened with the owner password or if it's not encrypted, false if the document was opened with the user password

isRebuilt

public boolean isRebuilt()
Checks if the document had errors and was rebuilt.

Returns: true if rebuilt.

isTampered

public boolean isTampered()
Checks if the document was changed.

Returns: true if the document was changed, false otherwise

iterateBookmarks

private void iterateBookmarks(PdfObject outlineRef, HashMap names)

killIndirect

public static PdfObject killIndirect(PdfObject obj)
Eliminates the reference to the object freeing the memory used by it and clearing the xref entry.

Parameters: obj the object. If it's an indirect reference it will be eliminated

Returns: the object or the already erased dereferenced object

killXref

protected void killXref(PdfObject obj)

LZWDecode

public static byte[] LZWDecode(byte[] in)
Decodes a stream that has the LZWDecode filter.

Parameters: in the input data

Returns: the decoded data

readArray

protected PdfArray readArray()

readDecryptedDocObj

private void readDecryptedDocObj()

Throws: IOException

readDictionary

protected PdfDictionary readDictionary()

readDocObj

protected void readDocObj()

readDocObjPartial

protected void readDocObjPartial()

readObjStm

protected void readObjStm(PRStream stream, IntHashtable map)

readOneObjStm

protected PdfObject readOneObjStm(PRStream stream, int idx)

readPages

protected void readPages()

readPdf

protected void readPdf()

readPdfPartial

protected void readPdfPartial()

readPRObject

protected PdfObject readPRObject()

readSingleObject

protected PdfObject readSingleObject(int k)

readXref

protected void readXref()

readXrefSection

protected PdfDictionary readXrefSection()

readXRefStream

protected boolean readXRefStream(int ptr)

rebuildXref

protected void rebuildXref()

releaseLastXrefPartial

public void releaseLastXrefPartial()

releaseLastXrefPartial

public static void releaseLastXrefPartial(PdfObject obj)

Parameters: obj

releasePage

public void releasePage(int pageNum)

Parameters: pageNum

removeAnnotations

public void removeAnnotations()
Removes all the annotations and fields from the document.

removeFields

public void removeFields()
Removes all the fields from the document.

removeUnusedNode

protected void removeUnusedNode(PdfObject obj, boolean[] hits)

removeUnusedObjects

public int removeUnusedObjects()
Removes all the unreachable objects.

Returns: the number of indirect objects removed

removeUsageRights

public void removeUsageRights()
Removes any usage rights that this PDF may have. Only Adobe can grant usage rights and any PDF modification with iText will invalidate them. Invalidated usage rights may confuse Acrobat and it's advisable to remove them altogether.

replaceNamedDestination

private boolean replaceNamedDestination(PdfObject obj, HashMap names)

resetLastXrefPartial

public void resetLastXrefPartial()

resetReleasePage

public void resetReleasePage()

selectPages

public void selectPages(String ranges)
Selects the pages to keep in the document. The pages are described as ranges. The page ordering can be changed but no page repetitions are allowed. Note that it may be very slow in partial mode.

Parameters: ranges the comma separated ranges as described in SequenceList

selectPages

public void selectPages(List pagesToKeep)
Selects the pages to keep in the document. The pages are described as a List of Integer. The page ordering can be changed but no page repetitions are allowed. Note that it may be very slow in partial mode.

Parameters: pagesToKeep the pages to keep in the document

setAppendable

public void setAppendable(boolean appendable)
Setter for property appendable.

Parameters: appendable New value of property appendable.

setPageContent

public void setPageContent(int pageNum, byte[] content)
Sets the contents of the page.

Parameters: content the new page content pageNum the page number. 1 is the first

setPageContent

public void setPageContent(int pageNum, byte[] content, int compressionLevel)
Sets the contents of the page.

Parameters: content the new page content pageNum the page number. 1 is the first

Since: 2.1.3 (the method already existed without param compressionLevel)

setTampered

public void setTampered(boolean tampered)
Sets the tampered state. A tampered PdfReader cannot be reused in PdfStamper.

Parameters: tampered the tampered state

setViewerPreferences

public void setViewerPreferences(int preferences)
Sets the viewer preferences as the sum of several constants.

Parameters: preferences the viewer preferences

See Also: PdfViewerPreferences

setViewerPreferences

void setViewerPreferences(PdfViewerPreferencesImp vp)

setXrefPartialObject

private void setXrefPartialObject(int idx, PdfObject obj)

shuffleSubsetNames

public int shuffleSubsetNames()
Finds all the font subsets and changes the prefixes to some random values.

Returns: the number of font subsets altered