Package com.itextpdf.text.pdf
Class PdfDocument
- java.lang.Object
-
- com.itextpdf.text.Document
-
- com.itextpdf.text.pdf.PdfDocument
-
- All Implemented Interfaces:
DocListener
,ElementListener
,IAccessibleElement
,java.util.EventListener
public class PdfDocument extends Document
PdfDocument
is the class that is used byPdfWriter
to translate aDocument
into a PDF with different pages.A
PdfDocument
always listens to aDocument
and adds the Pdf representation of everyElement
that is added to theDocument
.- Since:
- 2.0.8 (class was package-private before)
- See Also:
Document
,DocListener
,PdfWriter
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description class
PdfDocument.Destination
static class
PdfDocument.Indentation
static class
PdfDocument.PdfInfo
PdfInfo
is the PDF InfoDictionary.
-
Field Summary
Fields Modifier and Type Field Description protected PdfDictionary
additionalActions
protected int
alignment
This represents the current alignment of the PDF Elements.protected PdfAction
anchorAction
The current activePdfAction
when processing anAnchor
.protected java.util.HashMap<java.lang.String,PdfRectangle>
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 currentPdfOutline
in the hierarchy of outlines.protected java.util.HashMap<java.lang.String,PdfObject>
documentFileAttachment
protected java.util.HashMap<java.lang.String,PdfObject>
documentLevelJS
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 PdfString
language
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 PdfLine
line
The line that is currently being written.protected java.util.ArrayList<PdfLine>
lines
The lines that are written until now.protected java.util.TreeMap<java.lang.String,PdfDocument.Destination>
localDestinations
Stores the destinations keyed by name.protected java.util.HashMap<java.lang.Object,java.lang.Integer>
markPoints
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 boolean
openMCDocument
protected PdfDictionary
pageAA
protected PdfPageLabels
pageLabels
protected com.itextpdf.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 java.util.HashMap<java.lang.Object,int[]>
structParentIndices
protected TabSettings
tabSettings
The current tab settings.protected PdfContentByte
text
This is the PdfContentByte object, containing the text.protected int
textEmptySize
protected java.util.HashMap<java.lang.String,PdfRectangle>
thisBoxSize
This is the size of the several boxes of the current Page.protected PdfViewerPreferencesImp
viewerPreferences
Contains the Viewer preferences of this PDF document.protected PdfWriter
writer
ThePdfWriter
.-
Fields inherited from class com.itextpdf.text.Document
accessibleAttributes, chapternumber, close, compress, htmlStyleClass, id, javaScript_onLoad, javaScript_onUnLoad, listeners, marginBottom, marginLeft, marginMirroring, marginMirroringTopBottom, marginRight, marginTop, open, pageN, pageSize, plainRandomAccess, role, wmfFontCorrection
-
-
Constructor Summary
Constructors Constructor Description PdfDocument()
Constructs a new PDF document.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
add(Element element)
Signals that anElement
was added to theDocument
.protected void
add(Image image)
Adds an image to the document.protected void
addSpacing(float extraspace, float oldleading, Font f)
Calls addSpacing(float, float, Font, boolean (false)).protected void
addSpacing(float extraspace, float oldleading, Font f, boolean spacingAfter)
Adds extra spacing.void
addWriter(PdfWriter writer)
Adds aPdfWriter
to thePdfDocument
.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.heightprotected 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 Stephanvoid
close()
Closes the document.protected java.util.ArrayList<IAccessibleElement>
endPage()
protected void
ensureNewLine()
Ensures that a new line has been started.protected float
flushLines()
Writes all the lines to the text-object.protected void
flushStructureElementsOnNewPage()
float
getLeading()
Getter for the current leading.int
getNextMarkPoint(java.lang.Object obj)
PdfPageLabels
getPageLabels()
PdfOutline
getRootOutline()
Gets the root outline.protected PdfStructureElement
getStructElement(AccessibleElementId id)
protected PdfStructureElement
getStructElement(AccessibleElementId id, boolean toSaveFetchedElement)
java.util.Set<AccessibleElementId>
getStructElements()
int
getStructParentIndex(java.lang.Object obj)
int[]
getStructParentIndexAndNextMarkPoint(java.lang.Object obj)
TabSettings
getTabSettings()
Getter for the current tab stops.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 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 thePdfWriter
.void
open()
Opens the document.protected void
popLeading()
Restore @leading from leadingStackprotected void
pushLeading()
Save current @leadingvoid
resetPageCount()
Sets the page number to 0.protected void
saveStructElement(AccessibleElementId id, PdfStructureElement element)
void
setCollection(PdfCollection collection)
Sets the collection dictionary.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
setTabSettings(TabSettings tabSettings)
Setter for the current tab stops.void
setXmpMetadata(byte[] xmpMetadata)
Use this method to set the XMP Metadata.protected void
useExternalCache(TempFileCache externalCache)
-
Methods inherited from class com.itextpdf.text.Document
addAuthor, addCreationDate, addCreator, addDocListener, addHeader, addKeywords, addLanguage, addProducer, addSubject, addTitle, bottom, bottom, bottomMargin, getAccessibleAttribute, getAccessibleAttributes, getHtmlStyleClass, getId, getJavaScript_onLoad, getJavaScript_onUnLoad, getPageNumber, getPageSize, getRole, isInline, isMarginMirroring, isOpen, left, left, leftMargin, removeDocListener, right, right, rightMargin, setAccessibleAttribute, setHtmlStyleClass, setId, setJavaScript_onLoad, setJavaScript_onUnLoad, setRole, top, top, topMargin
-
-
-
-
Field Detail
-
writer
protected PdfWriter writer
ThePdfWriter
.
-
openMCDocument
protected boolean openMCDocument
-
structParentIndices
protected java.util.HashMap<java.lang.Object,int[]> structParentIndices
-
markPoints
protected java.util.HashMap<java.lang.Object,java.lang.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 activePdfAction
when processing anAnchor
.
-
tabSettings
protected TabSettings tabSettings
The current tab settings.- Since:
- 5.4.0
-
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 java.util.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.
-
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 currentPdfOutline
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<java.lang.String,PdfDocument.Destination> localDestinations
Stores the destinations keyed by name. Value is aDestination
.
-
documentLevelJS
protected java.util.HashMap<java.lang.String,PdfObject> documentLevelJS
-
SIXTEEN_DIGITS
protected static final java.text.DecimalFormat SIXTEEN_DIGITS
-
documentFileAttachment
protected java.util.HashMap<java.lang.String,PdfObject> documentFileAttachment
-
openActionName
protected java.lang.String openActionName
-
openActionAction
protected PdfAction openActionAction
-
additionalActions
protected PdfDictionary additionalActions
-
collection
protected PdfCollection collection
-
language
protected PdfString language
-
nextPageSize
protected Rectangle nextPageSize
This is the size of the next page.
-
thisBoxSize
protected java.util.HashMap<java.lang.String,PdfRectangle> thisBoxSize
This is the size of the several boxes of the current Page.
-
boxSize
protected java.util.HashMap<java.lang.String,PdfRectangle> boxSize
This is the size of the several boxes that will be used in the next page.
-
pageAA
protected PdfDictionary pageAA
-
pageResources
protected com.itextpdf.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.
-
-
Method Detail
-
addWriter
public void addWriter(PdfWriter writer) throws DocumentException
Adds aPdfWriter
to thePdfDocument
.- Parameters:
writer
- thePdfWriter
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
-
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 anElement
was added to theDocument
.- Specified by:
add
in interfaceElementListener
- Overrides:
add
in classDocument
- 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 interfaceDocListener
- Overrides:
open
in classDocument
-
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 interfaceDocListener
- Overrides:
close
in classDocument
-
setXmpMetadata
public void setXmpMetadata(byte[] xmpMetadata) throws java.io.IOException
Use this method to set the XMP Metadata.- Parameters:
xmpMetadata
- The xmpMetadata to set.- Throws:
java.io.IOException
-
newPage
public boolean newPage()
Makes a new page and sends it to thePdfWriter
.- Specified by:
newPage
in interfaceDocListener
- Overrides:
newPage
in classDocument
- Returns:
- true if new page is added
-
endPage
protected java.util.ArrayList<IAccessibleElement> endPage()
-
setPageSize
public boolean setPageSize(Rectangle pageSize)
Sets the pagesize.- Specified by:
setPageSize
in interfaceDocListener
- Overrides:
setPageSize
in classDocument
- 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 interfaceDocListener
- Overrides:
setMargins
in classDocument
- Parameters:
marginLeft
- the margin on the leftmarginRight
- the margin on the rightmarginTop
- the margin on the topmarginBottom
- 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 interfaceDocListener
- Overrides:
setMarginMirroring
in classDocument
- 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.- Specified by:
setMarginMirroringTopBottom
in interfaceDocListener
- Overrides:
setMarginMirroringTopBottom
in classDocument
- 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 interfaceDocListener
- Overrides:
setPageCount
in classDocument
- Parameters:
pageN
- the new page number
-
resetPageCount
public void resetPageCount()
Sets the page number to 0.- Specified by:
resetPageCount
in interfaceDocListener
- Overrides:
resetPageCount
in classDocument
-
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
-
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)
Calls addSpacing(float, float, Font, boolean (false)).
-
addSpacing
protected void addSpacing(float extraspace, float oldleading, Font f, boolean spacingAfter)
Adds extra spacing.
-
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
-
getPageLabels
public PdfPageLabels getPageLabels()
-
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
-
getStructParentIndex
public int getStructParentIndex(java.lang.Object obj)
-
getNextMarkPoint
public int getNextMarkPoint(java.lang.Object obj)
-
getStructParentIndexAndNextMarkPoint
public int[] getStructParentIndexAndNextMarkPoint(java.lang.Object obj)
-
add
protected void add(Image image) throws PdfException, DocumentException
Adds an image to the document.- Parameters:
image
- theImage
to add- Throws:
PdfException
- on errorDocumentException
- on error
-
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 java.util.Set<AccessibleElementId> getStructElements()
-
-