Class PdfDocument

    • Field Detail

      • writer

        protected PdfWriter writer
        PdfWriter associated with the document. Not null if document opened either in writing or stamping mode.
      • reader

        protected PdfReader reader
        PdfReader associated with the document. Not null if document is opened either in reading or stamping mode.
      • xmpMetadata

        protected byte[] xmpMetadata
        XMP Metadata for the document.
      • catalog

        protected PdfCatalog catalog
        Document catalog.
      • pdfVersion

        protected PdfVersion pdfVersion
        Document version.
      • structParentIndex

        protected int structParentIndex
      • closeReader

        protected boolean closeReader
      • closeWriter

        protected boolean closeWriter
      • isClosing

        protected boolean isClosing
      • closed

        protected boolean closed
      • flushUnusedObjects

        protected boolean flushUnusedObjects
        flag determines whether to write unused objects to result document
    • Constructor Detail

      • PdfDocument

        public PdfDocument​(PdfReader reader)
        Open PDF document in reading mode.
        Parameters:
        reader - PDF reader.
      • PdfDocument

        public PdfDocument​(PdfReader reader,
                           DocumentProperties properties)
        Open PDF document in reading mode.
        Parameters:
        reader - PDF reader.
        properties - document properties
      • PdfDocument

        public PdfDocument​(PdfWriter writer)
        Open PDF document in writing mode. Document has no pages when initialized.
        Parameters:
        writer - PDF writer
      • PdfDocument

        public PdfDocument​(PdfWriter writer,
                           DocumentProperties properties)
        Open PDF document in writing mode. Document has no pages when initialized.
        Parameters:
        writer - PDF writer
        properties - document properties
      • PdfDocument

        public PdfDocument​(PdfReader reader,
                           PdfWriter writer)
        Opens PDF document in the stamping mode.
        Parameters:
        reader - PDF reader.
        writer - PDF writer.
      • PdfDocument

        public PdfDocument​(PdfReader reader,
                           PdfWriter writer,
                           StampingProperties properties)
        Open PDF document in stamping mode.
        Parameters:
        reader - PDF reader.
        writer - PDF writer.
        properties - properties of the stamping process
    • Method Detail

      • setXmpMetadata

        public void setXmpMetadata​(XMPMeta xmpMeta,
                                   SerializeOptions serializeOptions)
                            throws XMPException
        Sets the XMP Metadata.
        Parameters:
        xmpMeta - the xmpMetadata to set
        serializeOptions - serialization options
        Throws:
        XMPException - on serialization errors
      • setXmpMetadata

        protected void setXmpMetadata​(byte[] xmpMetadata)
        Use this method to set the XMP Metadata.
        Parameters:
        xmpMetadata - The xmpMetadata to set.
      • setXmpMetadata

        public void setXmpMetadata​(XMPMeta xmpMeta)
                            throws XMPException
        Sets the XMP Metadata.
        Parameters:
        xmpMeta - the xmpMetadata to set
        Throws:
        XMPException - on serialization errors
      • getXmpMetadata

        public byte[] getXmpMetadata()
        Gets XMPMetadata.
        Returns:
        the XMPMetadata
      • getXmpMetadata

        public byte[] getXmpMetadata​(boolean createNew)
        Gets XMPMetadata or create a new one.
        Parameters:
        createNew - if true, create a new empty XMPMetadata if it did not present.
        Returns:
        existed or newly created XMPMetadata byte array.
      • getPdfObject

        public PdfObject getPdfObject​(int objNum)
        Gets PdfObject by object number.
        Parameters:
        objNum - object number.
        Returns:
        PdfObject or null, if object not found.
      • getNumberOfPdfObjects

        public int getNumberOfPdfObjects()
        Get number of indirect objects in the document.
        Returns:
        number of indirect objects.
      • getPage

        public PdfPage getPage​(int pageNum)
        Gets the page by page number.
        Parameters:
        pageNum - page number.
        Returns:
        page by page number.
        Throws:
        PdfException - in case the page tree is broken
      • getFirstPage

        public PdfPage getFirstPage()
        Get the first page of the document.
        Returns:
        first page of the document.
      • getLastPage

        public PdfPage getLastPage()
        Gets the last page of the document.
        Returns:
        last page.
      • addNewPage

        public PdfPage addNewPage()
        Creates and adds new page to the end of document.
        Returns:
        added page
      • addNewPage

        public PdfPage addNewPage​(PageSize pageSize)
        Creates and adds new page with the specified page size.
        Parameters:
        pageSize - page size of the new page
        Returns:
        added page
      • addNewPage

        public PdfPage addNewPage​(int index)
        Creates and inserts new page to the document.
        Parameters:
        index - position to addPage page to
        Returns:
        inserted page
        Throws:
        PdfException - in case page is flushed
      • addNewPage

        public PdfPage addNewPage​(int index,
                                  PageSize pageSize)
        Creates and inserts new page to the document.
        Parameters:
        index - position to addPage page to
        pageSize - page size of the new page
        Returns:
        inserted page
        Throws:
        PdfException - in case page is flushed
      • addPage

        public PdfPage addPage​(PdfPage page)
        Adds page to the end of document.
        Parameters:
        page - page to add.
        Returns:
        added page.
        Throws:
        PdfException - in case page is flushed
      • addPage

        public PdfPage addPage​(int index,
                               PdfPage page)
        Inserts page to the document.
        Parameters:
        index - position to addPage page to
        page - page to addPage
        Returns:
        inserted page
        Throws:
        PdfException - in case page is flushed
      • getNumberOfPages

        public int getNumberOfPages()
        Gets number of pages of the document.
        Returns:
        number of pages.
      • getPageNumber

        public int getPageNumber​(PdfPage page)
        Gets page number by page.
        Parameters:
        page - the page.
        Returns:
        page number.
      • movePage

        public boolean movePage​(PdfPage page,
                                int insertBefore)
        Moves page to new place in same document with all it tag structure
        Parameters:
        page - page to be moved in document if present
        insertBefore - indicates before which page new one will be inserted to
        Returns:
        true if this document contained the specified page
      • movePage

        public void movePage​(int pageNumber,
                             int insertBefore)
        Moves page to new place in same document with all it tag structure
        Parameters:
        pageNumber - number of Page that will be moved
        insertBefore - indicates before which page new one will be inserted to
      • removePage

        public boolean removePage​(PdfPage page)
        Removes the first occurrence of the specified page from this document, if it is present. Returns true if this document contained the specified element (or equivalently, if this document changed as a result of the call).
        Parameters:
        page - page to be removed from this document, if present
        Returns:
        true if this document contained the specified page
      • removePage

        public void removePage​(int pageNum)
        Removes page from the document by page number.
        Parameters:
        pageNum - the one-based index of the PdfPage to be removed
      • getDocumentInfo

        public PdfDocumentInfo getDocumentInfo()
        Gets document information dictionary. info is lazy initialized. It will be initialized during the first call of this method.
        Returns:
        document information dictionary.
      • getDefaultPageSize

        public PageSize getDefaultPageSize()
        Gets default page size. New pages by default are created with this size.
        Returns:
        default page size
      • setDefaultPageSize

        public void setDefaultPageSize​(PageSize pageSize)
        Sets default page size. New pages by default will be created with this size.
        Parameters:
        pageSize - page size to be set as default
      • dispatchEvent

        public void dispatchEvent​(Event event,
                                  boolean delayed)
        Dispatches a delayed event. Sometimes event cannot be handled immediately because event handler has not been set yet. In this case event is placed into event ques of dispatcher and is waiting until handler is assigned.
        Specified by:
        dispatchEvent in interface IEventDispatcher
        Parameters:
        event - the Event to be dispatched
        delayed - flag whether Event delayed or not
      • hasEventHandler

        public boolean hasEventHandler​(String type)
        Checks if event dispatcher as an event handler assigned for a certain event type.
        Specified by:
        hasEventHandler in interface IEventDispatcher
        Parameters:
        type - a type of the Event
        Returns:
        true if event dispatcher as an event handler assigned for a certain event type
      • getWriter

        public PdfWriter getWriter()
        Gets PdfWriter associated with the document.
        Returns:
        PdfWriter associated with the document.
      • getReader

        public PdfReader getReader()
        Gets PdfReader associated with the document.
        Returns:
        PdfReader associated with the document.
      • isAppendMode

        public boolean isAppendMode()
        Returns true if the document is opened in append mode, and false otherwise.
        Returns:
        true if the document is opened in append mode, and false otherwise.
      • createNextIndirectReference

        public PdfIndirectReference createNextIndirectReference()
        Creates next available indirect reference.
        Returns:
        created indirect reference.
      • getPdfVersion

        public PdfVersion getPdfVersion()
        Gets PDF version.
        Returns:
        PDF version.
      • getCatalog

        public PdfCatalog getCatalog()
        Gets PDF catalog.
        Returns:
        PDF catalog.
      • isClosed

        public boolean isClosed()
        Gets close status of the document.
        Returns:
        true, if the document has already been closed, otherwise false.
      • isTagged

        public boolean isTagged()
        Gets tagged status of the document.
        Returns:
        true, if the document has tag structure, otherwise false.
      • setTagged

        public PdfDocument setTagged()
        Specifies that document shall contain tag structure. See ISO 32000-1, section 14.8 "Tagged PDF"
        Returns:
        this PdfDocument instance
      • getNextStructParentIndex

        public int getNextStructParentIndex()
        Gets next parent index of tagged document.
        Returns:
        -1 if document is not tagged, or >= 0 if tagged.
        See Also:
        isTagged(), getNextStructParentIndex()
      • getTagStructureContext

        public TagStructureContext getTagStructureContext()
        Gets document TagStructureContext. The document must be tagged, otherwise an exception will be thrown.
        Returns:
        document TagStructureContext.
      • copyPagesTo

        public List<PdfPage> copyPagesTo​(int pageFrom,
                                         int pageTo,
                                         PdfDocument toDocument,
                                         int insertBeforePage)
        Copies a range of pages from current document to toDocument. Use this method if you want to copy pages across tagged documents. This will keep resultant PDF structure consistent.

        If outlines destination names are the same in different documents, all such outlines will lead to a single location in the resultant document. In this case iText will log a warning. This can be avoided by renaming destinations names in the source document.

        Parameters:
        pageFrom - start of the range of pages to be copied.
        pageTo - end of the range of pages to be copied.
        toDocument - a document to copy pages to.
        insertBeforePage - a position where to insert copied pages.
        Returns:
        list of copied pages
      • copyPagesTo

        public List<PdfPage> copyPagesTo​(int pageFrom,
                                         int pageTo,
                                         PdfDocument toDocument,
                                         int insertBeforePage,
                                         IPdfPageExtraCopier copier)
        Copies a range of pages from current document to toDocument. This range is inclusive, both page and pageTo are included in list of copied pages. Use this method if you want to copy pages across tagged documents. This will keep resultant PDF structure consistent.

        If outlines destination names are the same in different documents, all such outlines will lead to a single location in the resultant document. In this case iText will log a warning. This can be avoided by renaming destinations names in the source document.

        Parameters:
        pageFrom - 1-based start of the range of pages to be copied.
        pageTo - 1-based end (inclusive) of the range of pages to be copied. This page is included in list of copied pages.
        toDocument - a document to copy pages to.
        insertBeforePage - a position where to insert copied pages.
        copier - a copier which bears a special copy logic. May be null. It is recommended to use the same instance of IPdfPageExtraCopier for the same output document.
        Returns:
        list of new copied pages
      • copyPagesTo

        public List<PdfPage> copyPagesTo​(int pageFrom,
                                         int pageTo,
                                         PdfDocument toDocument)
        Copies a range of pages from current document to toDocument appending copied pages to the end. This range is inclusive, both page and pageTo are included in list of copied pages. Use this method if you want to copy pages across tagged documents. This will keep resultant PDF structure consistent.

        If outlines destination names are the same in different documents, all such outlines will lead to a single location in the resultant document. In this case iText will log a warning. This can be avoided by renaming destinations names in the source document.

        Parameters:
        pageFrom - 1-based start of the range of pages to be copied.
        pageTo - 1-based end (inclusive) of the range of pages to be copied. This page is included in list of copied pages.
        toDocument - a document to copy pages to.
        Returns:
        list of new copied pages
      • copyPagesTo

        public List<PdfPage> copyPagesTo​(int pageFrom,
                                         int pageTo,
                                         PdfDocument toDocument,
                                         IPdfPageExtraCopier copier)
        Copies a range of pages from current document to toDocument appending copied pages to the end. This range is inclusive, both page and pageTo are included in list of copied pages. Use this method if you want to copy pages across tagged documents. This will keep resultant PDF structure consistent.

        If outlines destination names are the same in different documents, all such outlines will lead to a single location in the resultant document. In this case iText will log a warning. This can be avoided by renaming destinations names in the source document.

        Parameters:
        pageFrom - 1-based start of the range of pages to be copied.
        pageTo - 1-based end (inclusive) of the range of pages to be copied. This page is included in list of copied pages.
        toDocument - a document to copy pages to.
        copier - a copier which bears a special copy logic. May be null. It is recommended to use the same instance of IPdfPageExtraCopier for the same output document.
        Returns:
        list of new copied pages.
      • copyPagesTo

        public List<PdfPage> copyPagesTo​(List<Integer> pagesToCopy,
                                         PdfDocument toDocument,
                                         int insertBeforePage)
        Copies a range of pages from current document to toDocument. Use this method if you want to copy pages across tagged documents. This will keep resultant PDF structure consistent.

        If outlines destination names are the same in different documents, all such outlines will lead to a single location in the resultant document. In this case iText will log a warning. This can be avoided by renaming destinations names in the source document.

        Parameters:
        pagesToCopy - list of pages to be copied.
        toDocument - a document to copy pages to.
        insertBeforePage - a position where to insert copied pages.
        Returns:
        list of new copied pages
      • copyPagesTo

        public List<PdfPage> copyPagesTo​(List<Integer> pagesToCopy,
                                         PdfDocument toDocument,
                                         int insertBeforePage,
                                         IPdfPageExtraCopier copier)
        Copies a range of pages from current document to toDocument. Use this method if you want to copy pages across tagged documents. This will keep resultant PDF structure consistent.

        If outlines destination names are the same in different documents, all such outlines will lead to a single location in the resultant document. In this case iText will log a warning. This can be avoided by renaming destinations names in the source document.

        Parameters:
        pagesToCopy - list of pages to be copied.
        toDocument - a document to copy pages to.
        insertBeforePage - a position where to insert copied pages.
        copier - a copier which bears a special copy logic. May be null. It is recommended to use the same instance of IPdfPageExtraCopier for the same output document.
        Returns:
        list of new copied pages
      • copyPagesTo

        public List<PdfPage> copyPagesTo​(List<Integer> pagesToCopy,
                                         PdfDocument toDocument)
        Copies a range of pages from current document to toDocument appending copied pages to the end. Use this method if you want to copy pages across tagged documents. This will keep resultant PDF structure consistent.

        If outlines destination names are the same in different documents, all such outlines will lead to a single location in the resultant document. In this case iText will log a warning. This can be avoided by renaming destinations names in the source document.

        Parameters:
        pagesToCopy - list of pages to be copied.
        toDocument - a document to copy pages to.
        Returns:
        list of copied pages
      • copyPagesTo

        public List<PdfPage> copyPagesTo​(List<Integer> pagesToCopy,
                                         PdfDocument toDocument,
                                         IPdfPageExtraCopier copier)
        Copies a range of pages from current document to toDocument appending copied pages to the end. Use this method if you want to copy pages across tagged documents. This will keep resultant PDF structure consistent.

        If outlines destination names are the same in different documents, all such outlines will lead to a single location in the resultant document. In this case iText will log a warning. This can be avoided by renaming destinations names in the source document.

        Parameters:
        pagesToCopy - list of pages to be copied.
        toDocument - a document to copy pages to.
        copier - a copier which bears a special copy logic. May be null. It is recommended to use the same instance of IPdfPageExtraCopier for the same output document.
        Returns:
        list of copied pages
      • flushCopiedObjects

        public void flushCopiedObjects​(PdfDocument sourceDoc)
        Flush all copied objects and remove them from copied cache.

        Note, if you will copy objects from the same document, duplicated objects will be created. That's why usually this method is meant to be used when all copying from source document is finished. For other cases one can also consider other flushing mechanisms, e.g. pages-based flushing.

        Parameters:
        sourceDoc - source document
      • isCloseReader

        public boolean isCloseReader()
        Checks, whether close() method will close associated PdfReader.
        Returns:
        true, close() method is going to close associated PdfReader, otherwise false.
      • setCloseReader

        public void setCloseReader​(boolean closeReader)
        Sets, whether close() method shall close associated PdfReader.
        Parameters:
        closeReader - true, close() method shall close associated PdfReader, otherwise false.
      • isCloseWriter

        public boolean isCloseWriter()
        Checks, whether close() method will close associated PdfWriter.
        Returns:
        true, close() method is going to close associated PdfWriter, otherwise false.
      • setCloseWriter

        public void setCloseWriter​(boolean closeWriter)
        Sets, whether close() method shall close associated PdfWriter.
        Parameters:
        closeWriter - true, close() method shall close associated PdfWriter, otherwise false.
      • isFlushUnusedObjects

        public boolean isFlushUnusedObjects()
        Checks, whether close() will flush unused objects, e.g. unreachable from PDF Catalog. By default - false.
        Returns:
        false, if close() shall not flush unused objects, otherwise true.
      • setFlushUnusedObjects

        public void setFlushUnusedObjects​(boolean flushUnusedObjects)
        Sets, whether close() shall flush unused objects, e.g. unreachable from PDF Catalog.
        Parameters:
        flushUnusedObjects - false, if close() shall not flush unused objects, otherwise true.
      • getOutlines

        public PdfOutline getOutlines​(boolean updateOutlines)
        This method returns a complete outline tree of the whole document.
        Parameters:
        updateOutlines - if the flag is true, the method reads the whole document and creates outline tree. If the flag is false, the method gets cached outline tree (if it was cached via calling getOutlines method before).
        Returns:
        fully initialize PdfOutline object.
      • initializeOutlines

        public void initializeOutlines()
        This method initializes an outline tree of the document and sets outline mode to true.
      • addNamedDestination

        public void addNamedDestination​(String key,
                                        PdfObject value)
        This methods adds new name in the Dests NameTree. It throws an exception, if the name already exists.
        Parameters:
        key - Name of the destination.
        value - An object destination refers to. Must be an array or a dictionary with key /D and array. See ISO 32000-1 12.3.2.3 for more info.
      • listIndirectReferences

        public List<PdfIndirectReference> listIndirectReferences()
        Gets static copy of cross reference table.
        Returns:
        a static copy of cross reference table
      • getTrailer

        public PdfDictionary getTrailer()
        Gets document trailer.
        Returns:
        document trailer.
      • checkIsoConformance

        public void checkIsoConformance​(Object obj,
                                        IsoKey key)
        Checks whether PDF document conforms a specific standard. Shall be override.
        Parameters:
        obj - An object to conform.
        key - type of object to conform.
      • checkIsoConformance

        public void checkIsoConformance​(Object obj,
                                        IsoKey key,
                                        PdfResources resources,
                                        PdfStream contentStream)
        Checks whether PDF document conforms a specific standard. Shall be override.
        Parameters:
        obj - an object to conform.
        key - type of object to conform.
        resources - PdfResources associated with an object to check.
        contentStream - current content stream
      • checkShowTextIsoConformance

        public void checkShowTextIsoConformance​(CanvasGraphicsState gState,
                                                PdfResources resources)
        Checks whether PDF document conforms a specific standard. Shall be override.
        Parameters:
        gState - a CanvasGraphicsState object to conform.
        resources - PdfResources associated with an object to check.
      • addFileAttachment

        public void addFileAttachment​(String key,
                                      PdfFileSpec fs)
        Adds file attachment at document level.
        Parameters:
        key - name of the destination.
        fs - PdfFileSpec object.
      • addAssociatedFile

        public void addAssociatedFile​(String description,
                                      PdfFileSpec fs)
        Adds file associated with PDF document as a whole and identifies the relationship between them.

        Associated files may be used in Pdf/A-3 and Pdf 2.0 documents. The method is very similar to addFileAttachment(String, PdfFileSpec). However, besides adding file description to Names tree, it adds file to array value of the AF key in the document catalog.

        For associated files their associated file specification dictionaries shall include the AFRelationship key

        Parameters:
        description - the file description
        fs - file specification dictionary of associated file
        See Also:
        addFileAttachment(String, PdfFileSpec)
      • getAssociatedFiles

        public PdfArray getAssociatedFiles()
        Returns files associated with PDF document.
        Returns:
        associated files array.
      • getEncryptedPayloadDocument

        public PdfEncryptedPayloadDocument getEncryptedPayloadDocument()
        Gets the encrypted payload of this document, or returns null if this document isn't an unencrypted wrapper document.
        Returns:
        encrypted payload of this document.
      • setEncryptedPayload

        public void setEncryptedPayload​(PdfFileSpec fs)
        Sets an encrypted payload, making this document an unencrypted wrapper document. The file spec shall include the AFRelationship key with a value of EncryptedPayload, and shall include an encrypted payload dictionary.
        Parameters:
        fs - encrypted payload file spec. PdfEncryptedPayloadFileSpecFactory can produce one.
      • getPageLabels

        public String[] getPageLabels()
        This method retrieves the page labels from a document as an array of String objects.
        Returns:
        String list of page labels if they were found, or null otherwise
      • hasOutlines

        public boolean hasOutlines()
        Indicates if the document has any outlines
        Returns:
        true, if there are outlines and false otherwise.
      • setUserProperties

        public void setUserProperties​(boolean userProperties)
        Sets the flag indicating the presence of structure elements that contain user properties attributes.
        Parameters:
        userProperties - the user properties flag
      • getDefaultFont

        public PdfFont getDefaultFont()
        Gets default font for the document: Helvetica, WinAnsi. One instance per document.
        Returns:
        instance of PdfFont or null on error.
      • addFont

        public PdfFont addFont​(PdfFont font)
        Adds a PdfFont instance to this document so that this font is flushed automatically on document close. As a side effect, the underlying font dictionary is made indirect if it wasn't the case yet
        Parameters:
        font - a PdfFont instance to add
        Returns:
        the same PdfFont instance.
      • registerProduct

        public boolean registerProduct​(ProductData productData)
        Registers a product for debugging purposes.
        Parameters:
        productData - product to be registered.
        Returns:
        true if the product hadn't been registered before.
      • getFingerPrint

        public FingerPrint getFingerPrint()
        Returns the object containing the registered products.
        Returns:
        fingerprint object
      • findFont

        public PdfFont findFont​(String fontProgram,
                                String encoding)
        Find PdfFont from loaded fonts with corresponding fontProgram and encoding or CMAP.
        Parameters:
        fontProgram - a font name or path to a font program
        encoding - an encoding or CMAP
        Returns:
        the font instance, or null if font wasn't found
      • getDocumentId

        public long getDocumentId()
        Obtains numeric document id.
        Returns:
        document id
      • getDocumentIdWrapper

        public SequenceId getDocumentIdWrapper()
        Obtains document id as a SequenceId.
        Returns:
        document id
      • getSerializeOptions

        public SerializeOptions getSerializeOptions()
        Gets a persistent XMP metadata serialization options.
        Returns:
        serialize options
      • setSerializeOptions

        public void setSerializeOptions​(SerializeOptions serializeOptions)
        Sets a persistent XMP metadata serialization options.
        Parameters:
        serializeOptions - serialize options
      • initTagStructureContext

        protected void initTagStructureContext()
        Initialize TagStructureContext.
      • storeLinkAnnotation

        @Deprecated
        protected void storeLinkAnnotation​(PdfPage page,
                                           PdfLinkAnnotation annotation)
        Deprecated.
        will be removed in next major version, it is being replaced with storeDestinationToReaddress
        Save the link annotation in a temporary storage for further copying. Save destinations in a temporary storage for further copying.
        Parameters:
        page - just copied PdfPage link annotation belongs to.
        annotation - PdfLinkAnnotation itself.
      • storeDestinationToReaddress

        protected void storeDestinationToReaddress​(PdfDestination destination,
                                                   Consumer<PdfDestination> onPageAvailable,
                                                   Consumer<PdfDestination> onPageNotAvailable)
        Save destinations in a temporary storage for further copying.
        Parameters:
        destination - the PdfDestination to be updated itself.
        onPageAvailable - a destination consumer that will handle the copying when the destination still resolves, it gets the new destination as input
        onPageNotAvailable - a destination consumer that will handle the copying when the destination is not available, it gets the original destination as input
      • checkIsoConformance

        protected void checkIsoConformance()
        Checks whether PDF document conforms a specific standard. Shall be override.
      • markObjectAsMustBeFlushed

        protected void markObjectAsMustBeFlushed​(PdfObject pdfObject)
        Mark an object with PdfObject.MUST_BE_FLUSHED.
        Parameters:
        pdfObject - an object to mark.
      • flushObject

        protected void flushObject​(PdfObject pdfObject,
                                   boolean canBeInObjStm)
                            throws IOException
        Flush an object.
        Parameters:
        pdfObject - object to flush.
        canBeInObjStm - indicates whether object can be placed into object stream.
        Throws:
        IOException - on error.
      • open

        protected void open​(PdfVersion newPdfVersion)
        Initializes document.
        Parameters:
        newPdfVersion - new pdf version of the resultant file if stamper is used and the version needs to be changed, or null otherwise
      • addCustomMetadataExtensions

        protected void addCustomMetadataExtensions​(XMPMeta xmpMeta)
        Adds custom XMP metadata extension. Useful for PDF/UA, ZUGFeRD, etc.
        Parameters:
        xmpMeta - XMPMeta to add custom metadata to.
      • updateXmpMetadata

        protected void updateXmpMetadata()
        Updates XMP metadata. Shall be override.
      • updateDefaultXmpMetadata

        protected XMPMeta updateDefaultXmpMetadata()
                                            throws XMPException
        Update XMP metadata values from PdfDocumentInfo.
        Returns:
        the XMPMetadata
        Throws:
        XMPException - if the file is not well-formed XML or if parsing fails.
      • getDocumentFonts

        protected Collection<PdfFont> getDocumentFonts()
        List all newly added or loaded fonts
        Returns:
        List of PdfFont.
      • flushFonts

        protected void flushFonts()
        Flushes all newly added or loaded fonts.
      • checkAndAddPage

        protected void checkAndAddPage​(int index,
                                       PdfPage page)
        Checks page before adding and add.
        Parameters:
        index - one-base index of the page.
        page - PdfPage to add.
      • checkAndAddPage

        protected void checkAndAddPage​(PdfPage page)
        Checks page before adding.
        Parameters:
        page - PdfPage to add.
      • checkClosingStatus

        protected void checkClosingStatus()
        checks whether a method is invoked at the closed document
      • getPageFactory

        protected IPdfPageFactory getPageFactory()
        Returns the factory for creating page instances.
        Returns:
        implementation of IPdfPageFactory for current document
      • tryInitTagStructure

        protected void tryInitTagStructure​(PdfDictionary str)
        Initializes the new instance of document's structure tree root PdfStructTreeRoot. See ISO 32000-1, section 14.7.2 Structure Hierarchy.
        Parameters:
        str - dictionary to create structure tree root