Class PdfDocument

java.lang.Object
com.lowagie.text.Document
com.lowagie.text.pdf.PdfDocument
All Implemented Interfaces:
DocListener, ElementListener, AutoCloseable, 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

    • SIXTEEN_DIGITS

      protected static final DecimalFormat SIXTEEN_DIGITS
    • hangingPunctuation

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

      protected PdfWriter writer
      The PdfWriter.
    • 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
    • leadingCount

      protected int leadingCount
      Signals that the current leading has to be subtracted from a YMark object when positive.
      Since:
      2.1.2
    • anchorAction

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

      protected int textEmptySize
    • xmpMetadata

      protected byte[] xmpMetadata
      XMP Metadata for the page.
    • 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 List<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.
    • 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,Object[]> localDestinations
      Stores the destinations keyed by name. Value is Object[]{PdfAction,PdfIndirectReference,PdfDestintion}.
    • documentLevelJS

      protected HashMap<String,PdfIndirectReference> documentLevelJS
    • documentFileAttachment

      protected HashMap<String,PdfIndirectReference> documentFileAttachment
    • openActionName

      protected String openActionName
    • openActionAction

      protected PdfAction openActionAction
    • additionalActions

      protected PdfDictionary additionalActions
    • collection

      protected PdfCollection collection
    • markPoint

      protected int markPoint
    • 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.
    • duration

      protected int duration
      The duration of the page
    • transition

      protected PdfTransition transition
      The page transition
    • pageAA

      protected PdfDictionary pageAA
    • thumb

      protected PdfIndirectReference thumb
    • 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.
    • jsCounter

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

      PdfAnnotationsImp annotationsImp
    • pageEmpty

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

      private boolean isDoFooter
      This is the flag meaning whether document is creating footer.
  • Constructor Details

    • PdfDocument

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

    • createInOneCell

      static PdfPTable createInOneCell(Paragraph paragraph)
      Integrate a paragraph into a table, so it can be a whole.

      Note: This is not a table with square, it's just like the paragraph, but it cannot be separated.

      Parameters:
      paragraph - the Paragraph incoming paragraphs to be consolidated
      Returns:
      PdfPTable the whole which will be used later
    • 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
    • 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 AutoCloseable
      Specified by:
      close in interface DocListener
      Overrides:
      close in class Document
    • setXmpMetadata

      public void setXmpMetadata(byte[] xmpMetadata)
      Use this method to set the XMP Metadata.
      Parameters:
      xmpMetadata - The xmpMetadata to set.
    • 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:
      a boolean
    • 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.

      Note: it will not work with Table.

      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.

      Note: it will not work with Table.

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

      public void setHeader(HeaderFooter header)
      Changes the header of this document.
      Specified by:
      setHeader in interface DocListener
      Overrides:
      setHeader in class Document
      Parameters:
      header - the new header
    • resetHeader

      public void resetHeader()
      Resets the header of this document.
      Specified by:
      resetHeader in interface DocListener
      Overrides:
      resetHeader in class Document
    • setFooter

      public void setFooter(HeaderFooter footer)
      Changes the footer of this document.
      Specified by:
      setFooter in interface DocListener
      Overrides:
      setFooter in class Document
      Parameters:
      footer - the new footer
    • resetFooter

      public void resetFooter()
      Resets the footer of this document.
      Specified by:
      resetFooter in interface DocListener
      Overrides:
      resetFooter 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
    • 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

      void 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
    • 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)
      Adds extra space. This method should probably be rewritten.
      Parameters:
      extraspace - extra space
      oldleading - old leading
      f - font
    • getInfo

      protected PdfDocument.PdfInfo 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
    • 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,PdfIndirectReference> getDocumentLevelJS()
    • addFileAttachment

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

      HashMap<String,PdfIndirectReference> 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)
    • getMarkPoint

      int getMarkPoint()
    • incMarkPoint

      void incMarkPoint()
    • 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
      Returns:
      Rectangle
    • isPageEmpty

      boolean isPageEmpty()
    • setPageEmpty

      void setPageEmpty(boolean pageEmpty)
    • 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 DocumentException
      Throws:
      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
    • add

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

      protected void flushSpecial()
      write non-text Element into document
    • addDelay

      protected void addDelay(Image image)
      Occupies space for Image that will be added later instead of now
      Parameters:
      image - the new Image
    • delayTableAddition

      protected void delayTableAddition(PdfPTable table)
      Occupies space for PdfPTable that will be added later instead of now
      Parameters:
      table - the new PdfPTable
    • 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
    • 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.
    • setTableWidth

      private void setTableWidth(PdfPTable table)
    • addPdfTable

      private void addPdfTable(Table t) throws DocumentException
      Adds a new table to the document.
      Parameters:
      t - Table to add. Rendered rows will be deleted after processing.
      Throws:
      DocumentException
      Since:
      iText 2.0.8
    • analyzeRow

      protected void analyzeRow(List<List<PdfCell>> rows, PdfDocument.RenderingContext ctx)
    • mayBeRemoved

      protected boolean mayBeRemoved(List<PdfCell> row)
    • consumeRowspan

      protected void consumeRowspan(List<PdfCell> row, PdfDocument.RenderingContext ctx)
    • extractRows

      protected List<List<PdfCell>> extractRows(List<PdfCell> cells, PdfDocument.RenderingContext ctx)
    • renderCells

      protected void renderCells(PdfDocument.RenderingContext ctx, List cells, boolean hasToFit) throws DocumentException
      Throws:
      DocumentException
    • bottom

      float bottom(Table table)
      Returns the bottomvalue of a Table if it were added to this document.
      Parameters:
      table - the table that may or may not be added to this document
      Returns:
      a bottom value
    • doFooter

      protected void doFooter() throws DocumentException
      Throws:
      DocumentException
    • doHeader

      protected void doHeader() throws DocumentException
      Throws:
      DocumentException