com.itextpdf.text.pdf
Class PdfReader

java.lang.Object
  extended by com.itextpdf.text.pdf.PdfReader
All Implemented Interfaces:
PdfViewerPreferences
Direct Known Subclasses:
FdfReader

public class PdfReader
extends Object
implements PdfViewerPreferences

Reads a PDF document.

Author:
Paulo Soares, Kazuya Ujihara

Nested Class Summary
(package private) static class PdfReader.PageRefs
           
 
Field Summary
protected  PRAcroForm acroForm
           
protected  boolean acroFormParsed
           
private  boolean appendable
          Holds value of property appendable.
protected  PdfDictionary catalog
           
protected  Certificate certificate
           
protected  Key certificateKey
           
protected  String certificateKeyProvider
           
protected  boolean consolidateNamedDestinations
           
private  PRIndirectReference cryptoRef
           
protected  PdfEncryption decrypt
           
protected  boolean encrypted
           
private  boolean encryptionError
           
(package private) static byte[] endobj
           
(package private) static byte[] endstream
           
protected  int eofPos
           
private  int fileLength
           
protected  int freeXref
           
private  boolean hybridXref
           
protected  int lastXref
           
private  int lastXrefPartial
           
protected  boolean newXrefType
           
private  int objGen
           
private  int objNum
           
protected  HashMap<Integer,IntHashtable> objStmMark
           
protected  IntHashtable objStmToOffset
           
private  boolean ownerPasswordUsed
           
(package private) static PdfName[] pageInhCandidates
           
protected  PdfReader.PageRefs pageRefs
           
private  boolean partial
           
protected  byte[] password
           
protected  char pdfVersion
           
protected  int pValue
           
private  int readDepth
           
protected  boolean rebuilt
           
protected  boolean remoteToLocalNamedDestinations
           
(package private)  PdfDictionary rootPages
           
protected  int rValue
           
protected  boolean sharedStreams
           
protected  ArrayList<PdfString> strings
           
protected  boolean tampered
           
protected  PRTokeniser tokens
           
protected  PdfDictionary trailer
           
private  PdfViewerPreferencesImp viewerPreferences
           
protected  int[] xref
           
