Package org.apache.fop.pdf
Class AbstractPDFStream
- java.lang.Object
-
- org.apache.fop.pdf.PDFObject
-
- org.apache.fop.pdf.AbstractPDFStream
-
- All Implemented Interfaces:
PDFWritable
- Direct Known Subclasses:
AbstractPDFFontStream
,PDFStream
,PDFXObject
public abstract class AbstractPDFStream extends PDFObject
This is an abstract base class for PDF streams.
-
-
Field Summary
Fields Modifier and Type Field Description private PDFDictionary
dictionary
private boolean
encodeOnTheFly
private PDFFilterList
filters
The filters that should be appliedprivate PDFNumber
refLength
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractPDFStream()
protected
AbstractPDFStream(boolean encodeOnTheFly)
protected
AbstractPDFStream(PDFDictionary dictionary)
protected
AbstractPDFStream(PDFDictionary dictionary, boolean encodeOnTheFly)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected int
encodeAndWriteStream(java.io.OutputStream out, PDFNumber refLength)
Encodes and writes a stream directly to an OutputStream.protected StreamCache
encodeStream()
Encodes the raw data stream for output to a PDF file.java.lang.Object
get(java.lang.String key)
void
getChildren(java.util.Set<PDFObject> children)
protected java.lang.String
getDefaultFilterName()
Returns the name of a suitable filter for this PDF object.protected PDFDictionary
getDictionary()
PDFFilterList
getFilterList()
Returns the associated filter list.protected abstract int
getSizeHint()
Returns a value that hints at the size of the encoded stream.protected boolean
multipleFiltersAllowed()
Whether multiple filters can be applied.int
output(java.io.OutputStream stream)
Overload the base object method so we don't have to copy byte arrays around so much Write the PDF represention of this objectprotected abstract void
outputRawStreamData(java.io.OutputStream out)
Sends the raw stream data to the target OutputStream.protected int
outputStreamData(StreamCache encodedStream, java.io.OutputStream out)
Output just the stream data enclosed by stream/endstream markersprotected void
populateStreamDict(java.lang.Object lengthEntry)
Populates the dictionary with all necessary entries for the stream.protected void
prepareImplicitFilters()
Prepares implicit filters (such as the DCTFilter for JPEG images).void
put(java.lang.String key, java.lang.Object value)
Puts the given object in the dictionary associated to this stream.void
registerChildren()
void
setDocument(PDFDocument doc)
Sets the parent PDFDocument.protected void
setupFilterList()
Sets up the default filters for this stream if they haven't been set from outside.-
Methods inherited from class org.apache.fop.pdf.PDFObject
contentEquals, encode, encodeBinaryToHexString, encodeString, encodeText, formatObject, getDocument, getDocumentSafely, getGeneration, getObjectID, getObjectNumber, getParent, hasObjectNumber, makeReference, outputInline, referencePDF, setObjectNumber, setObjectNumber, setObjectNumber, setParent, toPDF, toPDFString
-
-
-
-
Field Detail
-
dictionary
private final PDFDictionary dictionary
-
filters
private PDFFilterList filters
The filters that should be applied
-
encodeOnTheFly
private boolean encodeOnTheFly
-
refLength
private PDFNumber refLength
-
-
Constructor Detail
-
AbstractPDFStream
protected AbstractPDFStream()
-
AbstractPDFStream
protected AbstractPDFStream(PDFDictionary dictionary)
-
AbstractPDFStream
protected AbstractPDFStream(boolean encodeOnTheFly)
-
AbstractPDFStream
protected AbstractPDFStream(PDFDictionary dictionary, boolean encodeOnTheFly)
-
-
Method Detail
-
getDictionary
protected final PDFDictionary getDictionary()
-
get
public java.lang.Object get(java.lang.String key)
-
put
public void put(java.lang.String key, java.lang.Object value)
Puts the given object in the dictionary associated to this stream.- Parameters:
key
- the key in the dictionaryvalue
- the value to store
-
setupFilterList
protected void setupFilterList()
Sets up the default filters for this stream if they haven't been set from outside.
-
getDefaultFilterName
protected java.lang.String getDefaultFilterName()
Returns the name of a suitable filter for this PDF object.- Returns:
- the default filter
- See Also:
PDFFilterList
-
getFilterList
public PDFFilterList getFilterList()
Returns the associated filter list.- Returns:
- the filter list
-
getSizeHint
protected abstract int getSizeHint() throws java.io.IOException
Returns a value that hints at the size of the encoded stream. This is used to optimize buffer allocation so fewer buffer reallocations are necessary.- Returns:
- an estimated size (0 if no hint can be given)
- Throws:
java.io.IOException
- in case of an I/O problem
-
outputRawStreamData
protected abstract void outputRawStreamData(java.io.OutputStream out) throws java.io.IOException
Sends the raw stream data to the target OutputStream.- Parameters:
out
- OutputStream to write to- Throws:
java.io.IOException
- In case of an I/O problem
-
outputStreamData
protected int outputStreamData(StreamCache encodedStream, java.io.OutputStream out) throws java.io.IOException
Output just the stream data enclosed by stream/endstream markers- Parameters:
encodedStream
- already encoded/filtered stream to writeout
- OutputStream to write to- Returns:
- int number of bytes written
- Throws:
java.io.IOException
- in case of an I/O problem
-
encodeStream
protected StreamCache encodeStream() throws java.io.IOException
Encodes the raw data stream for output to a PDF file.- Returns:
- the encoded stream
- Throws:
java.io.IOException
- in case of an I/O problem
-
encodeAndWriteStream
protected int encodeAndWriteStream(java.io.OutputStream out, PDFNumber refLength) throws java.io.IOException
Encodes and writes a stream directly to an OutputStream. The length of the stream, in this case, is set on a PDFNumber object that has to be prepared beforehand.- Parameters:
out
- OutputStream to write torefLength
- PDFNumber object to receive the stream length- Returns:
- number of bytes written (header and trailer included)
- Throws:
java.io.IOException
- in case of an I/O problem
-
output
public int output(java.io.OutputStream stream) throws java.io.IOException
Overload the base object method so we don't have to copy byte arrays around so much Write the PDF represention of this object
-
setDocument
public void setDocument(PDFDocument doc)
Description copied from class:PDFObject
Sets the parent PDFDocument.- Overrides:
setDocument
in classPDFObject
- Parameters:
doc
- the PDFDocument.
-
populateStreamDict
protected void populateStreamDict(java.lang.Object lengthEntry)
Populates the dictionary with all necessary entries for the stream. Override this method if you need additional entries.- Parameters:
lengthEntry
- value for the /Length entry
-
prepareImplicitFilters
protected void prepareImplicitFilters()
Prepares implicit filters (such as the DCTFilter for JPEG images). You must make sure that the appropriate filters are in the filter list at the right places.
-
multipleFiltersAllowed
protected boolean multipleFiltersAllowed()
Whether multiple filters can be applied.- Returns:
- true if multiple filters allowed
-
getChildren
public void getChildren(java.util.Set<PDFObject> children)
- Overrides:
getChildren
in classPDFObject
-
registerChildren
public void registerChildren()
-
-