class representing a PDF document.
The document is built up by calling various methods and then finally
output to given filehandle using output method.
A PDF document consists of a series of numbered objects preceded by a
header and followed by an xref table and trailer. The xref table
allows for quick access to objects by listing their character
positions within the document. For this reason the PDF document must
keep track of the character position of each object. The document
also keeps direct track of the /Root, /Info and /Resources objects.
Modified by Mark Lillywhite, mark-fop@inomial.com. The changes
involve: ability to output pages one-at-a-time in a streaming
fashion (rather than storing them all for output at the end);
ability to write the /Pages object after writing the rest
of the document; ability to write to a stream and flush
the object list; enhanced trailer output; cleanups.
ENCODING
public static final String ENCODING
the encoding to use when converting strings to PDF commandos.
PDF_VERSION_1_3
public static final int PDF_VERSION_1_3
Integer constant to represent PDF 1.3
PDF_VERSION_1_4
public static final int PDF_VERSION_1_4
Integer constant to represent PDF 1.4
destinations
protected List destinations
List of Destinations.
encryption
protected PDFEncryption encryption
the documents encryption, if exists
filespecs
protected List filespecs
List of FileSpecs.
filterMap
protected Map filterMap
The filter map.
fontMap
protected Map fontMap
the Font Map.
functions
protected List functions
List of functions.
gotoremotes
protected List gotoremotes
List of GoToRemotes.
gotos
protected List gotos
List of GoTos.
gstates
protected List gstates
List of PDFGState objects.
info
protected PDFInfo info
the /Info object
links
protected List links
List of Links.
location
protected List location
the character position of each object
objectcount
protected int objectcount
the counter for object numbering
objects
protected List objects
the objects themselves
patternCount
protected int patternCount
the counter for Pattern name numbering (e.g. 'Pattern1')
patterns
protected List patterns
List of patterns.
pdfProfile
protected PDFProfile pdfProfile
Indicates which PDF profiles are active (PDF/A, PDF/X etc.)
pdfVersion
protected int pdfVersion
Indicates what PDF version is active
position
protected int position
the current character position
resources
protected PDFResources resources
the /Resources object
root
protected PDFRoot root
the /Root object
shadingCount
protected int shadingCount
the counter for Shading name numbering
shadings
protected List shadings
List of shadings.
xObjectCount
protected int xObjectCount
the counter for XObject numbering
xObjectsMap
protected Map xObjectsMap
the XObjects Map.
Should be modified (works only for image subtype)
xref
protected int xref
character position of xref table
addDestination
public void addDestination(PDFDestination destination)
Adds a destination to the document.
destination
- the destination object
addFormXObject
public PDFFormXObject addFormXObject(PDFResourceContext res,
PDFStream cont,
PDFReference formres,
String key)
Add a form XObject to the PDF document.
This adds a Form XObject to the PDF objects.
If a Form XObject with the same key already exists it will return the
old PDFFormXObject.
res
- the PDF resource context to add to, may be nullcont
- the PDF Stream contents of the Form XObjectformres
- a reference to the PDF Resources for the Form XObject datakey
- the key for the object
- the PDF Form XObject that references the PDF data
addImage
public PDFImageXObject addImage(PDFResourceContext res,
PDFImage img)
Add an image to the PDF document.
This adds an image to the PDF objects.
If an image with the same key already exists it will return the
old PDFXObject.
res
- the PDF resource context to add to, may be nullimg
- the PDF image to add
- the PDF XObject that references the PDF image data
addObject
public void addObject(PDFObject obj)
Adds an PDFObject to this document. The object must have a object number
assigned.
addTrailerObject
public void addTrailerObject(PDFObject obj)
Add trailer object.
Adds an object to the list of trailer objects.
obj
- the PDF object to add
applyEncryption
public void applyEncryption(AbstractPDFStream stream)
Apply the encryption filter to a PDFStream if encryption is enabled.
stream
- PDFStream to encrypt
assignObjectNumber
public void assignObjectNumber(PDFObject obj)
Assigns the PDFObject a object number and sets the parent of the
PDFObject to this PDFDocument.
obj
- PDFObject to assign a number to
encode
public static byte[] encode(String text)
Converts text to a byte array for writing to a PDF file.
text
- text to convert/encode
- byte[] the resulting byte array
findDestination
protected PDFDestination findDestination(PDFDestination compare)
Finds a named destination.
compare
- reference object to use as search template
- the link if found, null otherwise
findFileSpec
protected PDFFileSpec findFileSpec(PDFFileSpec compare)
Finds a file spec.
compare
- reference object to use as search template
- the file spec if found, null otherwise
findFont
protected PDFFont findFont(String fontname)
Finds a font.
fontname
- name of the font
- PDFFont the requested font, null if it wasn't found
findFunction
protected PDFFunction findFunction(PDFFunction compare)
Looks through the registered functions to see if one that is equal to
a reference object exists
compare
- reference object
- the function if it was found, null otherwise
findGState
protected PDFGState findGState(PDFGState wanted,
PDFGState current)
Looks for an existing GState to use
wanted
- requested featurescurrent
- currently active features
- PDFGState the GState if found, null otherwise
findGoTo
protected PDFGoTo findGoTo(PDFGoTo compare)
Finds a goto.
compare
- reference object to use as search template
- the goto if found, null otherwise
findGoToRemote
protected PDFGoToRemote findGoToRemote(PDFGoToRemote compare)
Finds a goto remote.
compare
- reference object to use as search template
- the goto remote if found, null otherwise
findLink
protected PDFLink findLink(PDFLink compare)
Finds a link.
compare
- reference object to use as search template
- the link if found, null otherwise
findPattern
protected PDFPattern findPattern(PDFPattern compare)
Find a previous pattern.
The problem with this is for tiling patterns the pattern
data stream is stored and may use up memory, usually this
would only be a small amount of data.
compare
- reference object
- the shading if it was found, null otherwise
findShading
protected PDFShading findShading(PDFShading compare)
Looks through the registered shadings to see if one that is equal to
a reference object exists
compare
- reference object
- the shading if it was found, null otherwise
getColorSpace
public int getColorSpace()
Get the color space.
getDestinationList
public List getDestinationList()
Gets the list of named destinations.
- the list of named destinations.
getDests
public PDFDests getDests()
Gets the PDFDests object (which represents the /Dests entry).
- the PDFDests object (which represents the /Dests entry).
getEncryption
public PDFEncryption getEncryption()
Returns the active Encryption object.
getFactory
public PDFFactory getFactory()
Returns the factory for PDF objects.
getFilterMap
public Map getFilterMap()
Get the filter map used for filters in this document.
- the map of filters being used
getFontMap
public Map getFontMap()
Get the font map for this document.
- the map of fonts used in this document
getIDEntry
protected String getIDEntry()
- the "ID" entry for the file trailer
getImage
public PDFImageXObject getImage(String key)
Use getXObject instead (so forms are treated in the same way)
Get an image from the image map.
key
- the image key to look for
- the image or PDFXObject for the key if found
getInfo
public PDFInfo getInfo()
Get the pdf info object for this document.
- the PDF Info object for this document
getOutlineRoot
public PDFOutline getOutlineRoot()
Get the root Outlines object. This method does not write
the outline to the PDF document, it simply creates a
reference for later.
- the PDF Outline root object
getPDFVersion
public int getPDFVersion()
- the integer representing the active PDF version (one of PDFDocument.PDF_VERSION_*)
getPDFVersionString
public String getPDFVersionString()
- the String representing the active PDF version
getPages
public PDFPages getPages()
Returns the PDFPages object associated with the root object.
getProfile
public PDFProfile getProfile()
- the PDF profile currently active.
getResources
public PDFResources getResources()
get the /Resources object for the document
getRoot
public PDFRoot getRoot()
Get the PDF root object.
getWriterFor
public static Writer getWriterFor(OutputStream out)
Creates and returns a Writer object wrapping the given OutputStream. The Writer is
buffered to reduce the number of calls to the encoding converter so don't forget
to flush()
the Writer after use or before writing directly to the
underlying OutputStream.
out
- the OutputStream to write to
getXObject
public PDFXObject getXObject(String key)
Get an XObject from the image map.
key
- the XObject key to look for
- the PDFXObject for the key if found
hasDestinations
public boolean hasDestinations()
Gets whether the document has named destinations.
- whether the document has named destinations.
isEncodingOnTheFly
public boolean isEncodingOnTheFly()
Indicates whether stream encoding on-the-fly is enabled. If enabled
stream can be serialized without the need for a buffer to merely
calculate the stream length.
- boolean true if on-the-fly encoding is enabled
isEncryptionActive
public boolean isEncryptionActive()
Indicates whether encryption is active for this PDF or not.
- boolean True if encryption is active
output
public void output(OutputStream stream)
throws IOException
write the entire document out
stream
- the OutputStream to output the document to
outputHeader
public void outputHeader(OutputStream stream)
throws IOException
Write the PDF header.
This method must be called prior to formatting
and outputting AreaTrees.
stream
- the OutputStream to write the header to
outputTrailer
public void outputTrailer(OutputStream stream)
throws IOException
write the trailer
stream
- the OutputStream to write the trailer to
registerObject
public PDFObject registerObject(PDFObject obj)
Registers a PDFObject in this PDF document. The PDF is assigned a new
object number.
- PDFObject the PDFObject added (its object number set)
resolveURI
protected InputStream resolveURI(String uri)
throws java.io.FileNotFoundException
Resolve a URI.
- the InputStream from the URI.
setColorSpace
public void setColorSpace(int theColorspace)
Set the color space.
This is used when creating gradients.
theColorspace
- the new color space
setCreationDate
public void setCreationDate(Date date)
Set the creation date of the document.
date
- Date to be stored as creation date in the PDF.
setCreator
public void setCreator(String creator)
Set the creator of the document.
creator
- string indicating application creating the document
setEncryption
public void setEncryption(PDFEncryptionParams params)
Enables PDF encryption.
params
- The encryption parameters for the pdf file
setFilterMap
public void setFilterMap(Map map)
Set the filter map to use for filters in this document.
map
- the map of filter lists for each stream type
setProducer
public void setProducer(String producer)
set the producer of the document
producer
- string indicating application producing the PDF