private  ArrayList<PdfObject> xrefObj
           
 
Constructor Summary
protected PdfReader()
           
  PdfReader(byte[] pdfIn)
          Reads and parses a PDF document.
  PdfReader(byte[] pdfIn, byte[] ownerPassword)
          Reads and parses a PDF document.
  PdfReader(InputStream is)
          Reads and parses a PDF document.
  PdfReader(InputStream is, byte[] ownerPassword)
          Reads and parses a PDF document.
  PdfReader(PdfReader reader)
          Creates an independent duplicate.
  PdfReader(RandomAccessFileOrArray raf, byte[] ownerPassword)
          Reads and parses a pdf document.
  PdfReader(String filename)
          Reads and parses a PDF document.
  PdfReader(String filename, 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.
 
Method Summary
 PRIndirectReference addPdfObject(PdfObject obj)
           
 void addViewerPreference(PdfName key, PdfObject value)
          Adds a viewer preference
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.
private  void checkPRStreamLength(PRStream stream)
           
 void close()
          Closes the reader
 byte[] computeUserPassword()
           
 void consolidateNamedDestinations()
          Replaces all the local named links with the actual destinations.
private  boolean convertNamedDestination(PdfObject obj, HashMap<Object,PdfObject> names)
          Converts a remote named destination GoToR with a local named destination if there's a corresponding name.
 int createFakeFontSubsets()
          Finds all the fonts not subset but embedded and marks them as subset.
static byte[] decodePredictor(byte[] in, PdfObject dicPar)
           
 double dumpPerc()
           
protected static PdfDictionary duplicatePdfDictionary(PdfDictionary original, PdfDictionary copy, PdfReader newReader)
           
protected static PdfObject duplicatePdfObject(PdfObject original, PdfReader newReader)
           
 void eliminateSharedStreams()
          Eliminates shared streams if they exist.
private  void ensureXrefSize(int size)
           
private  boolean equalsArray(byte[] ar1, byte[] ar2, int size)
           
(package private) static boolean equalsn(byte[] a1, byte[] a2)
           
(package private) static boolean existsName(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.
 AcroFields getAcroFields()
          Gets a read-only version of AcroFields.
 PRAcroForm getAcroForm()
          Returns the document's acroform, if it has one.
 Rectangle getBoxSize(int index, String boxName)
          Gets the box size.
 PdfDictionary getCatalog()
          Returns the document's catalog.
 int getCertificationLevel()
          Gets the certification level for this document.
 Rectangle getCropBox(int index)
          Gets the crop box without taking rotation into account.
 int getCryptoMode()
           
(package private)  PdfIndirectReference getCryptoRef()
           
(package private)  PdfEncryption getDecrypt()
           
 int getEofPos()
          Gets the byte address of the %%EOF marker.
 int getFileLength()
          Getter for property fileLength.
(package private) static String getFontName(PdfDictionary dic)
           
 HashMap<String,String> getInfo()
          Returns the content of the document information dictionary as a HashMap of String.
 String getJavaScript()
          Gets the global document JavaScript.
 String getJavaScript(RandomAccessFileOrArray file)
          Gets the global document JavaScript.
 int getLastXref()
          Gets the byte address of the last xref table.
 ArrayList<PdfAnnotation.PdfImportedLink> getLinks(int page)
           
 byte[] getMetadata()
          Gets the XML metadata.
private static PdfArray getNameArray(PdfObject obj)
           
 HashMap<Object,PdfObject> getNamedDestination()
          Gets all the named destinations as an HashMap.
 HashMap<Object,PdfObject> getNamedDestination(boolean keepNames)
          Gets all the named destinations as an HashMap.
 HashMap<String,PdfObject> getNamedDestinationFromNames()
          Gets the named destinations from the /Dests key in the catalog as an HashMap.
 HashMap<Object,PdfObject> getNamedDestinationFromNames(boolean keepNames)
          Gets the named destinations from the /Dests key in the catalog as an HashMap.
 HashMap<String,PdfObject> getNamedDestinationFromStrings()
          Gets the named destinations from the /Names key in the catalog as an HashMap.
static Rectangle getNormalizedRectangle(PdfArray box)
          Normalizes a Rectangle so that llx and lly are smaller than urx and ury.
 int getNumberOfPages()
          Gets the number of pages in the document.
 byte[] getPageContent(int pageNum)
          Gets the contents of the page.
 byte[] getPageContent(int pageNum, RandomAccessFileOrArray file)
          Gets the contents of the page.
 PdfDictionary getPageN(int pageNum)
          Gets the dictionary that represents a page.
 PdfDictionary getPageNRelease(int pageNum)
           
 PRIndirectReference getPageOrigRef(int pageNum)
          Gets the page reference to this page.
 int getPageRotation(int index)
          Gets the page rotation.
(package private)  int getPageRotation(PdfDictionary page)
           
 Rectangle getPageSize(int index)
          Gets the page size without taking rotation into account.
 Rectangle getPageSize(PdfDictionary page)
          Gets the page from a page dictionary
 Rectangle getPageSizeWithRotation(int index)
          Gets the page size, taking rotation into account.
 Rectangle getPageSizeWithRotation(PdfDictionary page)
          Gets the rotated page from a page dictionary.
 PdfObject getPdfObject(int idx)
           
static PdfObject getPdfObject(PdfObject obj)
          Reads a PdfObject resolving an indirect reference if needed.
static PdfObject getPdfObject(PdfObject obj, PdfObject parent)
           
 PdfObject getPdfObjectRelease(int idx)
           
static PdfObject getPdfObjectRelease(PdfObject obj)
           
static PdfObject getPdfObjectRelease(PdfObject obj, PdfObject parent)
          Reads a PdfObject resolving an indirect reference if needed.
protected  PdfReaderInstance getPdfReaderInstance(PdfWriter writer)
           
 char getPdfVersion()
          Gets the PDF version.
 int getPermissions()
          Gets the encryption permissions.
 RandomAccessFileOrArray getSafeFile()
          Gets a new file instance of the original PDF document.
 int getSimpleViewerPreferences()
          Returns a bitset representing the PageMode and PageLayout viewer preferences.
static byte[] getStreamBytes(PRStream stream)
          Get the content from a stream applying the required filters.
static byte[] getStreamBytes(PRStream stream, RandomAccessFileOrArray file)
          Get the content from a stream applying the required filters.
static byte[] getStreamBytesRaw(PRStream stream)
          Get the content from a stream as it is without applying any filter.
static byte[] getStreamBytesRaw(PRStream stream, RandomAccessFileOrArray file)
          Get the content from a stream as it is without applying any filter.
(package private) static String getSubsetPrefix(PdfDictionary dic)
           
 PdfDictionary getTrailer()
          Gets the trailer dictionary
 int getXrefSize()
          Gets the number of xref objects.
 boolean is128Key()
          Returns true if the PDF has a 128 bit key encryption.
 boolean isAppendable()
          Getter for property appendable.
 boolean isEncrypted()
          Returns true if the PDF is encrypted.
 boolean isHybridXref()
          Getter for property hybridXref.
 boolean isMetadataEncrypted()
           
 boolean isNewXrefType()
          Getter for property newXrefType.
 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.
 boolean isRebuilt()
          Checks if the document had errors and was rebuilt.
 boolean isTampered()
          Checks if the document was changed.
private  void iterateBookmarks(PdfObject outlineRef, HashMap<Object,PdfObject> names)
           
static PdfObject killIndirect(PdfObject obj)
          Eliminates the reference to the object freeing the memory used by it and clearing the xref entry.
protected  void killXref(PdfObject obj)
           
static byte[] LZWDecode(byte[] in)
          Decodes a stream that has the LZWDecode filter.
 void makeRemoteNamedDestinationsLocal()
          Replaces remote named links with local destinations that have the same name.
protected  PdfArray readArray()
           
private  void readDecryptedDocObj()
           
protected  PdfDictionary readDictionary()
           
protected  void readDocObj()
           
protected  void readDocObjPartial()
           
protected  void readObjStm(PRStream stream, IntHashtable map)
           
protected  PdfObject readOneObjStm(PRStream stream, int idx)
           
protected  void readPages()
           
protected  void readPdf()
           
protected  void readPdfPartial()
           
protected  PdfObject readPRObject()
           
protected  PdfObject readSingleObject(int k)
           
protected  void readXref()
           
protected  PdfDictionary readXrefSection()
           
protected  boolean readXRefStream(int ptr)
           
protected  void rebuildXref()
           
 void releaseLastXrefPartial()
           
static void releaseLastXrefPartial(PdfObject obj)
           
 void releasePage(int pageNum)
           
 void removeAnnotations()
          Removes all the annotations and fields from the document.
 void removeFields()
          Removes all the fields from the document.
protected  void removeUnusedNode(PdfObject obj, boolean[] hits)
           
 int removeUnusedObjects()
          Removes all the unreachable objects.
 void removeUsageRights()
          Removes any usage rights that this PDF may have.
private  boolean replaceNamedDestination(PdfObject obj, HashMap<Object,PdfObject> names)
           
 void resetLastXrefPartial()
           
 void resetReleasePage()
           
 void selectPages(List<Integer> pagesToKeep)
          Selects the pages to keep in the document.
 void selectPages(String ranges)
          Selects the pages to keep in the document.
 void setAppendable(boolean appendable)
          Setter for property appendable.
 void setPageContent(int pageNum, byte[] content)
          Sets the contents of the page.
 void setPageContent(int pageNum, byte[] content, int compressionLevel)
          Sets the contents of the page.
 void setTampered(boolean tampered)
          Sets the tampered state.
 void setViewerPreferences(int preferences)
          Sets the viewer preferences as the sum of several constants.
(package private)  void setViewerPreferences(PdfViewerPreferencesImp vp)
           
private  void setXrefPartialObject(int idx, PdfObject obj)
           
 int shuffleSubsetNames()
          Finds all the font subsets and changes the prefixes to some random values.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

pageInhCandidates

static final PdfName[] pageInhCandidates

endstream

static final byte[] endstream

endobj

static final byte[] endobj

tokens

protected PRTokeniser tokens

xref

protected int[] xref

objStmMark

protected HashMap<Integer,IntHashtable> objStmMark

objStmToOffset

protected IntHashtable objStmToOffset

newXrefType

protected boolean newXrefType

xrefObj

private ArrayList<PdfObject> xrefObj

rootPages

PdfDictionary rootPages

trailer

protected PdfDictionary trailer

catalog

protected PdfDictionary catalog

pageRefs

protected PdfReader.PageRefs pageRefs

acroForm

protected PRAcroForm acroForm

acroFormParsed

protected boolean acroFormParsed

encrypted

protected boolean encrypted

rebuilt

protected boolean rebuilt

freeXref

protected int freeXref

tampered

protected boolean tampered

lastXref

protected int lastXref

eofPos

protected int eofPos

pdfVersion

protected char pdfVersion

decrypt

protected PdfEncryption decrypt

password

protected byte[] password

certificateKey

protected Key certificateKey

certificate

protected Certificate certificate

certificateKeyProvider

protected String certificateKeyProvider

ownerPasswordUsed

private boolean ownerPasswordUsed

strings

protected ArrayList<PdfString> strings

sharedStreams

protected boolean sharedStreams

consolidateNamedDestinations

protected boolean consolidateNamedDestinations

remoteToLocalNamedDestinations

protected boolean remoteToLocalNamedDestinations

rValue

protected int rValue

pValue

protected int pValue

objNum

private int objNum

objGen

private int objGen

fileLength

private int fileLength

hybridXref

private boolean hybridXref

lastXrefPartial

private int lastXrefPartial

partial

private boolean partial

cryptoRef

private PRIndirectReference cryptoRef

viewerPreferences

private PdfViewerPreferencesImp viewerPreferences

encryptionError

private boolean encryptionError

appendable

private boolean appendable
Holds value of property appendable.


readDepth

private int readDepth
Constructor Detail

PdfReader

protected PdfReader()

PdfReader

public PdfReader(String filename)
          throws IOException
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)
          throws IOException
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)
          throws IOException
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)
          throws IOException
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)
          throws IOException
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)
          throws IOException
