Class PdfReader
- java.lang.Object
-
- com.gitlab.pdftk_java.com.lowagie.text.pdf.PdfReader
-
- All Implemented Interfaces:
PdfViewerPreferences
- Direct Known Subclasses:
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 class
PdfReader.PageRefs
-
Field Summary
Fields Modifier and Type Field Description protected PRAcroForm
acroForm
protected boolean
acroFormParsed
private boolean
appendable
Holds value of property appendable.PdfDictionary
catalog
protected boolean
consolidateNamedDestinations
private PRIndirectReference
cryptoRef
protected PdfEncryption
decrypt
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 java.util.HashMap
objStmMark
protected IntHashtable
objStmToOffset
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 java.util.ArrayList
strings
protected boolean
tampered
protected PRTokeniser
tokens
protected PdfDictionary
trailer
private PdfViewerPreferencesImp
viewerPreferences
(package private) static int[]
vpints
(package private) static PdfName[]
vpnames
protected int[]
xref
private java.util.ArrayList
xrefObj
-
Constructor Summary
Constructors Modifier Constructor Description protected
PdfReader()
PdfReader(byte[] pdfIn)
Reads and parses a PDF document.PdfReader(byte[] pdfIn, byte[] ownerPassword)
Reads and parses a PDF document.PdfReader(RandomAccessFileOrArray raf, byte[] ownerPassword)
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.lang.String filename)
Reads and parses a PDF document.PdfReader(java.lang.String filename, byte[] ownerPassword)
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 PRIndirectReference
addPdfObject(PdfObject obj)
void
addViewerPreference(PdfName key, PdfObject value)
Adds a viewer preferencestatic 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 readerbyte[]
computeUserPassword()
void
consolidateNamedDestinations()
Replaces all the local named links with the actual destinations.private boolean
convertNamedDestination(PdfObject obj, java.util.HashMap 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)
private PdfArray
findOrphanPages()
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 ofAcroFields
.PRAcroForm
getAcroForm()
Returns the document's acroform, if it has one.Rectangle
getBoxSize(int index, java.lang.String boxName)
Gets the box size.Rectangle
getBoxSize(PdfDictionary page, PdfName boxName)
Rectangle
getBoxSize(PdfDictionary page, java.lang.String boxName)
PdfDictionary
getCatalog()
Returns the document's catalog.Rectangle
getCropBox(int index)
Gets the crop box without taking rotation into account.Rectangle
getCropBox(PdfDictionary page)
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 java.lang.String
getFontName(PdfDictionary dic)
java.util.HashMap
getInfo()
Returns the content of the document information dictionary as aHashMap
ofString
.java.lang.String
getJavaScript()
Gets the global document JavaScript.java.lang.String
getJavaScript(RandomAccessFileOrArray file)
Gets the global document JavaScript.int
getLastXref()
Gets the byte address of the last xref table.byte[]
getMetadata()
Gets the XML metadata.private static PdfArray
getNameArray(PdfObject obj)
java.util.HashMap
getNamedDestination()
Gets all the named destinations as anHashMap
.java.util.HashMap
getNamedDestination(boolean keepNames)
Gets all the named destinations as anHashMap
.java.util.HashMap
getNamedDestinationFromNames()
Gets the named destinations from the /Dests key in the catalog as anHashMap
.java.util.HashMap
getNamedDestinationFromNames(boolean keepNames)
Gets the named destinations from the /Dests key in the catalog as anHashMap
.java.util.HashMap
getNamedDestinationFromStrings()
Gets the named destinations from the /Names key in the catalog as anHashMap
.static Rectangle
getNormalizedRectangle(PdfArray box)
Normalizes aRectangle
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.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 dictionaryRectangle
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 aPdfObject
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 aPdfObject
resolving an indirect reference if needed.protected PdfReaderInstance
getPdfReaderInstance(PdfWriter writer)
char
getPdfVersion()
Gets the PDF version.int
getPermissions()
Gets the encryption permissions.PRIndirectReference
getPRIndirectReference(PdfObject obj)
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 java.lang.String
getSubsetPrefix(PdfDictionary dic)
PdfDictionary
getTrailer()
Gets the trailer dictionaryint
getXrefSize()
Gets the number of xref objects.boolean
is128Key()
Returnstrue
if the PDF has a 128 bit key encryption.boolean
isAppendable()
Getter for property appendable.boolean
isEncrypted()
Returnstrue
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, java.util.HashMap 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)
private PdfDictionary
rebuildPages()
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, java.util.HashMap names)
void
resetLastXrefPartial()
void
resetReleasePage()
void
selectPages(java.lang.String ranges)
Selects the pages to keep in the document.void
selectPages(java.util.List pagesToKeep)
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.
-
-
-
Field Detail
-
pageInhCandidates
static final PdfName[] pageInhCandidates
-
vpnames
static final PdfName[] vpnames
-
vpints
static final int[] vpints
-
endstream
static final byte[] endstream
-
endobj
static final byte[] endobj
-
tokens
protected PRTokeniser tokens
-
xref
protected int[] xref
-
objStmMark
protected java.util.HashMap objStmMark
-
objStmToOffset
protected IntHashtable objStmToOffset
-
newXrefType
protected boolean newXrefType
-
xrefObj
private java.util.ArrayList xrefObj
-
rootPages
PdfDictionary rootPages
-
trailer
protected PdfDictionary trailer
-
catalog
public PdfDictionary catalog
-
pageRefs
protected PdfReader.PageRefs pageRefs
-
acroForm
protected PRAcroForm acroForm
-
acroFormParsed
protected boolean acroFormParsed
-
encrypted
public 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
-
ownerPasswordUsed
public boolean ownerPasswordUsed
-
strings
protected java.util.ArrayList 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(java.lang.String filename) throws java.io.IOException
Reads and parses a PDF document.- Parameters:
filename
- the file name of the document- Throws:
java.io.IOException
- on error
-
PdfReader
public PdfReader(java.lang.String filename, byte[] ownerPassword) throws java.io.IOException
Reads 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(byte[] pdfIn) throws java.io.IOException
Reads 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.IOException
Reads 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.net.URL url) throws java.io.IOException
Reads 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.IOException
Reads 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.IOException
Reads and parses a PDF document.- Parameters:
is
- theInputStream
containing 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.IOException
Reads and parses a PDF document.- Parameters:
is
- theInputStream
containing the document. The stream is read to the end but is not closed- 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. The pdf is left open but may be closed at any time withPdfReader.close()
, reopen is automatic.- Parameters:
raf
- the document locationownerPassword
- the password ornull
for no password- Throws:
java.io.IOException
- on error
-
-
Method Detail
-
getSafeFile
public RandomAccessFileOrArray getSafeFile() throws java.io.IOException
Gets a new file instance of the original PDF document.- Returns:
- a new file instance of the original PDF document
- Throws:
java.io.IOException
-
getPdfReaderInstance
protected PdfReaderInstance getPdfReaderInstance(PdfWriter writer) throws java.io.IOException
- Throws:
java.io.IOException
-
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
public int getPageRotation(PdfDictionary page)
-
getPageSizeWithRotation
public Rectangle getPageSizeWithRotation(int index)
Gets the page size, taking rotation into account. This is aRectangle
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
-
getCropBox
public Rectangle getCropBox(PdfDictionary page)
-
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
-
getBoxSize
public Rectangle getBoxSize(PdfDictionary page, java.lang.String boxName)
-
getBoxSize
public Rectangle getBoxSize(PdfDictionary page, PdfName boxName)
-
getInfo
public java.util.HashMap getInfo()
Returns the content of the document information dictionary as aHashMap
ofString
.- Returns:
- content of the document information dictionary
-
getNormalizedRectangle
public static Rectangle getNormalizedRectangle(PdfArray box)
Normalizes aRectangle
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 java.io.IOException
- Throws:
java.io.IOException
-
readPdfPartial
protected void readPdfPartial() throws java.io.IOException
- 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 aPdfObject
resolving an indirect reference if needed.- Parameters:
obj
- thePdfObject
to read- Returns:
- the resolved
PdfObject
-
getPdfObjectRelease
public static PdfObject getPdfObjectRelease(PdfObject obj, PdfObject parent)
Reads aPdfObject
resolving an indirect reference if needed. If the reader was opened in partial mode the object will be released to save memory.- Parameters:
obj
- thePdfObject
to 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
-
rebuildPages
private PdfDictionary rebuildPages()
-
findOrphanPages
private PdfArray findOrphanPages()
-
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(int 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
-
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
-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 java.io.IOException
Gets 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 byte[] getPageContent(int pageNum) throws java.io.IOException
Gets 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)
-
getPRIndirectReference
public PRIndirectReference getPRIndirectReference(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 first- Since:
- 2.1.3 (the method already existed without param compressionLevel)
-
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:
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 java.io.IOException
Gets the XML metadata.- Returns:
- the XML metadata
- Throws:
java.io.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()
Returnstrue
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 inPdfWriter.setEncryption()
.- Returns:
- the encryption permissions
-
is128Key
public boolean is128Key()
Returnstrue
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 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 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 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 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
-
getNamedDestinationFromNames
public java.util.HashMap 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 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.
-
iterateBookmarks
private void iterateBookmarks(PdfObject outlineRef, java.util.HashMap 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 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 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 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.IOException
Gets 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 pagesToKeep)
Selects the pages to keep in the document. The pages are described as aList
ofInteger
. 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 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:
addViewerPreference
in interfacePdfViewerPreferences
- Parameters:
key
- a key for a viewer preferencevalue
- a value for the viewer preference- See Also:
PdfViewerPreferences.addViewerPreference(com.gitlab.pdftk_java.com.lowagie.text.pdf.PdfName, com.gitlab.pdftk_java.com.lowagie.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.
-
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:
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()
-
-