Package com.itextpdf.text.pdf
Class PdfReader
- java.lang.Object
-
- com.itextpdf.text.pdf.PdfReader
-
- All Implemented Interfaces:
PdfViewerPreferences
- Direct Known Subclasses:
AcroFields.ContentsChecker,FdfReader
public class PdfReader extends java.lang.Object implements PdfViewerPreferences
Reads a PDF document.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static classPdfReader.PageRefs
-
Field Summary
Fields Modifier and Type Field Description protected PRAcroFormacroFormprotected booleanacroFormParsedprivate booleanappendableHolds value of property appendable.protected PdfDictionarycatalogprotected java.security.cert.Certificatecertificateprotected java.security.KeycertificateKeyprotected java.lang.StringcertificateKeyProviderprotected booleanconsolidateNamedDestinationsprotected static CounterCOUNTERprivate PRIndirectReferencecryptoRefstatic booleandebugmodeprotected PdfEncryptiondecryptprotected booleanencryptedprivate booleanencryptionError(package private) static byte[]endobj(package private) static byte[]endstreamprotected longeofPosprotected ExternalDecryptionProcessexternalDecryptionProcessprivate longfileLengthprotected intfreeXrefprivate booleanhybridXrefprotected longlastXrefprivate intlastXrefPartialprivate static LoggerLOGGER(package private) MemoryLimitsAwareHandlermemoryLimitsAwareHandlerHandler which will be used for decompression of pdf streams.protected booleannewXrefTypeprivate intobjGenprivate intobjNumprotected java.util.HashMap<java.lang.Integer,IntHashtable>objStmMarkprotected LongHashtableobjStmToOffsetprivate booleanownerPasswordUsed(package private) static PdfName[]pageInhCandidatesprotected PdfReader.PageRefspageRefsprivate booleanpartialprotected byte[]passwordprotected charpdfVersionprotected longpValueprivate intreadDepthprotected booleanrebuiltprotected booleanremoteToLocalNamedDestinations(package private) PdfDictionaryrootPagesprotected intrValueprotected booleansharedStreamsprotected java.util.ArrayList<PdfString>stringsprotected booleantamperedprotected PRTokenisertokensprotected PdfDictionarytrailerstatic booleanunethicalreadingThe iText developers are not responsible if you decide to change the value of this static parameter.private PdfViewerPreferencesImpviewerPreferencesprotected long[]xrefprotected java.util.ArrayList<PdfObject>xrefObj
-
Constructor Summary
Constructors Modifier Constructor Description PdfReader(byte[] pdfIn)Reads and parses a PDF document.PdfReader(byte[] pdfIn, byte[] ownerPassword)Reads and parses a PDF document.PdfReader(byte[] pdfIn, java.security.cert.Certificate certificate, ExternalDecryptionProcess externalDecryptionProcess)Reads and parses a PDF document.privatePdfReader(RandomAccessSource byteSource, boolean partialRead, byte[] ownerPassword, java.security.cert.Certificate certificate, java.security.Key certificateKey, java.lang.String certificateKeyProvider, ExternalDecryptionProcess externalDecryptionProcess, boolean closeSourceOnConstructorError)Constructs a new PdfReader.privatePdfReader(RandomAccessSource byteSource, ReaderProperties properties)Constructs a new PdfReader.PdfReader(PdfReader reader)Creates an independent duplicate.PdfReader(RandomAccessFileOrArray raf, byte[] ownerPassword)Reads and parses a pdf document.PdfReader(RandomAccessFileOrArray raf, byte[] ownerPassword, boolean partial)Reads and parses a pdf document.PdfReader(ReaderProperties properties, RandomAccessFileOrArray raf)Reads and parses a PDF document.PdfReader(ReaderProperties properties, java.io.InputStream is)Reads and parses a PDF document.PdfReader(ReaderProperties properties, java.lang.String filename)Reads and parses a PDF document.PdfReader(java.io.InputStream is)Reads and parses a PDF document.PdfReader(java.io.InputStream is, byte[] ownerPassword)Reads and parses a PDF document.PdfReader(java.io.InputStream inputStream, java.security.cert.Certificate certificate, ExternalDecryptionProcess externalDecryptionProcess)Reads and parses a PDF document.PdfReader(java.lang.String filename)Reads and parses a PDF document.PdfReader(java.lang.String filename, byte[] ownerPassword)Reads and parses a PDF document.PdfReader(java.lang.String filename, byte[] ownerPassword, boolean partial)Reads and parses a PDF document.PdfReader(java.lang.String filename, java.security.cert.Certificate certificate, ExternalDecryptionProcess externalDecryptionProcess)Reads and parses a PDF document.PdfReader(java.lang.String filename, java.security.cert.Certificate certificate, java.security.Key certificateKey, java.lang.String certificateKeyProvider)Reads and parses a PDF document.PdfReader(java.net.URL url)Reads and parses a PDF document.PdfReader(java.net.URL url, byte[] ownerPassword)Reads and parses a PDF document.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description PRIndirectReferenceaddPdfObject(PdfObject obj)voidaddViewerPreference(PdfName key, PdfObject value)Adds a viewer preferencestatic byte[]ASCII85Decode(byte[] in)Decodes a stream that has the ASCII85Decode filter.(package private) static byte[]ASCII85Decode(byte[] in, java.io.ByteArrayOutputStream out)static byte[]ASCIIHexDecode(byte[] in)Decodes a stream that has the ASCIIHexDecode filter.(package private) static byte[]ASCIIHexDecode(byte[] in, java.io.ByteArrayOutputStream out)private voidcheckPRStreamLength(PRStream stream)voidclose()Closes the reader, and any underlying stream or data source used to create the readerbyte[]computeUserPassword()Computes user password if standard encryption handler is used with Standard40, Standard128 or AES128 encryption algorithm.voidconsolidateNamedDestinations()Replaces all the local named links with the actual destinations.private booleanconvertNamedDestination(PdfObject obj, java.util.HashMap<java.lang.Object,PdfObject> names)Converts a remote named destination GoToR with a local named destination if there's a corresponding name.intcreateFakeFontSubsets()Finds all the fonts not subset but embedded and marks them as subset.static byte[]decodeBytes(byte[] b, PdfDictionary streamDictionary)Decode a byte[] applying the filters specified in the provided dictionary using default filter handlers.static byte[]decodeBytes(byte[] b, PdfDictionary streamDictionary, java.util.Map<PdfName,FilterHandlers.FilterHandler> filterHandlers)Decode a byte[] applying the filters specified in the provided dictionary using the provided filter handlers.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.private voidensureXrefSize(int size)private booleanequalsArray(byte[] ar1, byte[] ar2, int size)(package private) static booleanequalsn(byte[] a1, byte[] a2)(package private) 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.private static byte[]FlateDecode(byte[] in, boolean strict, java.io.ByteArrayOutputStream out)(package private) static byte[]FlateDecode(byte[] in, java.io.ByteArrayOutputStream out)Decodes a stream that has the FlateDecode filter.AcroFieldsgetAcroFields()Gets a read-only version ofAcroFields.PRAcroFormgetAcroForm()Returns the document's acroform, if it has one.RectanglegetBoxSize(int index, java.lang.String boxName)Gets the box size.PdfDictionarygetCatalog()Returns the document's catalog.intgetCertificationLevel()Gets the certification level for this document.protected CountergetCounter()RectanglegetCropBox(int index)Gets the crop box without taking rotation into account.intgetCryptoMode()(package private) PdfIndirectReferencegetCryptoRef()(package private) PdfEncryptiongetDecrypt()longgetEofPos()Gets the byte address of the %%EOF marker.longgetFileLength()Getter for property fileLength.(package private) static java.lang.StringgetFontName(PdfDictionary dic)java.util.HashMap<java.lang.String,java.lang.String>getInfo()Returns the content of the document information dictionary as aHashMapofString.java.lang.StringgetJavaScript()Gets the global document JavaScript.java.lang.StringgetJavaScript(RandomAccessFileOrArray file)Gets the global document JavaScript.longgetLastXref()Gets the byte address of the last xref table.java.util.ArrayList<PdfAnnotation.PdfImportedLink>getLinks(int page)Retrieves links for a certain page.(package private) MemoryLimitsAwareHandlergetMemoryLimitsAwareHandler()byte[]getMetadata()Gets the XML metadata.private static PdfArraygetNameArray(PdfObject obj)java.util.HashMap<java.lang.Object,PdfObject>getNamedDestination()Gets all the named destinations as anHashMap.java.util.HashMap<java.lang.Object,PdfObject>getNamedDestination(boolean keepNames)Gets all the named destinations as anHashMap.java.util.HashMap<java.lang.String,PdfObject>getNamedDestinationFromNames()Gets the named destinations from the /Dests key in the catalog as anHashMap.java.util.HashMap<java.lang.Object,PdfObject>getNamedDestinationFromNames(boolean keepNames)Gets the named destinations from the /Dests key in the catalog as anHashMap.java.util.HashMap<java.lang.String,PdfObject>getNamedDestinationFromStrings()Gets the named destinations from the /Names key in the catalog as anHashMap.static RectanglegetNormalizedRectangle(PdfArray box)Normalizes aRectangleso that llx and lly are smaller than urx and ury.intgetNumberOfPages()Gets the number of pages in the document.private static PRTokenisergetOffsetTokeniser(RandomAccessSource byteSource)Utility method that checks the provided byte source to see if it has junk bytes at the beginning.byte[]getPageContent(int pageNum)Gets the contents of the page.byte[]getPageContent(int pageNum, RandomAccessFileOrArray file)Gets the contents of the page.static byte[]getPageContent(PdfDictionary page)Gets the content from the page dictionary.PdfDictionarygetPageN(int pageNum)Gets the dictionary that represents a page.PdfDictionarygetPageNRelease(int pageNum)PRIndirectReferencegetPageOrigRef(int pageNum)Gets the page reference to this page.PdfDictionarygetPageResources(int pageNum)Retrieve the given page's resource dictionaryPdfDictionarygetPageResources(PdfDictionary pageDict)Retrieve the given page's resource dictionaryintgetPageRotation(int index)Gets the page rotation.(package private) intgetPageRotation(PdfDictionary page)RectanglegetPageSize(int index)Gets the page size without taking rotation into account.RectanglegetPageSize(PdfDictionary page)Gets the page from a page dictionaryRectanglegetPageSizeWithRotation(int index)Gets the page size, taking rotation into account.RectanglegetPageSizeWithRotation(PdfDictionary page)Gets the rotated page from a page dictionary.PdfObjectgetPdfObject(int idx)static PdfObjectgetPdfObject(PdfObject obj)Reads aPdfObjectresolving an indirect reference if needed.static PdfObjectgetPdfObject(PdfObject obj, PdfObject parent)PdfObjectgetPdfObjectRelease(int idx)static PdfObjectgetPdfObjectRelease(PdfObject obj)static PdfObjectgetPdfObjectRelease(PdfObject obj, PdfObject parent)Reads aPdfObjectresolving an indirect reference if needed.protected PdfReaderInstancegetPdfReaderInstance(PdfWriter writer)chargetPdfVersion()Gets the PDF version.longgetPermissions()Gets the encryption permissions.RandomAccessFileOrArraygetSafeFile()Gets a new file instance of the original PDF document.intgetSimpleViewerPreferences()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 java.lang.StringgetSubsetPrefix(PdfDictionary dic)PdfDictionarygetTrailer()Gets the trailer dictionaryintgetXrefSize()Gets the number of xref objects.booleanhasUsageRights()Checks if this PDF has usage rights enabled.booleanis128Key()Returnstrueif the PDF has a 128 bit key encryption.booleanisAppendable()Getter for property appendable.booleanisEncrypted()Returnstrueif 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.booleanisTagged()Checks if the PDF is a tagged PDF.booleanisTampered()Checks if the document was changed.private voiditerateBookmarks(PdfObject outlineRef, java.util.HashMap<java.lang.Object,PdfObject> 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.(package private) static byte[]LZWDecode(byte[] in, java.io.ByteArrayOutputStream out)voidmakeRemoteNamedDestinationsLocal()Replaces remote named links with local destinations that have the same name.protected PdfArrayreadArray()private voidreadDecryptedDocObj()protected PdfDictionaryreadDictionary()protected voidreadDocObj()protected voidreadDocObjPartial()protected voidreadObjStm(PRStream stream, IntHashtable map)protected PdfObjectreadOneObjStm(PRStream stream, int idx)protected voidreadPages()protected voidreadPdf()Parses the entire PDFprotected voidreadPdfPartial()Partially parses the pdfprotected PdfObjectreadPRObject()protected PdfObjectreadSingleObject(int k)protected voidreadXref()protected PdfDictionaryreadXrefSection()protected booleanreadXRefStream(long 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.private booleanreplaceNamedDestination(PdfObject obj, java.util.HashMap<java.lang.Object,PdfObject> names)voidresetLastXrefPartial()voidresetReleasePage()voidselectPages(java.lang.String ranges)Selects the pages to keep in the document.voidselectPages(java.util.List<java.lang.Integer> pagesToKeep)Selects the pages to keep in the document.protected voidselectPages(java.util.List<java.lang.Integer> pagesToKeep, boolean removeUnused)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.voidsetPageContent(int pageNum, byte[] content, int compressionLevel, boolean killOldXRefRecursively)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)private voidsetXrefPartialObject(int idx, PdfObject obj)intshuffleSubsetNames()Finds all the font subsets and changes the prefixes to some random values.
-
-
-
Field Detail
-
unethicalreading
public static boolean unethicalreading
The iText developers are not responsible if you decide to change the value of this static parameter.- Since:
- 5.0.2
-
debugmode
public static boolean debugmode
-
LOGGER
private static final Logger LOGGER
-
pageInhCandidates
static final PdfName[] pageInhCandidates
-
endstream
static final byte[] endstream
-
endobj
static final byte[] endobj
-
tokens
protected PRTokeniser tokens
-
xref
protected long[] xref
-
objStmMark
protected java.util.HashMap<java.lang.Integer,IntHashtable> objStmMark
-
objStmToOffset
protected LongHashtable objStmToOffset
-
newXrefType
protected boolean newXrefType
-
xrefObj
protected java.util.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 long lastXref
-
eofPos
protected long eofPos
-
pdfVersion
protected char pdfVersion
-
decrypt
protected PdfEncryption decrypt
-
password
protected byte[] password
-
certificateKey
protected java.security.Key certificateKey
-
certificate
protected java.security.cert.Certificate certificate
-
certificateKeyProvider
protected java.lang.String certificateKeyProvider
-
externalDecryptionProcess
protected ExternalDecryptionProcess externalDecryptionProcess
-
ownerPasswordUsed
private boolean ownerPasswordUsed
-
strings
protected java.util.ArrayList<PdfString> strings
-
sharedStreams
protected boolean sharedStreams
-
consolidateNamedDestinations
protected boolean consolidateNamedDestinations
-
remoteToLocalNamedDestinations
protected boolean remoteToLocalNamedDestinations
-
rValue
protected int rValue
-
pValue
protected long pValue
-
objNum
private int objNum
-
objGen
private int objGen
-
fileLength
private long fileLength
-
hybridXref
private boolean hybridXref
-
lastXrefPartial
private int lastXrefPartial
-
partial
private boolean partial
-
cryptoRef
private PRIndirectReference cryptoRef
-
viewerPreferences
private final PdfViewerPreferencesImp viewerPreferences
-
encryptionError
private boolean encryptionError
-
memoryLimitsAwareHandler
MemoryLimitsAwareHandler memoryLimitsAwareHandler
Handler which will be used for decompression of pdf streams.
-
appendable
private boolean appendable
Holds value of property appendable.
-
COUNTER
protected static Counter COUNTER
-
readDepth
private int readDepth
-
-
Constructor Detail
-
PdfReader
private PdfReader(RandomAccessSource byteSource, boolean partialRead, byte[] ownerPassword, java.security.cert.Certificate certificate, java.security.Key certificateKey, java.lang.String certificateKeyProvider, ExternalDecryptionProcess externalDecryptionProcess, boolean closeSourceOnConstructorError) throws java.io.IOException
Constructs a new PdfReader. This is the master constructor.- Parameters:
byteSource- source of bytes for the readerpartialRead- if true, the reader is opened in partial mode (PDF is parsed on demand), if false, the entire PDF is parsed into memory as the reader opensownerPassword- the password or null if no password is requiredcertificate- the certificate or null if no certificate is requiredcertificateKey- the key or null if no certificate key is requiredcertificateKeyProvider- the name of the key provider, or null if no key is requiredexternalDecryptionProcess-closeSourceOnConstructorError- if true, the byteSource will be closed if there is an error during construction of this reader- Throws:
java.io.IOException
-
PdfReader
private PdfReader(RandomAccessSource byteSource, ReaderProperties properties) throws java.io.IOException
Constructs a new PdfReader. This is the master constructor.- Parameters:
byteSource- source of bytes for the readerproperties- the properties which will be used to create the reader- Throws:
java.io.IOException
-
PdfReader
public PdfReader(java.lang.String filename) throws java.io.IOExceptionReads and parses a PDF document.- Parameters:
filename- the file name of the document- Throws:
java.io.IOException- on error
-
PdfReader
public PdfReader(ReaderProperties properties, java.lang.String filename) throws java.io.IOException
Reads and parses a PDF document.- Parameters:
properties- the properties which will be used to create the readerfilename- the file name of the document- Throws:
java.io.IOException- on error
-
PdfReader
public PdfReader(java.lang.String filename, byte[] ownerPassword) throws java.io.IOExceptionReads and parses a PDF document.- Parameters:
filename- the file name of the documentownerPassword- the password to read the document- Throws:
java.io.IOException- on error
-
PdfReader
public PdfReader(java.lang.String filename, byte[] ownerPassword, boolean partial) throws java.io.IOExceptionReads and parses a PDF document.- Parameters:
filename- the file name of the documentownerPassword- the password to read the documentpartial- indicates if the reader needs to read the document only partially- Throws:
java.io.IOException- on error
-
PdfReader
public PdfReader(byte[] pdfIn) throws java.io.IOExceptionReads and parses a PDF document.- Parameters:
pdfIn- the byte array with the document- Throws:
java.io.IOException- on error
-
PdfReader
public PdfReader(byte[] pdfIn, byte[] ownerPassword) throws java.io.IOExceptionReads and parses a PDF document.- Parameters:
pdfIn- the byte array with the documentownerPassword- the password to read the document- Throws:
java.io.IOException- on error
-
PdfReader
public PdfReader(java.lang.String filename, java.security.cert.Certificate certificate, java.security.Key certificateKey, java.lang.String certificateKeyProvider) throws java.io.IOExceptionReads and parses a PDF document.- Parameters:
filename- the file name of the documentcertificate- the certificate to read the documentcertificateKey- the private key of the certificatecertificateKeyProvider- the security provider for certificateKey- Throws:
java.io.IOException- on error
-
PdfReader
public PdfReader(java.lang.String filename, java.security.cert.Certificate certificate, ExternalDecryptionProcess externalDecryptionProcess) throws java.io.IOExceptionReads and parses a PDF document.- Parameters:
filename- the file name of the documentcertificate-externalDecryptionProcess-- Throws:
java.io.IOException- on error
-
PdfReader
public PdfReader(byte[] pdfIn, java.security.cert.Certificate certificate, ExternalDecryptionProcess externalDecryptionProcess) throws java.io.IOExceptionReads and parses a PDF document.- Parameters:
pdfIn- the document as a byte arraycertificate-externalDecryptionProcess-- Throws:
java.io.IOException- on error
-
PdfReader
public PdfReader(java.io.InputStream inputStream, java.security.cert.Certificate certificate, ExternalDecryptionProcess externalDecryptionProcess) throws java.io.IOExceptionReads and parses a PDF document.- Parameters:
inputStream- the PDF filecertificate-externalDecryptionProcess-- Throws:
java.io.IOException- on error
-
PdfReader
public PdfReader(java.net.URL url) throws java.io.IOExceptionReads and parses a PDF document.- Parameters:
url- the URL of the document- Throws:
java.io.IOException- on error
-
PdfReader
public PdfReader(java.net.URL url, byte[] ownerPassword) throws java.io.IOExceptionReads and parses a PDF document.- Parameters:
url- the URL of the documentownerPassword- the password to read the document- Throws:
java.io.IOException- on error
-
PdfReader
public PdfReader(java.io.InputStream is, byte[] ownerPassword) throws java.io.IOExceptionReads and parses a PDF document.- Parameters:
is- theInputStreamcontaining the document. The stream is read to the end but is not closedownerPassword- the password to read the document- Throws:
java.io.IOException- on error
-
PdfReader
public PdfReader(java.io.InputStream is) throws java.io.IOExceptionReads and parses a PDF document.- Parameters:
is- theInputStreamcontaining the document. The stream is read to the end but is not closed- Throws:
java.io.IOException- on error
-
PdfReader
public PdfReader(ReaderProperties properties, java.io.InputStream is) throws java.io.IOException
Reads and parses a PDF document.- Parameters:
properties- the properties which will be used to create the readeris- theInputStreamcontaining the document. The stream is read to the end but is not closed- Throws:
java.io.IOException- on error
-
PdfReader
public PdfReader(ReaderProperties properties, RandomAccessFileOrArray raf) throws java.io.IOException
Reads and parses a PDF document.- Parameters:
properties- the properties which will be used to create the readerraf- the document location- Throws:
java.io.IOException- on error
-
PdfReader
public PdfReader(RandomAccessFileOrArray raf, byte[] ownerPassword) throws java.io.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.- Parameters:
raf- the document locationownerPassword- the password ornullfor no password- Throws:
java.io.IOException- on error
-
PdfReader
public PdfReader(RandomAccessFileOrArray raf, byte[] ownerPassword, boolean partial) throws java.io.IOException
Reads and parses a pdf document.- Parameters:
raf- the document locationownerPassword- the password ornullfor no passwordpartial- indicates if the reader needs to read the document only partially. SeePdfReader(RandomAccessFileOrArray, byte[])- Throws:
java.io.IOException- on error
-
PdfReader
public PdfReader(PdfReader reader)
Creates an independent duplicate.- Parameters:
reader- thePdfReaderto duplicate
-
-
Method Detail
-
getCounter
protected Counter getCounter()
-
getOffsetTokeniser
private static PRTokeniser getOffsetTokeniser(RandomAccessSource byteSource) throws java.io.IOException
Utility method that checks the provided byte source to see if it has junk bytes at the beginning. If junk bytes are found, construct a tokeniser that ignores the junk. Otherwise, construct a tokeniser for the byte source as it is- Parameters:
byteSource- the source to check- Returns:
- a tokeniser that is guaranteed to start at the PDF header
- Throws:
java.io.IOException- if there is a problem reading the byte source
-
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. Partial mode: return the value stored in the COUNT field of the pageref Full mode: return the total number of pages found while loading in the entire 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
-
getMemoryLimitsAwareHandler
MemoryLimitsAwareHandler getMemoryLimitsAwareHandler()
-
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 aRectanglewith 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, java.lang.String boxName)
Gets the box size. Allowed names are: "crop", "trim", "art", "bleed" and "media".- Parameters:
index- the page number. The first page is 1boxName- the box name- Returns:
- the box rectangle or null
-
getInfo
public java.util.HashMap<java.lang.String,java.lang.String> getInfo()
Returns the content of the document information dictionary as aHashMapofString.- Returns:
- content of the document information dictionary
-
getNormalizedRectangle
public static Rectangle getNormalizedRectangle(PdfArray box)
Normalizes aRectangleso that llx and lly are smaller than urx and ury.- Parameters:
box- the original rectangle- Returns:
- a normalized
Rectangle
-
isTagged
public boolean isTagged()
Checks if the PDF is a tagged PDF.
-
readPdf
protected void readPdf() throws java.io.IOExceptionParses the entire PDF- Throws:
java.io.IOException
-
readPdfPartial
protected void readPdfPartial() throws java.io.IOExceptionPartially parses the pdf- Throws:
java.io.IOException
-
equalsArray
private boolean equalsArray(byte[] ar1, byte[] ar2, int size)
-
readDecryptedDocObj
private void readDecryptedDocObj() throws java.io.IOException- Throws:
java.io.IOException
-
getPdfObjectRelease
public static PdfObject getPdfObjectRelease(PdfObject obj)
- Parameters:
obj-- Returns:
- a PdfObject
-
getPdfObject
public static PdfObject getPdfObject(PdfObject obj)
Reads aPdfObjectresolving an indirect reference if needed.- Parameters:
obj- thePdfObjectto read- Returns:
- the resolved
PdfObject
-
getPdfObjectRelease
public static PdfObject getPdfObjectRelease(PdfObject obj, PdfObject parent)
Reads aPdfObjectresolving an indirect reference if needed. If the reader was opened in partial mode the object will be released to save memory.- Parameters:
obj- thePdfObjectto readparent-- 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 java.io.IOException- Throws:
java.io.IOException
-
readDocObjPartial
protected void readDocObjPartial() throws java.io.IOException- Throws:
java.io.IOException
-
readSingleObject
protected PdfObject readSingleObject(int k) throws java.io.IOException
- Throws:
java.io.IOException
-
readOneObjStm
protected PdfObject readOneObjStm(PRStream stream, int idx) throws java.io.IOException
- Throws:
java.io.IOException
-
dumpPerc
public double dumpPerc()
- Returns:
- the percentage of the cross reference table that has been read
-
readDocObj
protected void readDocObj() throws java.io.IOException- Throws:
java.io.IOException
-
checkPRStreamLength
private void checkPRStreamLength(PRStream stream) throws java.io.IOException
- Throws:
java.io.IOException
-
readObjStm
protected void readObjStm(PRStream stream, IntHashtable map) throws java.io.IOException
- Throws:
java.io.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 java.io.IOException- Throws:
java.io.IOException
-
readXrefSection
protected PdfDictionary readXrefSection() throws java.io.IOException
- Throws:
java.io.IOException
-
readXRefStream
protected boolean readXRefStream(long ptr) throws java.io.IOException- Throws:
java.io.IOException
-
rebuildXref
protected void rebuildXref() throws java.io.IOException- Throws:
java.io.IOException
-
readDictionary
protected PdfDictionary readDictionary() throws java.io.IOException
- Throws:
java.io.IOException
-
readArray
protected PdfArray readArray() throws java.io.IOException
- Throws:
java.io.IOException
-
readPRObject
protected PdfObject readPRObject() throws java.io.IOException
- Throws:
java.io.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
-
FlateDecode
static byte[] FlateDecode(byte[] in, java.io.ByteArrayOutputStream out)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 datastrict-trueto read a correct stream.falseto try to read a corrupted stream- Returns:
- the decoded data
-
FlateDecode
private static byte[] FlateDecode(byte[] in, boolean strict, java.io.ByteArrayOutputStream out)
-
ASCIIHexDecode
public static byte[] ASCIIHexDecode(byte[] in)
Decodes a stream that has the ASCIIHexDecode filter.- Parameters:
in- the input data- Returns:
- the decoded data
-
ASCIIHexDecode
static byte[] ASCIIHexDecode(byte[] in, java.io.ByteArrayOutputStream out)
-
ASCII85Decode
public static byte[] ASCII85Decode(byte[] in)
Decodes a stream that has the ASCII85Decode filter.- Parameters:
in- the input data- Returns:
- the decoded data
-
ASCII85Decode
static byte[] ASCII85Decode(byte[] in, java.io.ByteArrayOutputStream out)
-
LZWDecode
public static byte[] LZWDecode(byte[] in)
Decodes a stream that has the LZWDecode filter.- Parameters:
in- the input data- Returns:
- the decoded data
-
LZWDecode
static byte[] LZWDecode(byte[] in, java.io.ByteArrayOutputStream out)
-
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 java.io.IOExceptionGets the contents of the page.- Parameters:
pageNum- the page number. 1 is the firstfile- the location of the PDF document- Returns:
- the content
- Throws:
java.io.IOException- on error
-
getPageContent
public static byte[] getPageContent(PdfDictionary page) throws java.io.IOException
Gets the content from the page dictionary.- Parameters:
page- the page dictionary- Returns:
- the content
- Throws:
java.io.IOException- on error- Since:
- 5.0.6
-
getPageResources
public PdfDictionary getPageResources(int pageNum)
Retrieve the given page's resource dictionary- Parameters:
pageNum- 1-based page number from which to retrieve the resource dictionary- Returns:
- The page's resources, or 'null' if the page has none.
- Since:
- 5.1
-
getPageResources
public PdfDictionary getPageResources(PdfDictionary pageDict)
Retrieve the given page's resource dictionary- Parameters:
pageDict- the given page- Returns:
- The page's resources, or 'null' if the page has none.
- Since:
- 5.1
-
getPageContent
public byte[] getPageContent(int pageNum) throws java.io.IOExceptionGets the contents of the page.- Parameters:
pageNum- the page number. 1 is the first- Returns:
- the content
- Throws:
java.io.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 contentpageNum- 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 contentpageNum- the page number. 1 is the firstcompressionLevel- the compressionLevel- Since:
- 2.1.3 (the method already existed without param compressionLevel)
-
setPageContent
public void setPageContent(int pageNum, byte[] content, int compressionLevel, boolean killOldXRefRecursively)Sets the contents of the page.- Parameters:
content- the new page contentpageNum- the page number. 1 is the firstcompressionLevel- the compressionLevelkillOldXRefRecursively- if true, old contents will be deeply removed from the pdf (i.e. if it was an array, all its entries will also be removed). Use careful when a content stream may be reused. If false, old contents will not be removed and will stay in the document if not manually deleted.- Since:
- 5.5.7 (the method already existed without param killOldXRefRecursively)
-
decodeBytes
public static byte[] decodeBytes(byte[] b, PdfDictionary streamDictionary) throws java.io.IOExceptionDecode a byte[] applying the filters specified in the provided dictionary using default filter handlers.- Parameters:
b- the bytes to decodestreamDictionary- the dictionary that contains filter information- Returns:
- the decoded bytes
- Throws:
java.io.IOException- if there are any problems decoding the bytes- Since:
- 5.0.4
-
decodeBytes
public static byte[] decodeBytes(byte[] b, PdfDictionary streamDictionary, java.util.Map<PdfName,FilterHandlers.FilterHandler> filterHandlers) throws java.io.IOExceptionDecode a byte[] applying the filters specified in the provided dictionary using the provided filter handlers.- Parameters:
b- the bytes to decodestreamDictionary- the dictionary that contains filter informationfilterHandlers- the map used to look up a handler for each type of filter- Returns:
- the decoded bytes
- Throws:
java.io.IOException- if there are any problems decoding the bytes- Since:
- 5.0.4
-
getStreamBytes
public static byte[] getStreamBytes(PRStream stream, RandomAccessFileOrArray file) throws java.io.IOException
Get the content from a stream applying the required filters.- Parameters:
stream- the streamfile- the location where the stream is- Returns:
- the stream content
- Throws:
java.io.IOException- on error
-
getStreamBytes
public static byte[] getStreamBytes(PRStream stream) throws java.io.IOException
Get the content from a stream applying the required filters.- Parameters:
stream- the stream- Returns:
- the stream content
- Throws:
java.io.IOException- on error
-
getStreamBytesRaw
public static byte[] getStreamBytesRaw(PRStream stream, RandomAccessFileOrArray file) throws java.io.IOException
Get the content from a stream as it is without applying any filter.- Parameters:
stream- the streamfile- the location where the stream is- Returns:
- the stream content
- Throws:
java.io.IOException- on error
-
getStreamBytesRaw
public static byte[] getStreamBytesRaw(PRStream stream) throws java.io.IOException
Get the content from a stream as it is without applying any filter.- Parameters:
stream- the stream- Returns:
- the stream content
- Throws:
java.io.IOException- on error
-
eliminateSharedStreams
public void eliminateSharedStreams()
Eliminates shared streams if they exist.
-
isTampered
public boolean isTampered()
Checks if the document was changed.- Returns:
trueif the document was changed,falseotherwise
-
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 java.io.IOExceptionGets the XML metadata.- Returns:
- the XML metadata
- Throws:
java.io.IOException- on error
-
getLastXref
public long 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 long 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()
Returnstrueif the PDF is encrypted.- Returns:
trueif the PDF is encrypted
-
getPermissions
public long getPermissions()
Gets the encryption permissions. It can be used directly inPdfWriter.setEncryption().- Returns:
- the encryption permissions
-
is128Key
public boolean is128Key()
Returnstrueif the PDF has a 128 bit key encryption.- Returns:
trueif 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 java.lang.String getFontName(PdfDictionary dic)
-
getSubsetPrefix
static java.lang.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
-
getNamedDestination
public java.util.HashMap<java.lang.Object,PdfObject> getNamedDestination()
Gets all the named destinations as anHashMap. The key is the name and the value is the destinations array.- Returns:
- gets all the named destinations
-
getNamedDestination
public java.util.HashMap<java.lang.Object,PdfObject> getNamedDestination(boolean keepNames)
Gets all the named destinations as anHashMap. 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 java.util.HashMap<java.lang.String,PdfObject> getNamedDestinationFromNames()
Gets the named destinations from the /Dests key in the catalog as anHashMap. 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 java.util.HashMap<java.lang.Object,PdfObject> getNamedDestinationFromNames(boolean keepNames)
Gets the named destinations from the /Dests key in the catalog as anHashMap. 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 java.util.HashMap<java.lang.String,PdfObject> getNamedDestinationFromStrings()
Gets the named destinations from the /Names key in the catalog as anHashMap. 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 java.util.ArrayList<PdfAnnotation.PdfImportedLink> getLinks(int page)
Retrieves links for a certain page.- Parameters:
page- the page to inspect- Returns:
- a list of links
-
iterateBookmarks
private void iterateBookmarks(PdfObject outlineRef, java.util.HashMap<java.lang.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, java.util.HashMap<java.lang.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, java.util.HashMap<java.lang.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, and any underlying stream or data source used to create 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 ofAcroFields.- Returns:
- a read-only version of
AcroFields
-
getJavaScript
public java.lang.String getJavaScript(RandomAccessFileOrArray file) throws java.io.IOException
Gets the global document JavaScript.- Parameters:
file- the document file- Returns:
- the global document JavaScript
- Throws:
java.io.IOException- on error
-
getJavaScript
public java.lang.String getJavaScript() throws java.io.IOExceptionGets the global document JavaScript.- Returns:
- the global document JavaScript
- Throws:
java.io.IOException- on error
-
selectPages
public void selectPages(java.lang.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 inSequenceList
-
selectPages
public void selectPages(java.util.List<java.lang.Integer> pagesToKeep)
Selects the pages to keep in the document. The pages are described as aListofInteger. 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
-
selectPages
protected void selectPages(java.util.List<java.lang.Integer> pagesToKeep, boolean removeUnused)Selects the pages to keep in the document. The pages are described as aListofInteger. 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 documentremoveUnused- indicate if to remove unsed objects. @see removeUnusedObjects
-
setViewerPreferences
public void setViewerPreferences(int preferences)
Sets the viewer preferences as the sum of several constants.- Specified by:
setViewerPreferencesin interfacePdfViewerPreferences- Parameters:
preferences- the viewer preferences- See Also:
PdfViewerPreferences.setViewerPreferences(int)
-
addViewerPreference
public void addViewerPreference(PdfName key, PdfObject value)
Adds a viewer preference- Specified by:
addViewerPreferencein interfacePdfViewerPreferences- Parameters:
key- a key for a viewer preferencevalue- a value for the viewer preference- See Also:
PdfViewerPreferences.addViewerPreference(com.itextpdf.text.pdf.PdfName, com.itextpdf.text.pdf.PdfObject)
-
setViewerPreferences
public 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 long 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()
-
hasUsageRights
public boolean hasUsageRights()
Checks if this PDF has usage rights enabled.- Returns:
trueif usage rights are present;falseotherwise
-
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 bePdfSignatureAppearance.NOT_CERTIFIED,PdfSignatureAppearance.CERTIFIED_NO_CHANGES_ALLOWED,PdfSignatureAppearance.CERTIFIED_FORM_FILLINGandPdfSignatureAppearance.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 returntrue.- Returns:
trueif the document was opened with the owner password or if it's not encrypted,falseif the document was opened with the user password
-
getCryptoMode
public int getCryptoMode()
- Returns:
- the crypto mode, or -1 of none
-
isMetadataEncrypted
public boolean isMetadataEncrypted()
- Returns:
- true if the metadata is encrypted.
-
computeUserPassword
public byte[] computeUserPassword()
Computes user password if standard encryption handler is used with Standard40, Standard128 or AES128 encryption algorithm.- Returns:
- user password, or null if not a standard encryption handler was used, if standard encryption handler was used with AES256 encryption algorithm, or if ownerPasswordUsed wasn't use to open the document.
-
-