Reads and parses a PDF document.

Parameters:
url - the URL of the document
Throws:
IOException - on error

PdfReader

public PdfReader(URL url,
                 byte[] ownerPassword)
          throws IOException
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)
          throws IOException
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)
          throws IOException
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)
          throws IOException
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

getSafeFile

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

Returns:
a new file instance of the original PDF document

getPdfReaderInstance

protected PdfReaderInstance getPdfReaderInstance(PdfWriter writer)

getNumberOfPages

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

Returns:
the number of pages in the document

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

getAcroForm

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

Returns:
the document's acroform

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)

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

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

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

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

getInfo

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

Returns:
content of the document information dictionary

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

readPdf

protected void readPdf()
                throws IOException
Throws:
IOException

readPdfPartial

protected void readPdfPartial()
                       throws IOException
Throws:
IOException

equalsArray

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

readDecryptedDocObj

private void readDecryptedDocObj()
                          throws IOException
Throws:
IOException

getPdfObjectRelease

public static PdfObject getPdfObjectRelease(PdfObject obj)
Parameters:
obj -
Returns:
a PdfObject

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

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

getPdfObject

public static PdfObject getPdfObject(PdfObject obj,
                                     PdfObject parent)
Parameters:
obj -
parent -
Returns:
a PdfObject

