Class PdfDocument

java.lang.Object
com.itextpdf.kernel.pdf.PdfDocument
All Implemented Interfaces:
IEventDispatcher, Closeable, AutoCloseable
Direct Known Subclasses:
PdfADocument

public class PdfDocument extends Object implements IEventDispatcher, Closeable
Main enter point to work with PDF document.
  • Field Details

    • properties

      protected final StampingProperties properties
    • eventDispatcher

      protected EventDispatcher eventDispatcher
    • 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.
    • trailer

      protected PdfDictionary trailer
      Document trailed.
    • info

      protected PdfDocumentInfo info
      Document info.
    • pdfVersion

      protected PdfVersion pdfVersion
      Document version.
    • fingerPrint

      protected FingerPrint fingerPrint
    • serializeOptions

      protected SerializeOptions serializeOptions
    • structTreeRoot

      protected PdfStructTreeRoot structTreeRoot
    • 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
    • tagStructureContext

      protected TagStructureContext tagStructureContext
  • Constructor Details

    • 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 Details

    • 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
    • getPage

      public PdfPage getPage (PdfDictionary pageDictionary)
      Gets the PdfPage instance by PdfDictionary.
      Parameters:
      pageDictionary - PdfDictionary that present page.
      Returns:
      page by PdfDictionary.
    • 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.
    • markStreamAsEmbeddedFile

      public void markStreamAsEmbeddedFile (PdfStream stream)
      Marks PdfStream object as embedded file stream. Note that this method is for internal usage. To add an embedded file to the PDF document please use specialized API for file attachments. (e.g. addFileAttachment(String, PdfFileSpec), PdfPage.addAnnotation(PdfAnnotation))
      Parameters:
      stream - to be marked as embedded file stream
    • 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.
    • getPageNumber

      public int getPageNumber (PdfDictionary pageDictionary)
      Gets page number by PdfDictionary.
      Parameters:
      pageDictionary - PdfDictionary that present page.
      Returns:
      page number by PdfDictionary.
    • 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.
    • getOriginalDocumentId

      public PdfString getOriginalDocumentId()
      Gets original document id

      In order to set originalDocumentId WriterProperties.setInitialDocumentId(com.itextpdf.kernel.pdf.PdfString) should be used

      Returns:
      original dccument id
    • getModifiedDocumentId

      public PdfString getModifiedDocumentId()
      Gets modified document id

      In order to set modifiedDocumentId WriterProperties.setModifiedDocumentId(com.itextpdf.kernel.pdf.PdfString) should be used

      Returns:
      modified document id
    • 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
    • addEventHandler

      public void addEventHandler (String type, IEventHandler handler)
      Adds new event handler.
      Specified by:
      addEventHandler in interface IEventDispatcher
      Parameters:
      type - a type of event to be handled
      handler - event handler
    • dispatchEvent

      public void dispatchEvent (Event event)
      Dispatches an event.
      Specified by:
      dispatchEvent in interface IEventDispatcher
      Parameters:
      event - the Event to be dispatched
    • 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
    • removeEventHandler

      public void removeEventHandler (String type, IEventHandler handler)
      Removes event handler.
      Specified by:
      removeEventHandler in interface IEventDispatcher
      Parameters:
      type - a type of the Event
      handler - event handler IEventHandler
    • removeAllHandlers

      public void removeAllHandlers()
      Remove all event handlers.
      Specified by:
      removeAllHandlers in interface IEventDispatcher
    • 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.
    • close

      public void close()
      Close PDF document.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
    • 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
    • getStructTreeRoot

      public PdfStructTreeRoot getStructTreeRoot()
      Gets PdfStructTreeRoot of tagged document.
      Returns:
      PdfStructTreeRoot in case document is tagged, otherwise it returns null.
      See Also:
    • getNextStructParentIndex

      public int getNextStructParentIndex()
      Gets next parent index of tagged document.
      Returns:
      -1 if document is not tagged, or >= 0 if tagged.
      See Also:
    • 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.
    • addNamedDestination

      public void addNamedDestination (PdfString 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.
    • addOutputIntent

      public void addOutputIntent (PdfOutputIntent outputIntent)
      Adds PdfOutputIntent that shall specify the colour characteristics of output devices on which the document might be rendered.
      Parameters:
      outputIntent - PdfOutputIntent to add.
      See Also:
    • 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:
    • 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
    • getFont

      public PdfFont getFont (PdfDictionary dictionary)
      Create a new instance of PdfFont or load already created one.
      Parameters:
      dictionary - PdfDictionary that presents PdfFont.
      Returns:
      instance of PdfFont

      Note, PdfFont which created with PdfFontFactory.createFont(PdfDictionary) won't be cached until it will be added to PdfCanvas or PdfResources.

    • 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.
    • 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