Class PdfDocument

java.lang.Object
com.itextpdf.text.Document
com.itextpdf.text.pdf.PdfDocument
All Implemented Interfaces:
DocListener, ElementListener, IAccessibleElement, EventListener

public class PdfDocument extends Document
PdfDocument is the class that is used by PdfWriter to translate a Document into a PDF with different pages.

A PdfDocument always listens to a Document and adds the Pdf representation of every Element that is added to the Document.

Since:
2.0.8 (class was package-private before)
See Also:
  • Field Details

    • writer

      protected PdfWriter writer
      The PdfWriter.
    • structElements

    • externalCache

      private TempFileCache externalCache
    • externallyStoredStructElements

      private HashMap<AccessibleElementId,TempFileCache.ObjectPosition> externallyStoredStructElements
    • elementsParents

    • isToUseExternalCache

      private boolean isToUseExternalCache
    • openMCDocument

      protected boolean openMCDocument
    • structParentIndices

      protected HashMap<Object,int[]> structParentIndices
    • markPoints

      protected HashMap<Object,Integer> markPoints
    • text

      protected PdfContentByte text
      This is the PdfContentByte object, containing the text.
    • graphics

      protected PdfContentByte graphics
      This is the PdfContentByte object, containing the borders and other Graphics.
    • leading

      protected float leading
      This represents the leading of the lines.
    • alignment

      protected int alignment
      This represents the current alignment of the PDF Elements.
    • currentHeight

      protected float currentHeight
      This is the current height of the document.
    • isSectionTitle

      protected boolean isSectionTitle
      Signals that onParagraph is valid (to avoid that a Chapter/Section title is treated as a Paragraph).
      Since:
      2.1.2
    • anchorAction

      protected PdfAction anchorAction
      The current active PdfAction when processing an Anchor.
    • tabSettings

      protected TabSettings tabSettings
      The current tab settings.
      Since:
      5.4.0
    • leadingStack

      private Stack<Float> leadingStack
      Signals that the current leading has to be subtracted from a YMark object when positive and save current leading
      Since:
      2.1.2
    • body

      private PdfBody body
    • textEmptySize

      protected int textEmptySize
    • nextMarginLeft

      protected float nextMarginLeft
      margin in x direction starting from the left. Will be valid in the next page
    • nextMarginRight

      protected float nextMarginRight
      margin in x direction starting from the right. Will be valid in the next page
    • nextMarginTop

      protected float nextMarginTop
      margin in y direction starting from the top. Will be valid in the next page
    • nextMarginBottom

      protected float nextMarginBottom
      margin in y direction starting from the bottom. Will be valid in the next page
    • firstPageEvent

      protected boolean firstPageEvent
      Signals that OnOpenDocument should be called.
    • line

      protected PdfLine line
      The line that is currently being written.
    • lines

      protected ArrayList<PdfLine> lines
      The lines that are written until now.
    • lastElementType

      protected int lastElementType
      Holds the type of the last element, that has been added to the document.
    • hangingPunctuation

      static final String hangingPunctuation
      The characters to be applied the hanging punctuation.
      See Also:
    • indentation

      protected PdfDocument.Indentation indentation
    • info

      protected PdfDocument.PdfInfo info
      some meta information about the Document.
    • rootOutline

      protected PdfOutline rootOutline
      This is the root outline of the document.
    • currentOutline

      protected PdfOutline currentOutline
      This is the current PdfOutline in the hierarchy of outlines.
    • viewerPreferences

      protected PdfViewerPreferencesImp viewerPreferences
      Contains the Viewer preferences of this PDF document.
    • pageLabels

      protected PdfPageLabels pageLabels
    • localDestinations

      protected TreeMap<String,PdfDocument.Destination> localDestinations
      Stores the destinations keyed by name. Value is a Destination.
    • jsCounter

      int jsCounter
      Stores a list of document level JavaScript actions.
    • documentLevelJS

      protected HashMap<String,PdfObject> documentLevelJS
    • SIXTEEN_DIGITS

      protected static final DecimalFormat SIXTEEN_DIGITS
    • documentFileAttachment

      protected HashMap<String,PdfObject> documentFileAttachment
    • openActionName

      protected String openActionName
    • openActionAction

      protected PdfAction openActionAction
    • additionalActions

      protected PdfDictionary additionalActions
    • collection

      protected PdfCollection collection
    • annotationsImp

      PdfAnnotationsImp annotationsImp
    • language

      protected PdfString language
    • nextPageSize

      protected Rectangle nextPageSize
      This is the size of the next page.
    • thisBoxSize

      protected HashMap<String,PdfRectangle> thisBoxSize
      This is the size of the several boxes of the current Page.
    • boxSize

      protected HashMap<String,PdfRectangle> boxSize
      This is the size of the several boxes that will be used in the next page.
    • pageEmpty

      private boolean pageEmpty
      This checks if the page is empty.
    • pageAA

      protected PdfDictionary pageAA
    • pageResources

      protected PageResources pageResources
      This are the page resources of the current Page.
    • strictImageSequence

      protected boolean strictImageSequence
      Holds value of property strictImageSequence.
    • imageEnd

      protected float imageEnd
      This is the position where the image ends.
    • imageWait

      protected Image imageWait
      This is the image that could not be shown on a previous page.
    • floatingElements

      private ArrayList<Element> floatingElements
  • Constructor Details

    • PdfDocument

      public PdfDocument()
      Constructs a new PDF document.
  • Method Details

    • addWriter

      public void addWriter(PdfWriter writer) throws DocumentException
      Adds a PdfWriter to the PdfDocument.
      Parameters:
      writer - the PdfWriter that writes everything what is added to this document to an outputstream.
      Throws:
      DocumentException - on error
    • getLeading

      public float getLeading()
      Getter for the current leading.
      Returns:
      the current leading
      Since:
      2.1.2
    • setLeading

      void setLeading(float leading)
      Setter for the current leading.
      Parameters:
      leading - the current leading
      Since:
      2.1.6
    • pushLeading

      protected void pushLeading()
      Save current @leading
    • popLeading

      protected void popLeading()
      Restore @leading from leadingStack
    • getTabSettings

      public TabSettings getTabSettings()
      Getter for the current tab stops.
      Since:
      5.4.0
    • setTabSettings

      public void setTabSettings(TabSettings tabSettings)
      Setter for the current tab stops.
      Parameters:
      tabSettings - the current tab settings
      Since:
      5.4.0
    • add

      public boolean add(Element element) throws DocumentException
      Signals that an Element was added to the Document.
      Specified by:
      add in interface ElementListener
      Overrides:
      add in class Document
      Parameters:
      element - the element to add
      Returns:
      true if the element was added, false if not.
      Throws:
      DocumentException - when a document isn't open yet, or has been closed
    • open

      public void open()
      Opens the document.

      You have to open the document before you can begin to add content to the body of the document.

      Specified by:
      open in interface DocListener
      Overrides:
      open in class Document
    • close

      public void close()
      Closes the document. Once all the content has been written in the body, you have to close the body. After that nothing can be written to the body anymore.
      Specified by:
      close in interface DocListener
      Overrides:
      close in class Document
    • setXmpMetadata

      public void setXmpMetadata(byte[] xmpMetadata) throws IOException
      Use this method to set the XMP Metadata.
      Parameters:
      xmpMetadata - The xmpMetadata to set.
      Throws:
      IOException
    • newPage

      public boolean newPage()
      Makes a new page and sends it to the PdfWriter.
      Specified by:
      newPage in interface DocListener
      Overrides:
      newPage in class Document
      Returns:
      true if new page is added
    • endPage

      protected ArrayList<IAccessibleElement> endPage()
    • setPageSize

      public boolean setPageSize(Rectangle pageSize)
      Sets the pagesize.
      Specified by:
      setPageSize in interface DocListener
      Overrides:
      setPageSize in class Document
      Parameters:
      pageSize - the new pagesize
      Returns:
      true if the page size was set
    • setMargins

      public boolean setMargins(float marginLeft, float marginRight, float marginTop, float marginBottom)
      Sets the margins.
      Specified by:
      setMargins in interface DocListener
      Overrides:
      setMargins in class Document
      Parameters:
      marginLeft - the margin on the left
      marginRight - the margin on the right
      marginTop - the margin on the top
      marginBottom - the margin on the bottom
      Returns:
      a boolean
    • setMarginMirroring

      public boolean setMarginMirroring(boolean MarginMirroring)
      Description copied from class: Document
      Set the margin mirroring. It will mirror right/left margins for odd/even pages.
      Specified by:
      setMarginMirroring in interface DocListener
      Overrides:
      setMarginMirroring in class Document
      Parameters:
      MarginMirroring - true to mirror the margins
      Returns:
      always true
      See Also:
    • setMarginMirroringTopBottom

      public boolean setMarginMirroringTopBottom(boolean MarginMirroringTopBottom)
      Description copied from class: Document
      Set the margin mirroring. It will mirror top/bottom margins for odd/even pages.
      Specified by:
      setMarginMirroringTopBottom in interface DocListener
      Overrides:
      setMarginMirroringTopBottom in class Document
      Parameters:
      MarginMirroringTopBottom - true to mirror the margins
      Returns:
      always true
      Since:
      2.1.6
      See Also:
    • setPageCount

      public void setPageCount(int pageN)
      Sets the page number.
      Specified by:
      setPageCount in interface DocListener
      Overrides:
      setPageCount in class Document
      Parameters:
      pageN - the new page number
    • resetPageCount

      public void resetPageCount()
      Sets the page number to 0.
      Specified by:
      resetPageCount in interface DocListener
      Overrides:
      resetPageCount in class Document
    • initPage

      protected void initPage() throws DocumentException
      Initializes a page.

      If the footer/header is set, it is printed.

      Throws:
      DocumentException - on error
    • newLine

      protected void newLine() throws DocumentException
      Adds the current line to the list of lines and also adds an empty line.
      Throws:
      DocumentException - on error
    • calculateLineHeight

      protected float calculateLineHeight()
      line.height() is usually the same as the leading We should take leading into account if it is not the same as the line.height
      Returns:
      float combined height of the line
      Since:
      5.5.1
    • carriageReturn

      protected void carriageReturn()
      If the current line is not empty or null, it is added to the arraylist of lines and a new empty line is added.
    • getVerticalPosition

      public float getVerticalPosition(boolean ensureNewLine)
      Gets the current vertical page position.
      Parameters:
      ensureNewLine - Tells whether a new line shall be enforced. This may cause side effects for elements that do not terminate the lines they've started because those lines will get terminated.
      Returns:
      The current vertical page position.
    • ensureNewLine

      protected void ensureNewLine()
      Ensures that a new line has been started.
    • flushLines

      protected float flushLines() throws DocumentException
      Writes all the lines to the text-object.
      Returns:
      the displacement that was caused
      Throws:
      DocumentException - on error
    • writeLineToContent

      float writeLineToContent(PdfLine line, PdfContentByte text, PdfContentByte graphics, Object[] currentValues, float ratio) throws DocumentException
      Writes a text line to the document. It takes care of all the attributes.

      Before entering the line position must have been established and the text argument must be in text object scope (beginText()).

      Parameters:
      line - the line to be written
      text - the PdfContentByte where the text will be written to
      graphics - the PdfContentByte where the graphics will be written to
      currentValues - the current font and extra spacing values
      ratio -
      Throws:
      DocumentException - on error
      Since:
      5.0.3 returns a float instead of void
    • indentLeft

      protected float indentLeft()
      Gets the indentation on the left side.
      Returns:
      a margin
    • indentRight

      protected float indentRight()
      Gets the indentation on the right side.
      Returns:
      a margin
    • indentTop

      protected float indentTop()
      Gets the indentation on the top side.
      Returns:
      a margin
    • indentBottom

      float indentBottom()
      Gets the indentation on the bottom side.
      Returns:
      a margin
    • addSpacing

      protected void addSpacing(float extraspace, float oldleading, Font f)
      Calls addSpacing(float, float, Font, boolean (false)).
    • addSpacing

      protected void addSpacing(float extraspace, float oldleading, Font f, boolean spacingAfter)
      Adds extra spacing.
    • getInfo

      Gets the PdfInfo-object.
      Returns:
      PdfInfo
    • getCatalog

      Gets the PdfCatalog-object.
      Parameters:
      pages - an indirect reference to this document pages
      Returns:
      PdfCatalog
    • addOutline

      void addOutline(PdfOutline outline, String name)
      Adds a named outline to the document .
      Parameters:
      outline - the outline to be added
      name - the name of this local destination
    • getRootOutline

      public PdfOutline getRootOutline()
      Gets the root outline. All the outlines must be created with a parent. The first level is created with this outline.
      Returns:
      the root outline
    • calculateOutlineCount

      void calculateOutlineCount()
      Updates the count in the outlines.
    • traverseOutlineCount

      void traverseOutlineCount(PdfOutline outline)
      Recursive method to update the count in the outlines.
    • writeOutlines

      void writeOutlines() throws IOException
      Writes the outline tree to the body of the PDF document.
      Throws:
      IOException
    • outlineTree

      void outlineTree(PdfOutline outline) throws IOException
      Recursive method used to write outlines.
      Throws:
      IOException
    • setViewerPreferences

      void setViewerPreferences(int preferences)
      See Also:
    • addViewerPreference

      void addViewerPreference(PdfName key, PdfObject value)
      See Also:
    • setPageLabels

      void setPageLabels(PdfPageLabels pageLabels)
      Sets the page labels
      Parameters:
      pageLabels - the page labels
    • getPageLabels

      public PdfPageLabels getPageLabels()
    • localGoto

      void localGoto(String name, float llx, float lly, float urx, float ury)
      Implements a link to other part of the document. The jump will be made to a local destination with the same name, that must exist.
      Parameters:
      name - the name for this link
      llx - the lower left x corner of the activation area
      lly - the lower left y corner of the activation area
      urx - the upper right x corner of the activation area
      ury - the upper right y corner of the activation area
    • remoteGoto

      void remoteGoto(String filename, String name, float llx, float lly, float urx, float ury)
      Implements a link to another document.
      Parameters:
      filename - the filename for the remote document
      name - the name to jump to
      llx - the lower left x corner of the activation area
      lly - the lower left y corner of the activation area
      urx - the upper right x corner of the activation area
      ury - the upper right y corner of the activation area
    • remoteGoto

      void remoteGoto(String filename, int page, float llx, float lly, float urx, float ury)
      Implements a link to another document.
      Parameters:
      filename - the filename for the remote document
      page - the page to jump to
      llx - the lower left x corner of the activation area
      lly - the lower left y corner of the activation area
      urx - the upper right x corner of the activation area
      ury - the upper right y corner of the activation area
    • setAction

      void setAction(PdfAction action, float llx, float lly, float urx, float ury)
      Implements an action in an area.
      Parameters:
      action - the PdfAction
      llx - the lower left x corner of the activation area
      lly - the lower left y corner of the activation area
      urx - the upper right x corner of the activation area
      ury - the upper right y corner of the activation area
    • getLocalGotoAction

      PdfAction getLocalGotoAction(String name)
    • localDestination

      boolean localDestination(String name, PdfDestination destination)
      The local destination to where a local goto with the same name will jump to.
      Parameters:
      name - the name of this local destination
      destination - the PdfDestination with the jump coordinates
      Returns:
      true if the local destination was added, false if a local destination with the same name already existed
    • addJavaScript

      void addJavaScript(PdfAction js)
    • addJavaScript

      void addJavaScript(String name, PdfAction js)
    • getDocumentLevelJS

      HashMap<String,PdfObject> getDocumentLevelJS()
    • addFileAttachment

      void addFileAttachment(String description, PdfFileSpecification fs) throws IOException
      Throws:
      IOException
    • getDocumentFileAttachment

      HashMap<String,PdfObject> getDocumentFileAttachment()
    • setOpenAction

      void setOpenAction(String name)
    • setOpenAction

      void setOpenAction(PdfAction action)
    • addAdditionalAction

      void addAdditionalAction(PdfName actionType, PdfAction action)
    • setCollection

      public void setCollection(PdfCollection collection)
      Sets the collection dictionary.
      Parameters:
      collection - a dictionary of type PdfCollection
    • getAcroForm

      PdfAcroForm getAcroForm()
      Gets the AcroForm object.
      Returns:
      the PdfAcroform object of the PdfDocument
    • setSigFlags

      void setSigFlags(int f)
    • addCalculationOrder

      void addCalculationOrder(PdfFormField formField)
    • addAnnotation

      void addAnnotation(PdfAnnotation annot)
    • setLanguage

      void setLanguage(String language)
    • setCropBoxSize

      void setCropBoxSize(Rectangle crop)
    • setBoxSize

      void setBoxSize(String boxName, Rectangle size)
    • setNewPageSizeAndMargins

      protected void setNewPageSizeAndMargins()
    • getBoxSize

      Rectangle getBoxSize(String boxName)
      Gives the size of a trim, art, crop or bleed box, or null if not defined.
      Parameters:
      boxName - crop, trim, art or bleed
    • setPageEmpty

      void setPageEmpty(boolean pageEmpty)
    • isPageEmpty

      boolean isPageEmpty()
    • setDuration

      void setDuration(int seconds)
      Sets the display duration for the page (for presentations)
      Parameters:
      seconds - the number of seconds to display the page
    • setTransition

      void setTransition(PdfTransition transition)
      Sets the transition for the page
      Parameters:
      transition - the PdfTransition object
    • setPageAction

      void setPageAction(PdfName actionType, PdfAction action)
    • setThumbnail

      void setThumbnail(Image image) throws PdfException, DocumentException
      Throws:
      PdfException
      DocumentException
    • getPageResources

      PageResources getPageResources()
    • isStrictImageSequence

      boolean isStrictImageSequence()
      Getter for property strictImageSequence.
      Returns:
      Value of property strictImageSequence.
    • setStrictImageSequence

      void setStrictImageSequence(boolean strictImageSequence)
      Setter for property strictImageSequence.
      Parameters:
      strictImageSequence - New value of property strictImageSequence.
    • clearTextWrap

      public void clearTextWrap()
      Method added by Pelikan Stephan
    • getStructParentIndex

      public int getStructParentIndex(Object obj)
    • getNextMarkPoint

      public int getNextMarkPoint(Object obj)
    • getStructParentIndexAndNextMarkPoint

      public int[] getStructParentIndexAndNextMarkPoint(Object obj)
    • add

      protected void add(Image image) throws PdfException, DocumentException
      Adds an image to the document.
      Parameters:
      image - the Image to add
      Throws:
      PdfException - on error
      DocumentException - on error
    • addPTable

      void addPTable(PdfPTable ptable) throws DocumentException
      Adds a PdfPTable to the document.
      Parameters:
      ptable - the PdfPTable to be added to the document.
      Throws:
      DocumentException - on error
    • addDiv

      private void addDiv(PdfDiv div) throws DocumentException
      Throws:
      DocumentException
    • flushFloatingElements

      private void flushFloatingElements() throws DocumentException
      Throws:
      DocumentException
    • fitsPage

      boolean fitsPage(PdfPTable table, float margin)
      Checks if a PdfPTable fits the current page of the PdfDocument.
      Parameters:
      table - the table that has to be checked
      margin - a certain margin
      Returns:
      true if the PdfPTable fits the page, false otherwise.
    • isTagged

      private static boolean isTagged(PdfWriter writer)
    • getLastLine

      private PdfLine getLastLine()
    • useExternalCache

      protected void useExternalCache(TempFileCache externalCache)
    • saveStructElement

      protected void saveStructElement(AccessibleElementId id, PdfStructureElement element)
    • getStructElement

      protected PdfStructureElement getStructElement(AccessibleElementId id)
    • getStructElement

      protected PdfStructureElement getStructElement(AccessibleElementId id, boolean toSaveFetchedElement)
    • flushStructureElementsOnNewPage

      protected void flushStructureElementsOnNewPage()
    • getStructElements

      public Set<AccessibleElementId> getStructElements()