getPdfObjectRelease

public PdfObject getPdfObjectRelease(int idx)
Parameters:
idx -
Returns:
a PdfObject

getPdfObject

public PdfObject getPdfObject(int idx)
Parameters:
idx -
Returns:
aPdfObject

resetLastXrefPartial

public void resetLastXrefPartial()

releaseLastXrefPartial

public void releaseLastXrefPartial()

releaseLastXrefPartial

public static void releaseLastXrefPartial(PdfObject obj)
Parameters:
obj -

setXrefPartialObject

private void setXrefPartialObject(int idx,
                                  PdfObject obj)

addPdfObject

public PRIndirectReference addPdfObject(PdfObject obj)
Parameters:
obj -
Returns:
an indirect reference

readPages

protected void readPages()
                  throws IOException
Throws:
IOException

readDocObjPartial

protected void readDocObjPartial()
                          throws IOException
Throws:
IOException

readSingleObject

protected PdfObject readSingleObject(int k)
                              throws IOException
Throws:
IOException

readOneObjStm

protected PdfObject readOneObjStm(PRStream stream,
                                  int idx)
                           throws IOException
Throws:
IOException

dumpPerc

public double dumpPerc()
Returns:
the percentage of the cross reference table that has been read

readDocObj

protected void readDocObj()
                   throws IOException
