com.lowagie.text.pdf
Class PdfDocument

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

Nested Class Summary
static class PdfDocument.Indentation
           
static class PdfDocument.PdfInfo
          PdfInfo is the PDF InfoDictionary.
protected static class PdfDocument.RenderingContext
          This is a helper class for adding a Table to a document.
 
Field Summary
protected  PdfDictionary additionalActions
           
protected  int alignment
          This represents the current alignment of the PDF Elements.
protected  PdfAction anchorAction
          The current active PdfAction when processing an Anchor.
protected  java.util.HashMap boxSize
          This is the size of the several boxes that will be used in the next page.
protected  PdfCollection collection
           
protected  float currentHeight
          This is the current height of the document.
protected  PdfOutline currentOutline
          This is the current PdfOutline in the hierarchy of outlines.
protected  java.util.HashMap documentFileAttachment
           
protected  java.util.HashMap documentLevelJS
           
protected  int duration
          The duration of the page
protected  boolean firstPageEvent
          Signals that OnOpenDocument should be called.
protected  PdfContentByte graphics
          This is the PdfContentByte object, containing the borders and other Graphics.
protected  float imageEnd
          This is the position where the image ends.
protected  Image imageWait
          This is the image that could not be shown on a previous page.
protected  PdfDocument.Indentation indentation
           
protected  PdfDocument.PdfInfo info
          some meta information about the Document.
protected  boolean isSectionTitle
          Signals that onParagraph is valid (to avoid that a Chapter/Section title is treated as a Paragraph).
protected  int lastElementType
          Holds the type of the last element, that has been added to the document.
protected  float leading
          This represents the leading of the lines.
protected  int leadingCount
          Signals that the current leading has to be subtracted from a YMark object when positive.
protected  PdfLine line
          The line that is currently being written.
protected  java.util.ArrayList lines
          The lines that are written until now.
protected  java.util.TreeMap localDestinations
          Stores the destinations keyed by name.
protected  int markPoint
           
protected  float nextMarginBottom
          margin in y direction starting from the bottom.
protected  float nextMarginLeft
          margin in x direction starting from the left.
protected  float nextMarginRight
          margin in x direction starting from the right.
protected  float nextMarginTop
          margin in y direction starting from the top.
protected  Rectangle nextPageSize
          This is the size of the next page.
protected  PdfAction openActionAction
           
protected  java.lang.String openActionName
           
protected  PdfDictionary pageAA
           
protected  boolean pageEmpty
          This checks if the page is empty.
protected  PdfPageLabels pageLabels
           
protected  com.lowagie.text.pdf.PageResources pageResources
          This are the page resources of the current Page.
protected  PdfOutline rootOutline
          This is the root outline of the document.
protected static java.text.DecimalFormat SIXTEEN_DIGITS
           
protected  boolean strictImageSequence
          Holds value of property strictImageSequence.
protected  PdfContentByte text
          This is the PdfContentByte object, containing the text.
protected  int textEmptySize
           
protected  java.util.HashMap thisBoxSize
          This is the size of the several boxes of the current Page.
protected  PdfIndirectReference thumb
           
protected  PdfTransition transition
          The page transition
protected  PdfViewerPreferencesImp viewerPreferences
          Contains the Viewer preferences of this PDF document.
protected  PdfWriter writer
          The PdfWriter.
protected  byte[] xmpMetadata
          XMP Metadata for the page.
 
Fields inherited from class com.lowagie.text.Document
chapternumber, close, compress, footer, header, htmlStyleClass, javaScript_onLoad, javaScript_onUnLoad, marginBottom, marginLeft, marginMirroring, marginMirroringTopBottom, marginRight, marginTop, open, pageN, pageSize, plainRandomAccess, wmfFontCorrection
 
Constructor Summary
PdfDocument()
          Constructs a new PDF document.
 
Method Summary
 boolean add(Element element)
          Signals that an Element was added to the Document.
protected  void add(Image image)
          Adds an image to the document.
protected  void addSpacing(float extraspace, float oldleading, Font f)
          Adds extra space.
 void addWriter(PdfWriter writer)
          Adds a PdfWriter to the PdfDocument.
protected  void analyzeRow(java.util.ArrayList rows, PdfDocument.RenderingContext ctx)
           
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.
 void clearTextWrap()
          Method added by Pelikan Stephan
 void close()
          Closes the document.
protected  void consumeRowspan(java.util.ArrayList row, PdfDocument.RenderingContext ctx)
           
protected  void doFooter()
           
protected  void doHeader()
           
protected  void ensureNewLine()
          Ensures that a new line has been started.
protected  java.util.ArrayList extractRows(java.util.ArrayList cells, PdfDocument.RenderingContext ctx)
           
