public class COSWriter extends Object implements ICOSVisitor, Closeable
Modifier and Type | Field and Description |
---|---|
static byte[] |
ARRAY_CLOSE
The array close token.
|
static byte[] |
ARRAY_OPEN
The array open token.
|
static byte[] |
COMMENT
The start to a PDF comment.
|
static byte[] |
DICT_CLOSE
The dictionary close token.
|
static byte[] |
DICT_OPEN
The dictionary open token.
|
static byte[] |
ENDOBJ
The end object token.
|
static byte[] |
ENDSTREAM
The close stream token.
|
static byte[] |
EOF
The EOF constant.
|
static byte[] |
GARBAGE
Garbage bytes used to create the PDF header.
|
static byte[] |
OBJ
The starting object token.
|
static byte[] |
REFERENCE
The reference token.
|
static byte[] |
SPACE
space character.
|
static byte[] |
STARTXREF
The start xref token.
|
static byte[] |
STREAM
The open stream token.
|
static byte[] |
TRAILER
The trailer token.
|
static byte[] |
VERSION
The output version of the PDF.
|
static byte[] |
XREF
The XREF token.
|
static byte[] |
XREF_FREE
The xref free token.
|
static byte[] |
XREF_USED
The xref used token.
|
Constructor and Description |
---|
COSWriter(OutputStream outputStream)
COSWriter constructor.
|
COSWriter(OutputStream outputStream,
RandomAccessRead inputData)
COSWriter constructor for incremental updates.
|
COSWriter(OutputStream outputStream,
RandomAccessRead inputData,
Set<COSDictionary> objectsToWrite)
Constructor for incremental updates with a list of objects to write.
|
Modifier and Type | Method and Description |
---|---|
protected void |
addXRefEntry(COSWriterXRefEntry entry)
add an entry in the x ref table for later dump.
|
void |
close()
This will close the stream.
|
protected void |
doWriteBody(COSDocument doc)
This will write the body of the document.
|
protected void |
doWriteHeader(COSDocument doc)
This will write the header to the PDF document.
|
void |
doWriteObject(COSBase obj)
This will write a COS object.
|
protected void |
doWriteTrailer(COSDocument doc)
This will write the trailer to the PDF document.
|
InputStream |
getDataToSign()
Return the stream of PDF data to be signed.
|
protected long |
getNumber()
This will get the current object number.
|
Map<COSBase,COSObjectKey> |
getObjectKeys()
This will get all available object keys.
|
protected OutputStream |
getOutput()
This will get the output stream.
|
protected COSStandardOutputStream |
getStandardOutput()
This will get the standard output stream.
|
protected long |
getStartxref()
This will get the current start xref.
|
protected List<COSWriterXRefEntry> |
getXRefEntries()
This will get the xref entries.
|
protected Long[] |
getXRefRanges(List<COSWriterXRefEntry> xRefEntriesList)
check the xref entries and write out the ranges.
|
protected void |
setNumber(long newNumber)
This will set the current object number.
|
protected void |
setStartxref(long newStartxref)
This will set the start xref.
|
Object |
visitFromArray(COSArray obj)
Notification of visit to Array object.
|
Object |
visitFromBoolean(COSBoolean obj)
Notification of visit to boolean object.
|
Object |
visitFromDictionary(COSDictionary obj)
Notification of visit to dictionary object.
|
Object |
visitFromDocument(COSDocument doc)
Notification of visit to document object.
|
Object |
visitFromFloat(COSFloat obj)
Notification of visit to float object.
|
Object |
visitFromInt(COSInteger obj)
Notification of visit to integer object.
|
Object |
visitFromName(COSName obj)
Notification of visit to name object.
|
Object |
visitFromNull(COSNull obj)
Notification of visit to null object.
|
Object |
visitFromStream(COSStream obj)
Notification of visit to stream object.
|
Object |
visitFromString(COSString obj)
Notification of visit to string object.
|
void |
write(COSDocument doc)
This will write the pdf document.
|
void |
write(FDFDocument doc)
This will write the fdf document.
|
void |
write(PDDocument doc)
This will write the pdf document.
|
void |
write(PDDocument doc,
SignatureInterface signInterface)
This will write the pdf document.
|
void |
writeExternalSignature(byte[] cmsSignature)
Write externally created signature of PDF data obtained via
getDataToSign() method. |
void |
writeReference(COSBase obj)
visitFromObjRef method comment.
|
static void |
writeString(byte[] bytes,
OutputStream output)
This will output the given text/byte getString as a PDF object.
|
static void |
writeString(COSString string,
OutputStream output)
This will output the given byte getString as a PDF object.
|
public static final byte[] DICT_OPEN
public static final byte[] DICT_CLOSE
public static final byte[] SPACE
public static final byte[] COMMENT
public static final byte[] VERSION
public static final byte[] GARBAGE
public static final byte[] EOF
public static final byte[] REFERENCE
public static final byte[] XREF
public static final byte[] XREF_FREE
public static final byte[] XREF_USED
public static final byte[] TRAILER
public static final byte[] STARTXREF
public static final byte[] OBJ
public static final byte[] ENDOBJ
public static final byte[] ARRAY_OPEN
public static final byte[] ARRAY_CLOSE
public static final byte[] STREAM
public static final byte[] ENDSTREAM
public COSWriter(OutputStream outputStream)
outputStream
- The output stream to write the PDF. It will be closed when this object is
closed.public COSWriter(OutputStream outputStream, RandomAccessRead inputData) throws IOException
COSUpdateInfo.isNeedToBeUpdated()
set, starting from the document catalog. For
signatures this is taken care by PDFBox itself.outputStream
- output stream where the new PDF data will be written. It will be closed
when this object is closed.inputData
- random access read containing source PDF dataIOException
- if something went wrongpublic COSWriter(OutputStream outputStream, RandomAccessRead inputData, Set<COSDictionary> objectsToWrite) throws IOException
COSUpdateInfo.isNeedToBeUpdated()
set so the incremental update gets smaller. Only
dictionaries are supported; if you need to update other objects classes, then add their
parent dictionary.outputStream
- output stream where the new PDF data will be written. It will be closed
when this object is closed.inputData
- random access read containing source PDF data.objectsToWrite
- objects that must be part of the incremental saving.IOException
- if something went wrongprotected void addXRefEntry(COSWriterXRefEntry entry)
entry
- The new entry to add.public void close() throws IOException
close
in interface Closeable
close
in interface AutoCloseable
IOException
- If the underlying stream throws an exception.protected long getNumber()
public Map<COSBase,COSObjectKey> getObjectKeys()
protected OutputStream getOutput()
protected COSStandardOutputStream getStandardOutput()
protected long getStartxref()
protected List<COSWriterXRefEntry> getXRefEntries()
protected void setNumber(long newNumber)
newNumber
- The new object number.protected void setStartxref(long newStartxref)
newStartxref
- The new start xref attribute.protected void doWriteBody(COSDocument doc) throws IOException
doc
- The document to write the body for.IOException
- If there is an error writing the data.public void doWriteObject(COSBase obj) throws IOException
obj
- The object to write.IOException
- if the output cannot be writtenprotected void doWriteHeader(COSDocument doc) throws IOException
doc
- The document to get the data from.IOException
- If there is an error writing to the stream.protected void doWriteTrailer(COSDocument doc) throws IOException
doc
- The document to create the trailer for.IOException
- If there is an IOError while writing the document.public InputStream getDataToSign() throws IOException
write(PDDocument)
method should have been called prior.
The created signature should be set using writeExternalSignature(byte[])
.
When SignatureInterface
instance is used, COSWriter obtains and writes the signature itself.
IllegalStateException
- if PDF is not prepared for external signingIOException
- if input data is closedpublic void writeExternalSignature(byte[] cmsSignature) throws IOException
getDataToSign()
method.cmsSignature
- CMS signature byte arrayIllegalStateException
- if PDF is not prepared for external signingIOException
- if source data stream is closedprotected Long[] getXRefRanges(List<COSWriterXRefEntry> xRefEntriesList)
example: 0 1 2 5 6 7 8 10
will create a array with follow ranges
0 3 5 4 10 1
this mean that the element 0 is followed by two other related numbers that represent a cluster of the size 3. 5 is follow by three other related numbers and create a cluster of size 4. etc.
xRefEntriesList
- list with the xRef entries that was writtenpublic Object visitFromArray(COSArray obj) throws IOException
ICOSVisitor
visitFromArray
in interface ICOSVisitor
obj
- The Object that is being visited.IOException
- If there is an error while visiting this object.public Object visitFromBoolean(COSBoolean obj) throws IOException
ICOSVisitor
visitFromBoolean
in interface ICOSVisitor
obj
- The Object that is being visited.IOException
- If there is an error while visiting this object.public Object visitFromDictionary(COSDictionary obj) throws IOException
ICOSVisitor
visitFromDictionary
in interface ICOSVisitor
obj
- The Object that is being visited.IOException
- If there is an error while visiting this object.public Object visitFromDocument(COSDocument doc) throws IOException
ICOSVisitor
visitFromDocument
in interface ICOSVisitor
doc
- The Object that is being visited.IOException
- If there is an error while visiting this object.public Object visitFromFloat(COSFloat obj) throws IOException
ICOSVisitor
visitFromFloat
in interface ICOSVisitor
obj
- The Object that is being visited.IOException
- If there is an error while visiting this object.public Object visitFromInt(COSInteger obj) throws IOException
ICOSVisitor
visitFromInt
in interface ICOSVisitor
obj
- The Object that is being visited.IOException
- If there is an error while visiting this object.public Object visitFromName(COSName obj) throws IOException
ICOSVisitor
visitFromName
in interface ICOSVisitor
obj
- The Object that is being visited.IOException
- If there is an error while visiting this object.public Object visitFromNull(COSNull obj) throws IOException
ICOSVisitor
visitFromNull
in interface ICOSVisitor
obj
- The Object that is being visited.IOException
- If there is an error while visiting this object.public void writeReference(COSBase obj) throws IOException
obj
- The object that is being visited.IOException
- If there is an exception while visiting this object.public Object visitFromStream(COSStream obj) throws IOException
ICOSVisitor
visitFromStream
in interface ICOSVisitor
obj
- The Object that is being visited.IOException
- If there is an error while visiting this object.public Object visitFromString(COSString obj) throws IOException
ICOSVisitor
visitFromString
in interface ICOSVisitor
obj
- The Object that is being visited.IOException
- If there is an error while visiting this object.public void write(COSDocument doc) throws IOException
doc
- The document to write.IOException
- If an error occurs while generating the data.public void write(PDDocument doc) throws IOException
writeExternalSignature(byte[])
should be invoked to set signature after calling this
method.doc
- The document to write.IOException
- If an error occurs while generating the data.public void write(PDDocument doc, SignatureInterface signInterface) throws IOException
writeExternalSignature(byte[])
should be invoked to set signature after calling this
method.doc
- The document to write.signInterface
- class to be used for signing; null
if external signing would be
performed or there will be no signing at allIOException
- If an error occurs while generating the data.IllegalStateException
- If the document has an encryption dictionary but no protection
policy.public void write(FDFDocument doc) throws IOException
doc
- The document to write.IOException
- If an error occurs while generating the data.public static void writeString(COSString string, OutputStream output) throws IOException
string
- COSString to be writtenoutput
- The stream to write to.IOException
- If there is an error writing to the stream.public static void writeString(byte[] bytes, OutputStream output) throws IOException
bytes
- byte array representation of a string to be writtenoutput
- The stream to write to.IOException
- If there is an error writing to the stream.Copyright © 2002–2024 The Apache Software Foundation. All rights reserved.