Throws:
IOException

checkPRStreamLength

private void checkPRStreamLength(PRStream stream)
                          throws IOException
Throws:
IOException

readObjStm

protected void readObjStm(PRStream stream,
                          IntHashtable map)
                   throws IOException
Throws:
IOException

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

ensureXrefSize

private void ensureXrefSize(int size)

readXref

protected void readXref()
                 throws IOException
Throws:
IOException

readXrefSection

protected PdfDictionary readXrefSection()
                                 throws IOException
Throws:
IOException

readXRefStream

protected boolean readXRefStream(int ptr)
                          throws IOException
Throws:
IOException

rebuildXref

protected void rebuildXref()
                    throws IOException
Throws:
IOException

readDictionary

protected PdfDictionary readDictionary()
                                throws IOException
Throws:
IOException

readArray

protected PdfArray readArray()
                      throws IOException
Throws:
IOException

readPRObject

protected PdfObject readPRObject()
                          throws IOException
Throws:
IOException

FlateDecode

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

Parameters:
in - the input data
Returns:
the decoded data

decodePredictor

public static byte[] decodePredictor(byte[] in,
                                     PdfObject dicPar)
Parameters:
in -
dicPar -
Returns:
a byte array

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

ASCIIHexDecode

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

Parameters:
in - the input data
Returns:
the decoded data

ASCII85Decode

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

Parameters:
in - the input data
Returns:
the decoded data

LZWDecode

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

Parameters:
in - the input data
Returns:
the decoded data

isRebuilt

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

Returns:
true if rebuilt.

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

releasePage

public void releasePage(int pageNum)
Parameters:
pageNum -

resetReleasePage

public void resetReleasePage()

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

getPageContent

public byte[] getPageContent(int pageNum,
                             RandomAccessFileOrArray file)
                      throws IOException
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)
                      throws IOException
Gets the contents of the page.

Parameters:
pageNum - the page number. 1 is the first
Returns:
the content
Throws:
IOException - on error

killXref

protected void killXref(PdfObject obj)

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)

getStreamBytes

public static byte[] getStreamBytes(PRStream stream,
                                    RandomAccessFileOrArray file)
                             throws IOException
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)
                             throws IOException
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)
                                throws IOException
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)
                                throws IOException
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

eliminateSharedStreams

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


isTampered

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

Returns:
true if the document was changed, false otherwise

setTampered

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

Parameters:
tampered - the tampered state

getMetadata

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

Returns:
the XML metadata
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

getXrefSize

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

Returns:
the number of xref objects

getEofPos

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

Returns:
the byte address of the %%EOF marker

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

isEncrypted

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

Returns:
true if the PDF is encrypted

getPermissions

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

Returns:
the encryption permissions

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

getTrailer

public PdfDictionary getTrailer()
Gets the trailer dictionary

Returns:
the trailer dictionary

getDecrypt

PdfEncryption getDecrypt()

equalsn

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

existsName

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

getFontName

static String getFontName(PdfDictionary dic)

getSubsetPrefix

static String getSubsetPrefix(PdfDictionary dic)

shuffleSubsetNames

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

Returns:
the number of font subsets altered

createFakeFontSubsets

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

Returns:
the number of fonts altered

getNameArray

private static PdfArray getNameArray(PdfObject obj)

getNamedDestination

public HashMap<Object,PdfObject> 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

getNamedDestination