protected  float flushLines()
          Writes all the lines to the text-object.
 float getLeading()
          Getter for the current leading.
 PdfOutline getRootOutline()
          Gets the root outline.
 float getVerticalPosition(boolean ensureNewLine)
          Gets the current vertical page position.
protected  float indentLeft()
          Gets the indentation on the left side.
protected  float indentRight()
          Gets the indentation on the right side.
protected  float indentTop()
          Gets the indentation on the top side.
protected  void initPage()
          Initializes a page.
protected  boolean mayBeRemoved(java.util.ArrayList row)
           
protected  void newLine()
          Adds the current line to the list of lines and also adds an empty line.
 boolean newPage()
          Makes a new page and sends it to the PdfWriter.
 void open()
          Opens the document.
protected  void renderCells(PdfDocument.RenderingContext ctx, java.util.List cells, boolean hasToFit)
           
 void resetFooter()
          Resets the footer of this document.
 void resetHeader()
          Resets the header of this document.
 void resetPageCount()
          Sets the page number to 0.
 void setCollection(PdfCollection collection)
          Sets the collection dictionary.
 void setFooter(HeaderFooter footer)
          Changes the footer of this document.
 void setHeader(HeaderFooter header)
          Changes the header of this document.
 boolean setMarginMirroring(boolean MarginMirroring)
          Set the margin mirroring.
 boolean setMarginMirroringTopBottom(boolean MarginMirroringTopBottom)
          Set the margin mirroring.
 boolean setMargins(float marginLeft, float marginRight, float marginTop, float marginBottom)
          Sets the margins.
protected  void setNewPageSizeAndMargins()
           
 void setPageCount(int pageN)
          Sets the page number.
 boolean setPageSize(Rectangle pageSize)
          Sets the pagesize.
 void setXmpMetadata(byte[] xmpMetadata)
          Use this method to set the XMP Metadata.
 
Methods inherited from class com.lowagie.text.Document
addAuthor, addCreationDate, addCreator, addDocListener, addHeader, addKeywords, addProducer, addSubject, addTitle, bottom, bottom, bottomMargin, getHtmlStyleClass, getJavaScript_onLoad, getJavaScript_onUnLoad, getPageNumber, getPageSize, getProduct, getRelease, getVersion, isMarginMirroring, isOpen, left, left, leftMargin, removeDocListener, right, right, rightMargin, setHtmlStyleClass, setJavaScript_onLoad, setJavaScript_onUnLoad, top, top, topMargin
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

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 java.util.ArrayList 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 java.util.TreeMap localDestinations
Stores the destinations keyed by name. Value is Object[]{PdfAction,PdfIndirectReference,PdfDestintion}.


documentLevelJS

protected java.util.HashMap documentLevelJS

SIXTEEN_DIGITS

protected static final java.text.DecimalFormat SIXTEEN_DIGITS

documentFileAttachment

protected java.util.HashMap documentFileAttachment

openActionName

protected java.lang.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 java.util.HashMap thisBoxSize
This is the size of the several boxes of the current Page.


boxSize

protected java.util.HashMap boxSize
This is the size of the several boxes that will be used in the next page.


pageEmpty

protected boolean pageEmpty
This checks if the page is empty.


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 com.lowagie.text.pdf.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.

Constructor Detail

PdfDocument

public PdfDocument()
Constructs a new PDF document.

Method Detail

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

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)
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:
DocListener.setMarginMirroring(boolean)

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:
DocListener.setMarginMirroring(boolean)

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

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

addSpacing

protected void addSpacing(float extraspace,
                          float oldleading,
                          Font f)
Adds extra space. This method should probably be rewritten.


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

setCollection

public void setCollection(PdfCollection collection)
Sets the collection dictionary.

Parameters:
collection - a dictionary of type PdfCollection

setNewPageSizeAndMargins

protected void setNewPageSizeAndMargins()

clearTextWrap

public void clearTextWrap()
Method added by Pelikan Stephan


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

analyzeRow

protected void analyzeRow(java.util.ArrayList rows,
                          PdfDocument.RenderingContext ctx)

mayBeRemoved

protected boolean mayBeRemoved(java.util.ArrayList row)

consumeRowspan

protected void consumeRowspan(java.util.ArrayList row,
                              PdfDocument.RenderingContext ctx)

extractRows

protected java.util.ArrayList extractRows(java.util.ArrayList cells,
                                          PdfDocument.RenderingContext ctx)

renderCells

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

doFooter

protected void doFooter()
                 throws DocumentException
Throws:
DocumentException

doHeader

protected void doHeader()
                 throws DocumentException
Throws:
DocumentException


iText 2.1.7