Class COSWriter

    • Field Detail

      • DICT_OPEN

        public static final byte[] DICT_OPEN
        The dictionary open token.
      • DICT_CLOSE

        public static final byte[] DICT_CLOSE
        The dictionary close token.
      • SPACE

        public static final byte[] SPACE
        space character.
      • COMMENT

        public static final byte[] COMMENT
        The start to a PDF comment.
      • VERSION

        public static final byte[] VERSION
        The output version of the PDF.
      • GARBAGE

        public static final byte[] GARBAGE
        Garbage bytes used to create the PDF header.
      • EOF

        public static final byte[] EOF
        The EOF constant.
      • REFERENCE

        public static final byte[] REFERENCE
        The reference token.
      • XREF

        public static final byte[] XREF
        The XREF token.
      • XREF_FREE

        public static final byte[] XREF_FREE
        The xref free token.
      • XREF_USED

        public static final byte[] XREF_USED
        The xref used token.
      • TRAILER

        public static final byte[] TRAILER
        The trailer token.
      • STARTXREF

        public static final byte[] STARTXREF
        The start xref token.
      • OBJ

        public static final byte[] OBJ
        The starting object token.
      • ENDOBJ

        public static final byte[] ENDOBJ
        The end object token.
      • ARRAY_OPEN

        public static final byte[] ARRAY_OPEN
        The array open token.
      • ARRAY_CLOSE

        public static final byte[] ARRAY_CLOSE
        The array close token.
      • STREAM

        public static final byte[] STREAM
        The open stream token.
      • ENDSTREAM

        public static final byte[] ENDSTREAM
        The close stream token.
    • Constructor Detail

      • COSWriter

        public COSWriter​(OutputStream os)
        COSWriter constructor comment.
        Parameters:
        os - The wrapped output stream.
      • COSWriter

        public COSWriter​(OutputStream outputStream,
                         InputStream inputStream)
                  throws IOException
        COSWriter constructor for incremental updates.
        Parameters:
        outputStream - output stream where the new PDF data will be written
        inputStream - input stream containing source PDF data
        Throws:
        IOException - if something went wrong
    • Method Detail

      • addXRefEntry

        protected void addXRefEntry​(COSWriterXRefEntry entry)
        add an entry in the x ref table for later dump.
        Parameters:
        entry - The new entry to add.
      • getNumber

        protected long getNumber()
        This will get the current object number.
        Returns:
        The current object number.
      • getObjectKeys

        public Map<COSBase,COSObjectKey> getObjectKeys()
        This will get all available object keys.
        Returns:
        A map of all object keys.
      • getOutput

        protected OutputStream getOutput()
        This will get the output stream.
        Returns:
        The output stream.
      • getStandardOutput

        protected COSStandardOutputStream getStandardOutput()
        This will get the standard output stream.
        Returns:
        The standard output stream.
      • getStartxref

        protected long getStartxref()
        This will get the current start xref.
        Returns:
        The current start xref.
      • getXRefEntries

        protected List<COSWriterXRefEntry> getXRefEntries()
        This will get the xref entries.
        Returns:
        All available xref entries.
      • setNumber

        protected void setNumber​(long newNumber)
        This will set the current object number.
        Parameters:
        newNumber - The new object number.
      • setStartxref

        protected void setStartxref​(long newStartxref)
        This will set the start xref.
        Parameters:
        newStartxref - The new start xref attribute.
      • doWriteBody

        protected void doWriteBody​(COSDocument doc)
                            throws IOException
        This will write the body of the document.
        Parameters:
        doc - The document to write the body for.
        Throws:
        IOException - If there is an error writing the data.
      • doWriteObject

        public void doWriteObject​(COSBase obj)
                           throws IOException
        This will write a COS object.
        Parameters:
        obj - The object to write.
        Throws:
        IOException - if the output cannot be written
      • doWriteHeader

        protected void doWriteHeader​(COSDocument doc)
                              throws IOException
        This will write the header to the PDF document.
        Parameters:
        doc - The document to get the data from.
        Throws:
        IOException - If there is an error writing to the stream.
      • doWriteTrailer

        protected void doWriteTrailer​(COSDocument doc)
                               throws IOException
        This will write the trailer to the PDF document.
        Parameters:
        doc - The document to create the trailer for.
        Throws:
        IOException - If there is an IOError while writing the document.
      • getXRefRanges

        protected Long[] getXRefRanges​(List<COSWriterXRefEntry> xRefEntriesList)
        check the xref entries and write out the ranges. The format of the returned array is exactly the same as the pdf specification. See section 7.5.4 of ISO32000-1:2008, example 1 (page 40) for reference.

        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.

        Parameters:
        xRefEntriesList - list with the xRef entries that was written
        Returns:
        a integer array with the ranges
      • visitFromArray

        public Object visitFromArray​(COSArray obj)
                              throws IOException
        Description copied from interface: ICOSVisitor
        Notification of visit to Array object.
        Specified by:
        visitFromArray in interface ICOSVisitor
        Parameters:
        obj - The Object that is being visited.
        Returns:
        any Object depending on the visitor implementation, or null
        Throws:
        IOException - If there is an error while visiting this object.
      • visitFromBoolean

        public Object visitFromBoolean​(COSBoolean obj)
                                throws IOException
        Description copied from interface: ICOSVisitor
        Notification of visit to boolean object.
        Specified by:
        visitFromBoolean in interface ICOSVisitor
        Parameters:
        obj - The Object that is being visited.
        Returns:
        any Object depending on the visitor implementation, or null
        Throws:
        IOException - If there is an error while visiting this object.
      • visitFromDictionary

        public Object visitFromDictionary​(COSDictionary obj)
                                   throws IOException
        Description copied from interface: ICOSVisitor
        Notification of visit to dictionary object.
        Specified by:
        visitFromDictionary in interface ICOSVisitor
        Parameters:
        obj - The Object that is being visited.
        Returns:
        any Object depending on the visitor implementation, or null
        Throws:
        IOException - If there is an error while visiting this object.
      • visitFromDocument

        public Object visitFromDocument​(COSDocument doc)
                                 throws IOException
        Description copied from interface: ICOSVisitor
        Notification of visit to document object.
        Specified by:
        visitFromDocument in interface ICOSVisitor
        Parameters:
        doc - The Object that is being visited.
        Returns:
        any Object depending on the visitor implementation, or null
        Throws:
        IOException - If there is an error while visiting this object.
      • visitFromFloat

        public Object visitFromFloat​(COSFloat obj)
                              throws IOException
        Description copied from interface: ICOSVisitor
        Notification of visit to float object.
        Specified by:
        visitFromFloat in interface ICOSVisitor
        Parameters:
        obj - The Object that is being visited.
        Returns:
        any Object depending on the visitor implementation, or null
        Throws:
        IOException - If there is an error while visiting this object.
      • visitFromInt

        public Object visitFromInt​(COSInteger obj)
                            throws IOException
        Description copied from interface: ICOSVisitor
        Notification of visit to integer object.
        Specified by:
        visitFromInt in interface ICOSVisitor
        Parameters:
        obj - The Object that is being visited.
        Returns:
        any Object depending on the visitor implementation, or null
        Throws:
        IOException - If there is an error while visiting this object.
      • visitFromName

        public Object visitFromName​(COSName obj)
                             throws IOException
        Description copied from interface: ICOSVisitor
        Notification of visit to name object.
        Specified by:
        visitFromName in interface ICOSVisitor
        Parameters:
        obj - The Object that is being visited.
        Returns:
        any Object depending on the visitor implementation, or null
        Throws:
        IOException - If there is an error while visiting this object.
      • visitFromNull

        public Object visitFromNull​(COSNull obj)
                             throws IOException
        Description copied from interface: ICOSVisitor
        Notification of visit to null object.
        Specified by:
        visitFromNull in interface ICOSVisitor
        Parameters:
        obj - The Object that is being visited.
        Returns:
        any Object depending on the visitor implementation, or null
        Throws:
        IOException - If there is an error while visiting this object.
      • writeReference

        public void writeReference​(COSBase obj)
                            throws IOException
        visitFromObjRef method comment.
        Parameters:
        obj - The object that is being visited.
        Throws:
        IOException - If there is an exception while visiting this object.
      • visitFromStream

        public Object visitFromStream​(COSStream obj)
                               throws IOException
        Description copied from interface: ICOSVisitor
        Notification of visit to stream object.
        Specified by:
        visitFromStream in interface ICOSVisitor
        Parameters:
        obj - The Object that is being visited.
        Returns:
        any Object depending on the visitor implementation, or null
        Throws:
        IOException - If there is an error while visiting this object.
      • visitFromString

        public Object visitFromString​(COSString obj)
                               throws IOException
        Description copied from interface: ICOSVisitor
        Notification of visit to string object.
        Specified by:
        visitFromString in interface ICOSVisitor
        Parameters:
        obj - The Object that is being visited.
        Returns:
        any Object depending on the visitor implementation, or null
        Throws:
        IOException - If there is an error while visiting this object.
      • write

        public void write​(COSDocument doc)
                   throws IOException
        This will write the pdf document.
        Parameters:
        doc - The document to write.
        Throws:
        IOException - If an error occurs while generating the data.
      • write

        public void write​(PDDocument doc)
                   throws IOException
        This will write the pdf document.
        Parameters:
        doc - The document to write.
        Throws:
        IOException - If an error occurs while generating the data.
      • write

        public void write​(PDDocument doc,
                          SignatureInterface signInterface)
                   throws IOException
        This will write the pdf document.
        Parameters:
        doc - The document to write.
        signInterface - class to be used for signing
        Throws:
        IOException - If an error occurs while generating the data.
        IllegalStateException - If the document has an encryption dictionary but no protection policy.
      • write

        public void write​(FDFDocument doc)
                   throws IOException
        This will write the fdf document.
        Parameters:
        doc - The document to write.
        Throws:
        IOException - If an error occurs while generating the data.
      • writeString

        public static void writeString​(COSString string,
                                       OutputStream output)
                                throws IOException
        This will output the given byte getString as a PDF object.
        Parameters:
        string - COSString to be written
        output - The stream to write to.
        Throws:
        IOException - If there is an error writing to the stream.
      • writeString

        public static void writeString​(byte[] bytes,
                                       OutputStream output)
                                throws IOException
        This will output the given text/byte getString as a PDF object.
        Parameters:
        bytes - byte array representation of a string to be written
        output - The stream to write to.
        Throws:
        IOException - If there is an error writing to the stream.