public HashMap<Object,PdfObject> getNamedDestination(boolean keepNames)
Gets all the named destinations as an HashMap. The key is the name and the value is the destinations array.

Parameters:
keepNames - true if you want the keys to be real PdfNames instead of Strings
Returns:
gets all the named destinations
Since:
2.1.6

getNamedDestinationFromNames

public HashMap<String,PdfObject> 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
Since:
5.0.1 (generic type in signature)

getNamedDestinationFromNames

public HashMap<Object,PdfObject> getNamedDestinationFromNames(boolean keepNames)
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.

Parameters:
keepNames - true if you want the keys to be real PdfNames instead of Strings
Returns:
gets the named destinations
Since:
2.1.6

getNamedDestinationFromStrings

public HashMap<String,PdfObject> 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

removeFields

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


removeAnnotations

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


getLinks

public ArrayList<PdfAnnotation.PdfImportedLink> getLinks(int page)

iterateBookmarks

private void iterateBookmarks(PdfObject outlineRef,
                              HashMap<Object,PdfObject> names)

makeRemoteNamedDestinationsLocal

public void makeRemoteNamedDestinationsLocal()
Replaces remote named links with local destinations that have the same name.

Since:
5.0

convertNamedDestination

private boolean convertNamedDestination(PdfObject obj,
                                        HashMap<Object,PdfObject> names)
Converts a remote named destination GoToR with a local named destination if there's a corresponding name.

Parameters:
obj - an annotation that needs to be screened for links to external named destinations.
names - a map with names of local named destinations
Since:
iText 5.0

consolidateNamedDestinations

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


replaceNamedDestination

private boolean replaceNamedDestination(PdfObject obj,
                                        HashMap<Object,PdfObject> names)

duplicatePdfDictionary

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

duplicatePdfObject

protected static PdfObject duplicatePdfObject(PdfObject original,
                                              PdfReader newReader)

close

public void close()
Closes the reader


removeUnusedNode

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

removeUnusedObjects

public int removeUnusedObjects()
Removes all the unreachable objects.

Returns:
the number of indirect objects removed

getAcroFields

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

Returns:
a read-only version of AcroFields

getJavaScript

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

Parameters:
file - the document file
Returns:
the global document JavaScript
Throws:
IOException - on error

getJavaScript

public String getJavaScript()
                     throws IOException
Gets the global document JavaScript.

Returns:
the global document JavaScript
Throws:
IOException - on error

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<Integer> 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

setViewerPreferences

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

Specified by:
setViewerPreferences in interface PdfViewerPreferences
Parameters:
preferences - the viewer preferences
See Also:
PdfViewerPreferences.setViewerPreferences(int)

addViewerPreference

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

Specified by:
addViewerPreference in interface PdfViewerPreferences
Parameters:
key - a key for a viewer preference
value - a value for the viewer preference
See Also:
PdfViewerPreferences.addViewerPreference(com.itextpdf.text.pdf.PdfName, com.itextpdf.text.pdf.PdfObject)

setViewerPreferences

void setViewerPreferences(PdfViewerPreferencesImp vp)

getSimpleViewerPreferences

public int getSimpleViewerPreferences()
Returns a bitset representing the PageMode and PageLayout viewer preferences. Doesn't return any information about the ViewerPreferences dictionary.

Returns:
an int that contains the Viewer Preferences.

isAppendable

public boolean isAppendable()
Getter for property appendable.

Returns:
Value of property appendable.

setAppendable

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

Parameters:
appendable - New value of property appendable.

isNewXrefType

public boolean isNewXrefType()
Getter for property newXrefType.

Returns:
Value of property newXrefType.

getFileLength

public int getFileLength()
Getter for property fileLength.

Returns:
Value of property fileLength.

isHybridXref

public boolean isHybridXref()
Getter for property hybridXref.

Returns:
Value of property hybridXref.

getCryptoRef

PdfIndirectReference getCryptoRef()

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.


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

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

getCryptoMode

public int getCryptoMode()

isMetadataEncrypted

public boolean isMetadataEncrypted()

computeUserPassword

public byte[] computeUserPassword()

Hosted by Hostbasket