Class PdfWriter

    • Field Detail

      • GENERATION_MAX

        public static final int GENERATION_MAX
        The highest generation number possible.
        Since:
        iText 2.1.6
        See Also:
        Constant Field Values
      • COUNTER

        protected static Counter COUNTER
      • pdf

        protected PdfDocument pdf
        the pdfdocument object.
      • directContent

        protected PdfContentByte directContent
        The direct content in this document.
      • directContentUnder

        protected PdfContentByte directContentUnder
        The direct content under in this document.
      • extraCatalog

        protected PdfDictionary extraCatalog
        Holds value of property extraCatalog this is used for Output Intents.
      • root

        protected PdfPages root
        The root of the page tree.
      • pageReferences

        protected java.util.ArrayList<PdfIndirectReference> pageReferences
        The PdfIndirectReference to the pages.
      • currentPageNumber

        protected int currentPageNumber
        The current page number.
      • tabs

        protected PdfName tabs
        The value of the Tabs entry in the page dictionary.
        Since:
        2.1.5
      • pageDictEntries

        protected PdfDictionary pageDictEntries
        Additional page dictionary entries.
        Since:
        5.1.0
      • pageEvent

        private PdfPageEvent pageEvent
        The PdfPageEvent for this document.
      • prevxref

        protected long prevxref
        A number referring to the previous Cross-Reference Table.
      • originalFileID

        protected byte[] originalFileID
        The original file ID (if present).
      • newBookmarks

        protected java.util.List<java.util.HashMap<java.lang.String,​java.lang.Object>> newBookmarks
      • VERSION_1_2

        public static final char VERSION_1_2
        possible PDF version (header)
        See Also:
        Constant Field Values
      • VERSION_1_3

        public static final char VERSION_1_3
        possible PDF version (header)
        See Also:
        Constant Field Values
      • VERSION_1_4

        public static final char VERSION_1_4
        possible PDF version (header)
        See Also:
        Constant Field Values
      • VERSION_1_5

        public static final char VERSION_1_5
        possible PDF version (header)
        See Also:
        Constant Field Values
      • VERSION_1_6

        public static final char VERSION_1_6
        possible PDF version (header)
        See Also:
        Constant Field Values
      • VERSION_1_7

        public static final char VERSION_1_7
        possible PDF version (header)
        See Also:
        Constant Field Values
      • PDF_VERSION_1_2

        public static final PdfName PDF_VERSION_1_2
        possible PDF version (catalog)
      • PDF_VERSION_1_3

        public static final PdfName PDF_VERSION_1_3
        possible PDF version (catalog)
      • PDF_VERSION_1_4

        public static final PdfName PDF_VERSION_1_4
        possible PDF version (catalog)
      • PDF_VERSION_1_5

        public static final PdfName PDF_VERSION_1_5
        possible PDF version (catalog)
      • PDF_VERSION_1_6

        public static final PdfName PDF_VERSION_1_6
        possible PDF version (catalog)
      • PDF_VERSION_1_7

        public static final PdfName PDF_VERSION_1_7
        possible PDF version (catalog)
      • pdf_version

        protected PdfVersionImp pdf_version
        Stores the version information for the header and the catalog.
      • PageLayoutSinglePage

        public static final int PageLayoutSinglePage
        A viewer preference
        See Also:
        Constant Field Values
      • PageLayoutOneColumn

        public static final int PageLayoutOneColumn
        A viewer preference
        See Also:
        Constant Field Values
      • PageLayoutTwoColumnLeft

        public static final int PageLayoutTwoColumnLeft
        A viewer preference
        See Also:
        Constant Field Values
      • PageLayoutTwoColumnRight

        public static final int PageLayoutTwoColumnRight
        A viewer preference
        See Also:
        Constant Field Values
      • PageLayoutTwoPageLeft

        public static final int PageLayoutTwoPageLeft
        A viewer preference
        See Also:
        Constant Field Values
      • PageLayoutTwoPageRight

        public static final int PageLayoutTwoPageRight
        A viewer preference
        See Also:
        Constant Field Values
      • PageModeUseNone

        public static final int PageModeUseNone
        A viewer preference
        See Also:
        Constant Field Values
      • PageModeUseOutlines

        public static final int PageModeUseOutlines
        A viewer preference
        See Also:
        Constant Field Values
      • PageModeUseThumbs

        public static final int PageModeUseThumbs
        A viewer preference
        See Also:
        Constant Field Values
      • PageModeFullScreen

        public static final int PageModeFullScreen
        A viewer preference
        See Also:
        Constant Field Values
      • PageModeUseOC

        public static final int PageModeUseOC
        A viewer preference
        See Also:
        Constant Field Values
      • PageModeUseAttachments

        public static final int PageModeUseAttachments
        A viewer preference
        See Also:
        Constant Field Values
      • DisplayDocTitle

        public static final int DisplayDocTitle
        A viewer preference
        See Also:
        Constant Field Values
      • NonFullScreenPageModeUseNone

        public static final int NonFullScreenPageModeUseNone
        A viewer preference
        See Also:
        Constant Field Values
      • NonFullScreenPageModeUseOutlines

        public static final int NonFullScreenPageModeUseOutlines
        A viewer preference
        See Also:
        Constant Field Values
      • NonFullScreenPageModeUseThumbs

        public static final int NonFullScreenPageModeUseThumbs
        A viewer preference
        See Also:
        Constant Field Values
      • NonFullScreenPageModeUseOC

        public static final int NonFullScreenPageModeUseOC
        A viewer preference
        See Also:
        Constant Field Values
      • PrintScalingNone

        public static final int PrintScalingNone
        A viewer preference
        See Also:
        Constant Field Values
      • DOCUMENT_CLOSE

        public static final PdfName DOCUMENT_CLOSE
        action value
      • WILL_SAVE

        public static final PdfName WILL_SAVE
        action value
      • DID_SAVE

        public static final PdfName DID_SAVE
        action value
      • WILL_PRINT

        public static final PdfName WILL_PRINT
        action value
      • DID_PRINT

        public static final PdfName DID_PRINT
        action value
      • SIGNATURE_EXISTS

        public static final int SIGNATURE_EXISTS
        signature value
        See Also:
        Constant Field Values
      • SIGNATURE_APPEND_ONLY

        public static final int SIGNATURE_APPEND_ONLY
        signature value
        See Also:
        Constant Field Values
      • xmpMetadata

        protected byte[] xmpMetadata
        XMP Metadata for the document.
      • pdfIsoConformance

        protected PdfIsoConformance pdfIsoConformance
        Stores the PDF ISO conformance.
      • STANDARD_ENCRYPTION_40

        public static final int STANDARD_ENCRYPTION_40
        Type of encryption
        See Also:
        Constant Field Values
      • STANDARD_ENCRYPTION_128

        public static final int STANDARD_ENCRYPTION_128
        Type of encryption
        See Also:
        Constant Field Values
      • ENCRYPTION_AES_128

        public static final int ENCRYPTION_AES_128
        Type of encryption
        See Also:
        Constant Field Values
      • ENCRYPTION_AES_256

        public static final int ENCRYPTION_AES_256
        Type of encryption
        See Also:
        Constant Field Values
      • ENCRYPTION_MASK

        static final int ENCRYPTION_MASK
        Mask to separate the encryption type from the encryption mode.
        See Also:
        Constant Field Values
      • DO_NOT_ENCRYPT_METADATA

        public static final int DO_NOT_ENCRYPT_METADATA
        Add this to the mode to keep the metadata in clear text
        See Also:
        Constant Field Values
      • EMBEDDED_FILES_ONLY

        public static final int EMBEDDED_FILES_ONLY
        Add this to the mode to keep encrypt only the embedded files.
        Since:
        2.1.3
        See Also:
        Constant Field Values
      • ALLOW_PRINTING

        public static final int ALLOW_PRINTING
        The operation permitted when the document is opened with the user password
        Since:
        2.0.7
        See Also:
        Constant Field Values
      • ALLOW_MODIFY_CONTENTS

        public static final int ALLOW_MODIFY_CONTENTS
        The operation permitted when the document is opened with the user password
        Since:
        2.0.7
        See Also:
        Constant Field Values
      • ALLOW_COPY

        public static final int ALLOW_COPY
        The operation permitted when the document is opened with the user password
        Since:
        2.0.7
        See Also:
        Constant Field Values
      • ALLOW_MODIFY_ANNOTATIONS

        public static final int ALLOW_MODIFY_ANNOTATIONS
        The operation permitted when the document is opened with the user password
        Since:
        2.0.7
        See Also:
        Constant Field Values
      • ALLOW_FILL_IN

        public static final int ALLOW_FILL_IN
        The operation permitted when the document is opened with the user password
        Since:
        2.0.7
        See Also:
        Constant Field Values
      • ALLOW_SCREENREADERS

        public static final int ALLOW_SCREENREADERS
        The operation permitted when the document is opened with the user password
        Since:
        2.0.7
        See Also:
        Constant Field Values
      • ALLOW_ASSEMBLY

        public static final int ALLOW_ASSEMBLY
        The operation permitted when the document is opened with the user password
        Since:
        2.0.7
        See Also:
        Constant Field Values
      • ALLOW_DEGRADED_PRINTING

        public static final int ALLOW_DEGRADED_PRINTING
        The operation permitted when the document is opened with the user password
        Since:
        2.0.7
        See Also:
        Constant Field Values
      • AllowPrinting

        @Deprecated
        public static final int AllowPrinting
        Deprecated.
        As of iText 2.0.7, use ALLOW_PRINTING instead. Scheduled for removal at or after 2.2.0
        See Also:
        Constant Field Values
      • AllowModifyContents

        @Deprecated
        public static final int AllowModifyContents
        Deprecated.
        As of iText 2.0.7, use ALLOW_MODIFY_CONTENTS instead. Scheduled for removal at or after 2.2.0
        See Also:
        Constant Field Values
      • AllowCopy

        @Deprecated
        public static final int AllowCopy
        Deprecated.
        As of iText 2.0.7, use ALLOW_COPY instead. Scheduled for removal at or after 2.2.0
        See Also:
        Constant Field Values
      • AllowModifyAnnotations

        @Deprecated
        public static final int AllowModifyAnnotations
        Deprecated.
        As of iText 2.0.7, use ALLOW_MODIFY_ANNOTATIONS instead. Scheduled for removal at or after 2.2.0
        See Also:
        Constant Field Values
      • AllowFillIn

        @Deprecated
        public static final int AllowFillIn
        Deprecated.
        As of iText 2.0.7, use ALLOW_FILL_IN instead. Scheduled for removal at or after 2.2.0
        See Also:
        Constant Field Values
      • AllowScreenReaders

        @Deprecated
        public static final int AllowScreenReaders
        Deprecated.
        As of iText 2.0.7, use ALLOW_SCREENREADERS instead. Scheduled for removal at or after 2.2.0
        See Also:
        Constant Field Values
      • AllowAssembly

        @Deprecated
        public static final int AllowAssembly
        Deprecated.
        As of iText 2.0.7, use ALLOW_ASSEMBLY instead. Scheduled for removal at or after 2.2.0
        See Also:
        Constant Field Values
      • AllowDegradedPrinting

        @Deprecated
        public static final int AllowDegradedPrinting
        Deprecated.
        As of iText 2.0.7, use ALLOW_DEGRADED_PRINTING instead. Scheduled for removal at or after 2.2.0
        See Also:
        Constant Field Values
      • crypto

        protected PdfEncryption crypto
        Contains the business logic for cryptography.
      • fullCompression

        protected boolean fullCompression
        Holds value of property fullCompression.
      • compressionLevel

        protected int compressionLevel
        The compression level of the content streams.
        Since:
        2.1.3
      • documentFonts

        protected java.util.LinkedHashMap<BaseFont,​FontDetails> documentFonts
        The fonts of this document
      • fontNumber

        protected int fontNumber
        The font number counter for the fonts in the document.
      • formXObjects

        protected java.util.HashMap<PdfIndirectReference,​java.lang.Object[]> formXObjects
        The form XObjects in this document. The key is the xref and the value is Object[]{PdfName, template}.
      • formXObjectsCounter

        protected int formXObjectsCounter
        The name counter for the form XObjects name.
      • readerInstances

        protected java.util.HashMap<PdfReader,​PdfReaderInstance> readerInstances
        Instances of PdfReader/PdfReaderInstance that are used to import pages.
        Since:
        5.0.3
      • colorNumber

        protected int colorNumber
        The color number counter for the colors in the document.
      • documentPatterns

        protected java.util.HashMap<PdfPatternPainter,​PdfName> documentPatterns
        The patterns of this document
      • patternNumber

        protected int patternNumber
        The pattern number counter for the colors in the document.
      • documentShadingPatterns

        protected java.util.HashSet<PdfShadingPattern> documentShadingPatterns
      • documentShadings

        protected java.util.HashSet<PdfShading> documentShadings
      • documentProperties

        protected java.util.HashMap<java.lang.Object,​PdfObject[]> documentProperties
      • tagged

        protected boolean tagged
      • taggingMode

        protected int taggingMode
      • documentOCG

        protected java.util.LinkedHashSet<PdfOCG> documentOCG
        A hashSet containing all the PdfLayer objects.
      • documentOCGorder

        protected java.util.ArrayList<PdfOCG> documentOCGorder
        An array list used to define the order of an OCG tree.
      • OCProperties

        protected PdfOCProperties OCProperties
        The OCProperties in a catalog dictionary.
      • OCGRadioGroup

        protected PdfArray OCGRadioGroup
        The RBGroups array in an OCG dictionary
      • OCGLocked

        protected PdfArray OCGLocked
        The locked array in an OCG dictionary
        Since:
        2.1.2
      • PAGE_OPEN

        public static final PdfName PAGE_OPEN
        action value
      • PAGE_CLOSE

        public static final PdfName PAGE_CLOSE
        action value
      • group

        protected PdfDictionary group
        A group attributes dictionary specifying the attributes of the page's page group for use in the transparent imaging model
      • SPACE_CHAR_RATIO_DEFAULT

        public static final float SPACE_CHAR_RATIO_DEFAULT
        The default space-char ratio.
        See Also:
        Constant Field Values
      • NO_SPACE_CHAR_RATIO

        public static final float NO_SPACE_CHAR_RATIO
        Disable the inter-character spacing.
        See Also:
        Constant Field Values
      • spaceCharRatio

        private float spaceCharRatio
        The ratio between the extra word spacing and the extra character spacing. Extra word spacing will grow ratio times more than extra character spacing.
      • RUN_DIRECTION_DEFAULT

        public static final int RUN_DIRECTION_DEFAULT
        Use the default run direction.
        See Also:
        Constant Field Values
      • RUN_DIRECTION_NO_BIDI

        public static final int RUN_DIRECTION_NO_BIDI
        Do not use bidirectional reordering.
        See Also:
        Constant Field Values
      • RUN_DIRECTION_LTR

        public static final int RUN_DIRECTION_LTR
        Use bidirectional reordering with left-to-right preferential run direction.
        See Also:
        Constant Field Values
      • RUN_DIRECTION_RTL

        public static final int RUN_DIRECTION_RTL
        Use bidirectional reordering with right-to-left preferential run direction.
        See Also:
        Constant Field Values
      • runDirection

        protected int runDirection
      • patternColorspaceRGB

        protected ColorDetails patternColorspaceRGB
      • patternColorspaceGRAY

        protected ColorDetails patternColorspaceGRAY
      • patternColorspaceCMYK

        protected ColorDetails patternColorspaceCMYK
      • imageDictionary

        protected PdfDictionary imageDictionary
        Dictionary, containing all the images of the PDF document
      • images

        private final java.util.HashMap<java.lang.Long,​PdfName> images
        This is the list with all the images in the document.
      • JBIG2Globals

        protected java.util.HashMap<PdfStream,​PdfIndirectReference> JBIG2Globals
        A HashSet with Stream objects containing JBIG2 Globals
        Since:
        2.1.5
      • userProperties

        private boolean userProperties
        A flag indicating the presence of structure elements that contain user properties attributes.
      • rgbTransparencyBlending

        private boolean rgbTransparencyBlending
        Holds value of property RGBTranparency.
      • standardStructElems_1_4

        private static final java.util.List<PdfName> standardStructElems_1_4
      • standardStructElems_1_7

        private static final java.util.List<PdfName> standardStructElems_1_7
    • Constructor Detail

      • PdfWriter

        protected PdfWriter()
        Constructs a PdfWriter.
      • PdfWriter

        protected PdfWriter​(PdfDocument document,
                            java.io.OutputStream os)
        Constructs a PdfWriter.

        Remark: a PdfWriter can only be constructed by calling the method getInstance(Document document, OutputStream os).

        Parameters:
        document - The PdfDocument that has to be written
        os - The OutputStream the writer has to write to.
    • Method Detail

      • getCounter

        protected Counter getCounter()
      • getInstance

        public static PdfWriter getInstance​(Document document,
                                            java.io.OutputStream os)
                                     throws DocumentException
        Use this method to get an instance of the PdfWriter.
        Parameters:
        document - The Document that has to be written
        os - The OutputStream the writer has to write to.
        Returns:
        a new PdfWriter
        Throws:
        DocumentException - on error
      • getInstance

        public static PdfWriter getInstance​(Document document,
                                            java.io.OutputStream os,
                                            DocListener listener)
                                     throws DocumentException
        Use this method to get an instance of the PdfWriter.
        Parameters:
        document - The Document that has to be written
        os - The OutputStream the writer has to write to.
        listener - A DocListener to pass to the PdfDocument.
        Returns:
        a new PdfWriter
        Throws:
        DocumentException - on error
      • getPdfDocument

        PdfDocument getPdfDocument()
        Gets the PdfDocument associated with this writer.
        Returns:
        the PdfDocument
      • getInfo

        public PdfDictionary getInfo()
        Use this method to get the info dictionary if you want to change it directly (add keys and values to the info dictionary).
        Returns:
        the info dictionary
      • getVerticalPosition

        public float getVerticalPosition​(boolean ensureNewLine)
        Use this method to get 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.
      • setInitialLeading

        public void setInitialLeading​(float leading)
                               throws DocumentException
        Sets the initial leading for the PDF document. This has to be done before the document is opened.
        Parameters:
        leading - the initial leading
        Throws:
        DocumentException - if you try setting the leading after the document was opened.
        Since:
        2.1.6
      • getDirectContent

        public PdfContentByte getDirectContent()
        Use this method to get the direct content for this document. There is only one direct content, multiple calls to this method will allways retrieve the same object.
        Returns:
        the direct content
      • getDirectContentUnder

        public PdfContentByte getDirectContentUnder()
        Use this method to get the direct content under for this document. There is only one direct content, multiple calls to this method will always retrieve the same object.
        Returns:
        the direct content
      • resetContent

        void resetContent()
        Resets all the direct contents to empty. This happens when a new page is started.
      • getColorProfile

        public ICC_Profile getColorProfile()
      • addLocalDestinations

        void addLocalDestinations​(java.util.TreeMap<java.lang.String,​PdfDocument.Destination> desto)
                           throws java.io.IOException
        Adds the local destinations to the body of the document.
        Parameters:
        desto - the HashMap containing the destinations
        Throws:
        java.io.IOException - on error
      • addToBody

        public PdfIndirectObject addToBody​(PdfObject object)
                                    throws java.io.IOException
        Use this method to add a PDF object to the PDF body. Use this method only if you know what you're doing!
        Parameters:
        object -
        Returns:
        a PdfIndirectObject
        Throws:
        java.io.IOException
      • addToBody

        public PdfIndirectObject addToBody​(PdfObject object,
                                           boolean inObjStm)
                                    throws java.io.IOException
        Use this method to add a PDF object to the PDF body. Use this method only if you know what you're doing!
        Parameters:
        object -
        inObjStm -
        Returns:
        a PdfIndirectObject
        Throws:
        java.io.IOException
      • addToBody

        public PdfIndirectObject addToBody​(PdfObject object,
                                           PdfIndirectReference ref)
                                    throws java.io.IOException
        Use this method to add a PDF object to the PDF body. Use this method only if you know what you're doing!
        Parameters:
        object -
        ref -
        Returns:
        a PdfIndirectObject
        Throws:
        java.io.IOException
      • addToBody

        public PdfIndirectObject addToBody​(PdfObject object,
                                           PdfIndirectReference ref,
                                           boolean inObjStm)
                                    throws java.io.IOException
        Use this method to add a PDF object to the PDF body. Use this method only if you know what you're doing!
        Parameters:
        object -
        ref -
        inObjStm -
        Returns:
        a PdfIndirectObject
        Throws:
        java.io.IOException
      • addToBody

        public PdfIndirectObject addToBody​(PdfObject object,
                                           int refNumber)
                                    throws java.io.IOException
        Use this method to add a PDF object to the PDF body. Use this method only if you know what you're doing!
        Parameters:
        object -
        refNumber -
        Returns:
        a PdfIndirectObject
        Throws:
        java.io.IOException
      • addToBody

        public PdfIndirectObject addToBody​(PdfObject object,
                                           int refNumber,
                                           boolean inObjStm)
                                    throws java.io.IOException
        Use this method to add a PDF object to the PDF body. Use this method only if you know what you're doing!
        Parameters:
        object -
        refNumber -
        inObjStm -
        Returns:
        a PdfIndirectObject
        Throws:
        java.io.IOException
      • getPdfIndirectReference

        public PdfIndirectReference getPdfIndirectReference()
        Use this to get an PdfIndirectReference for an object that will be created in the future. Use this method only if you know what you're doing!
        Returns:
        the PdfIndirectReference
      • getIndirectReferenceNumber

        protected int getIndirectReferenceNumber()
      • getOs

        public OutputStreamCounter getOs()
        Returns the outputStreamCounter.
        Returns:
        the outputStreamCounter
      • buildStructTreeRootForTagged

        protected void buildStructTreeRootForTagged​(PdfDictionary catalog)
      • getExtraCatalog

        public PdfDictionary getExtraCatalog()
        Sets extra keys to the catalog.
        Returns:
        the catalog to change
      • addPageDictEntry

        public void addPageDictEntry​(PdfName key,
                                     PdfObject object)
        Adds an additional entry for the page dictionary.
        Parameters:
        key - the key
        object - the PdfObject for the given key
        Since:
        5.1.0
      • getPageDictEntries

        public PdfDictionary getPageDictEntries()
        Gets the additional pageDictEntries.
        Returns:
        the page dictionary entries
        Since:
        5.1.0
      • resetPageDictEntries

        public void resetPageDictEntries()
        Resets the additional pageDictEntries.
        Since:
        5.1.0
      • setLinearPageMode

        public void setLinearPageMode()
        Use this method to make sure the page tree has a linear structure (every leave is attached directly to the root). Use this method to allow page reordering with method reorderPages.
      • reorderPages

        public int reorderPages​(int[] order)
                         throws DocumentException
        Use this method to reorder the pages in the document. A null argument value only returns the number of pages to process. It is advisable to issue a Document.newPage() before using this method.
        Parameters:
        order - an array with the new page sequence. It must have the same size as the number of pages.
        Returns:
        the total number of pages
        Throws:
        DocumentException - if all the pages are not present in the array
      • getPageReference

        public PdfIndirectReference getPageReference​(int page)
        Use this method to get a reference to a page existing or not. If the page does not exist yet the reference will be created in advance. If on closing the document, a page number greater than the total number of pages was requested, an exception is thrown.
        Parameters:
        page - the page number. The first page is 1
        Returns:
        the reference to the page
      • getPageNumber

        public int getPageNumber()
        Gets the pagenumber of this document. This number can be different from the real pagenumber, if you have (re)set the page number previously.
        Returns:
        a page number
      • getCurrentPageNumber

        public int getCurrentPageNumber()
      • setPageViewport

        public void setPageViewport​(PdfArray vp)
        Sets the Viewport for the next page.
        Parameters:
        vp - an array consisting of Viewport dictionaries.
        Since:
        5.1.0
      • setTabs

        public void setTabs​(PdfName tabs)
        Sets the value for the Tabs entry in the page tree.
        Parameters:
        tabs - Can be PdfName.R, PdfName.C or PdfName.S. Since the Adobe Extensions Level 3, it can also be PdfName.A or PdfName.W
        Since:
        2.1.5
      • getTabs

        public PdfName getTabs()
        Returns the value to be used for the Tabs entry in the page tree.
        Returns:
        the Tabs PdfName
        Since:
        2.1.5
      • add

        PdfIndirectReference add​(PdfPage page,
                                 PdfContents contents)
                          throws PdfException
        Adds some PdfContents to this Writer.

        The document has to be open before you can begin to add content to the body of the document.

        Parameters:
        page - the PdfPage to add
        contents - the PdfContents of the page
        Returns:
        a PdfIndirectReference
        Throws:
        PdfException - on error
      • setPageEvent

        public void setPageEvent​(PdfPageEvent event)
        Sets the PdfPageEvent for this document.
        Parameters:
        event - the PdfPageEvent for this document
      • getPageEvent

        public PdfPageEvent getPageEvent()
        Gets the PdfPageEvent for this document or null if none is set.
        Returns:
        the PdfPageEvent for this document or null if none is set
      • open

        public void open()
        Signals that the Document has been opened and that Elements can be added.

        When this method is called, the PDF-document header is written to the outputstream.

        Specified by:
        open in interface DocListener
        Overrides:
        open in class DocWriter
        See Also:
        DocWriter.open()
      • close

        public void close()
        Signals that the Document was closed and that no other Elements will be added.

        The pages-tree is built and written to the outputstream. A Catalog is constructed, as well as an Info-object, the reference table is composed and everything is written to the outputstream embedded in a Trailer.

        Specified by:
        close in interface DocListener
        Overrides:
        close in class DocWriter
        See Also:
        DocWriter.close()
      • addXFormsToBody

        protected void addXFormsToBody()
                                throws java.io.IOException
        Throws:
        java.io.IOException
      • addSharedObjectsToBody

        protected void addSharedObjectsToBody()
                                       throws java.io.IOException
        Throws:
        java.io.IOException
      • getRootOutline

        public PdfOutline getRootOutline()
        Use this method to get the root outline and construct bookmarks.
        Returns:
        the root outline
      • setOutlines

        public void setOutlines​(java.util.List<java.util.HashMap<java.lang.String,​java.lang.Object>> outlines)
        Sets the bookmarks. The list structure is defined in SimpleBookmark.
        Parameters:
        outlines - the bookmarks or null to remove any
      • writeOutlines

        protected void writeOutlines​(PdfDictionary catalog,
                                     boolean namedAsNames)
                              throws java.io.IOException
        Throws:
        java.io.IOException
      • setPdfVersion

        public void setPdfVersion​(char version)
        Description copied from interface: PdfVersion
        If the PDF Header hasn't been written yet, this changes the version as it will appear in the PDF Header. If the PDF header was already written to the OutputStream, this changes the version as it will appear in the Catalog.
        Specified by:
        setPdfVersion in interface PdfVersion
        Parameters:
        version - a character representing the PDF version
        See Also:
        PdfVersion.setPdfVersion(char)
      • setAtLeastPdfVersion

        public void setAtLeastPdfVersion​(char version)
        Description copied from interface: PdfVersion
        If the PDF Header hasn't been written yet, this changes the version as it will appear in the PDF Header, but only if the parameter refers to a higher version. If the PDF header was already written to the OutputStream, this changes the version as it will appear in the Catalog.
        Specified by:
        setAtLeastPdfVersion in interface PdfVersion
        Parameters:
        version - a character representing the PDF version
        See Also:
        PdfVersion.setAtLeastPdfVersion(char)
      • setPdfVersion

        public void setPdfVersion​(PdfName version)
        Description copied from interface: PdfVersion
        Sets the PDF version as it will appear in the Catalog. Note that this only has effect if you use a later version than the one that appears in the header. This method ignores the parameter if you try to set a lower version than the one currently set in the Catalog.
        Specified by:
        setPdfVersion in interface PdfVersion
        Parameters:
        version - the PDF name that will be used for the Version key in the catalog
        See Also:
        PdfVersion.setPdfVersion(com.itextpdf.text.pdf.PdfName)
      • getPdfVersion

        PdfVersionImp getPdfVersion()
        Returns the version information.
        Returns:
        the PdfVersion
      • setViewerPreferences

        public void setViewerPreferences​(int preferences)
        Description copied from interface: PdfViewerPreferences
        Sets the page layout and page mode preferences by ORing one or two of these constants.

        • The page layout to be used when the document is opened (choose one).
          • PageLayoutSinglePage - Display one page at a time. (default)
          • PageLayoutOneColumn - Display the pages in one column.
          • PageLayoutTwoColumnLeft - Display the pages in two columns, with odd-numbered pages on the left.
          • PageLayoutTwoColumnRight - Display the pages in two columns, with odd-numbered pages on the right.
          • PageLayoutTwoPageLeft - Display the pages two at a time, with odd-numbered pages on the left.
          • PageLayoutTwoPageRight - Display the pages two at a time, with odd-numbered pages on the right.
        • The page mode how the document should be displayed when opened (choose one).
          • PageModeUseNone - Neither document outline nor thumbnail images visible. (default)
          • PageModeUseOutlines - Document outline visible.
          • PageModeUseThumbs - Thumbnail images visible.
          • PageModeFullScreen - Full-screen mode, with no menu bar, window controls, or any other window visible.
          • PageModeUseOC - Optional content group panel visible
          • PageModeUseAttachments - Attachments panel visible
        For backward compatibility these values are also supported, but it's better to use method addViewerPreference(key, value) if you want to change the following preferences:
        • HideToolbar - A flag specifying whether to hide the viewer application's tool bars when the document is active.
        • HideMenubar - A flag specifying whether to hide the viewer application's menu bar when the document is active.
        • HideWindowUI - A flag specifying whether to hide user interface elements in the document's window (such as scroll bars and navigation controls), leaving only the document's contents displayed.
        • FitWindow - A flag specifying whether to resize the document's window to fit the size of the first displayed page.
        • CenterWindow - A flag specifying whether to position the document's window in the center of the screen.
        • DisplayDocTitle - A flag specifying whether to display the document's title in the top bar.
        • The predominant reading order for text. This entry has no direct effect on the document's contents or page numbering, but can be used to determine the relative positioning of pages when displayed side by side or printed n-up (choose one).
          • DirectionL2R - Left to right
          • DirectionR2L - Right to left (including vertical writing systems such as Chinese, Japanese, and Korean)
        • The document's page mode, specifying how to display the document on exiting full-screen mode. It is meaningful only if the page mode is PageModeFullScreen (choose one).
          • NonFullScreenPageModeUseNone - Neither document outline nor thumbnail images visible
          • NonFullScreenPageModeUseOutlines - Document outline visible
          • NNonFullScreenPageModeUseThumbs - Thumbnail images visible
          • NonFullScreenPageModeUseOC - Optional content group panel visible
        • PrintScalingNone - Indicates that the print dialog should reflect no page scaling.
        Specified by:
        setViewerPreferences in interface PdfViewerPreferences
        Parameters:
        preferences - the viewer preferences
        See Also:
        PdfViewerPreferences.setViewerPreferences(int)
      • addViewerPreference

        public void addViewerPreference​(PdfName key,
                                        PdfObject value)
        Description copied from interface: PdfViewerPreferences
        Adds a viewer preference.
        • In case the key is one of these values:
          • PdfName.HIDETOOLBAR
          • PdfName.HIDEMENUBAR
          • PdfName.HIDEWINDOWUI
          • PdfName.FITWINDOW
          • PdfName.CENTERWINDOW
          • PdfName.DISPLAYDOCTITLE
          The value must be a of type PdfBoolean (true or false).
        • In case the key is PdfName.NONFULLSCREENPAGEMODE, the value must be one of these names:
          • PdfName.USENONE
          • PdfName.USEOUTLINES
          • PdfName.USETHUMBS
          • PdfName.USEOC
        • In case the key is PdfName.DIRECTION, the value must be one of these names:
          • PdfName.L2R
          • PdfName.R2L
        • In case the key is one of these values:
          • PdfName.VIEWAREA
          • PdfName.VIEWCLIP
          • PdfName.PRINTAREA
          • PdfName.PRINTCLIP
          The value must be one of these names:
          • PdfName.MEDIABOX
          • PdfName.CROPBOX
          • PdfName.BLEEDBOX
          • PdfName.TRIMBOX
          • PdfName.ARTBOX
        • In case the key is PdfName.PRINTSCALING, the value can be
          • PdfName.APPDEFAULT
          • PdfName.NONE
        • In case the key is PdfName.DUPLEX, the value can be:
          • PdfName.SIMPLEX
          • PdfName.DUPLEXFLIPSHORTEDGE
          • PdfName.DUPLEXFLIPLONGEDGE
        • In case the key is PdfName.PICKTRAYBYPDFSIZE, the value must be of type PdfBoolean.
        • In case the key is PdfName.PRINTPAGERANGE, the value must be of type PdfArray.
        • In case the key is PdfName.NUMCOPIES, the value must be of type PdfNumber.
        Specified by:
        addViewerPreference in interface PdfViewerPreferences
        Parameters:
        key - the name of the viewer preference
        value - the value of the viewer preference
        See Also:
        PdfViewerPreferences.addViewerPreference(com.itextpdf.text.pdf.PdfName, com.itextpdf.text.pdf.PdfObject)
      • setPageLabels

        public void setPageLabels​(PdfPageLabels pageLabels)
        Use this method to add page labels
        Parameters:
        pageLabels - the page labels
      • addNamedDestinations

        public void addNamedDestinations​(java.util.Map<java.lang.String,​java.lang.String> map,
                                         int page_offset)
        Adds named destinations in bulk. Valid keys and values of the map can be found in the map that is created by SimpleNamedDestination.
        Parameters:
        map - a map with strings as keys for the names, and structured strings as values for the destinations
        page_offset - number of pages that has to be added to the page numbers in the destinations (useful if you use this method in combination with PdfCopy).
        Since:
        iText 5.0
      • addNamedDestination

        public void addNamedDestination​(java.lang.String name,
                                        int page,
                                        PdfDestination dest)
        Adds one named destination.
        Parameters:
        name - the name for the destination
        page - the page number where you want to jump to
        dest - an explicit destination
        Since:
        iText 5.0
      • addJavaScript

        public void addJavaScript​(PdfAction js)
        Use this method to add a JavaScript action at the document level. When the document opens, all this JavaScript runs.
        Parameters:
        js - The JavaScript action
      • addJavaScript

        public void addJavaScript​(java.lang.String code,
                                  boolean unicode)
        Use this method to add a JavaScript action at the document level. When the document opens, all this JavaScript runs.
        Parameters:
        code - the JavaScript code
        unicode - select JavaScript unicode. Note that the internal Acrobat JavaScript engine does not support unicode, so this may or may not work for you
      • addJavaScript

        public void addJavaScript​(java.lang.String code)
        Use this method to adds a JavaScript action at the document level. When the document opens, all this JavaScript runs.
        Parameters:
        code - the JavaScript code
      • addJavaScript

        public void addJavaScript​(java.lang.String name,
                                  PdfAction js)
        Use this method to add a JavaScript action at the document level. When the document opens, all this JavaScript runs.
        Parameters:
        name - The name of the JS Action in the name tree
        js - The JavaScript action
      • addJavaScript

        public void addJavaScript​(java.lang.String name,
                                  java.lang.String code,
                                  boolean unicode)
        Use this method to add a JavaScript action at the document level. When the document opens, all this JavaScript runs.
        Parameters:
        name - The name of the JS Action in the name tree
        code - the JavaScript code
        unicode - select JavaScript unicode. Note that the internal Acrobat JavaScript engine does not support unicode, so this may or may not work for you
      • addJavaScript

        public void addJavaScript​(java.lang.String name,
                                  java.lang.String code)
        Use this method to adds a JavaScript action at the document level. When the document opens, all this JavaScript runs.
        Parameters:
        name - The name of the JS Action in the name tree
        code - the JavaScript code
      • addFileAttachment

        public void addFileAttachment​(java.lang.String description,
                                      byte[] fileStore,
                                      java.lang.String file,
                                      java.lang.String fileDisplay)
                               throws java.io.IOException
        Use this method to add a file attachment at the document level.
        Parameters:
        description - the file description
        fileStore - an array with the file. If it's null the file will be read from the disk
        file - the path to the file. It will only be used if fileStore is not null
        fileDisplay - the actual file name stored in the pdf
        Throws:
        java.io.IOException - on error
      • addFileAttachment

        public void addFileAttachment​(java.lang.String description,
                                      PdfFileSpecification fs)
                               throws java.io.IOException
        Use this method to add a file attachment at the document level.
        Parameters:
        description - the file description
        fs - the file specification
        Throws:
        java.io.IOException - if the file attachment could not be added to the document
      • addFileAttachment

        public void addFileAttachment​(PdfFileSpecification fs)
                               throws java.io.IOException
        Use this method to add a file attachment at the document level.
        Parameters:
        fs - the file specification
        Throws:
        java.io.IOException - if the file attachment could not be added to the document
      • setCollection

        public void setCollection​(PdfCollection collection)
        Use this method to add the Collection dictionary.
        Parameters:
        collection - a dictionary of type PdfCollection
      • addAnnotation

        void addAnnotation​(PdfAnnotation annot,
                           int page)
      • setLanguage

        public void setLanguage​(java.lang.String language)
      • setXmpMetadata

        public void setXmpMetadata​(byte[] xmpMetadata)
        Use this method to set the XMP Metadata.
        Parameters:
        xmpMetadata - The xmpMetadata to set.
      • setPageXmpMetadata

        public void setPageXmpMetadata​(byte[] xmpMetadata)
                                throws java.io.IOException
        Use this method to set the XMP Metadata for each page.
        Parameters:
        xmpMetadata - The xmpMetadata to set.
        Throws:
        java.io.IOException
      • getXmpWriter

        public XmpWriter getXmpWriter()
      • createXmpMetadata

        public void createXmpMetadata()
        Use this method to creates XMP Metadata based on the metadata in the PdfDocument.
        Since:
        5.4.4 just creates XmpWriter instance which will be serialized in close.
      • isPdfIso

        public boolean isPdfIso()
        Checks if any PDF ISO conformance is necessary.
        Returns:
        true if the PDF has to be in conformance with any of the PDF ISO specifications
      • setOutputIntents

        public void setOutputIntents​(java.lang.String outputConditionIdentifier,
                                     java.lang.String outputCondition,
                                     java.lang.String registryName,
                                     java.lang.String info,
                                     ICC_Profile colorProfile)
                              throws java.io.IOException
        Sets the values of the output intent dictionary. Null values are allowed to suppress any key.
        Parameters:
        outputConditionIdentifier - a value
        outputCondition - a value
        registryName - a value
        info - a value
        colorProfile - a value
        Throws:
        java.io.IOException - on error
        Since:
        2.1.5
      • setOutputIntents

        public void setOutputIntents​(java.lang.String outputConditionIdentifier,
                                     java.lang.String outputCondition,
                                     java.lang.String registryName,
                                     java.lang.String info,
                                     byte[] destOutputProfile)
                              throws java.io.IOException
        Sets the values of the output intent dictionary. Null values are allowed to suppress any key. Prefer the ICC_Profile-based version of this method.
        Parameters:
        outputConditionIdentifier - a value
        outputCondition - a value, "PDFA/A" to force GTS_PDFA1, otherwise cued by pdfxConformance.
        registryName - a value
        info - a value
        destOutputProfile - a value
        Throws:
        java.io.IOException
        Since:
        1.x
      • setOutputIntents

        public boolean setOutputIntents​(PdfReader reader,
                                        boolean checkExistence)
                                 throws java.io.IOException
        Use this method to copy the output intent dictionary from another document to this one.
        Parameters:
        reader - the other document
        checkExistence - true to just check for the existence of a valid output intent dictionary, false to insert the dictionary if it exists
        Returns:
        true if the output intent dictionary exists, false otherwise
        Throws:
        java.io.IOException - on error
      • getNameString

        protected static java.lang.String getNameString​(PdfDictionary dic,
                                                        PdfName key)
      • setEncryption

        public void setEncryption​(byte[] userPassword,
                                  byte[] ownerPassword,
                                  int permissions,
                                  int encryptionType)
                           throws DocumentException
        Sets the encryption options for this document. The userPassword and the ownerPassword can be null or have zero length. In this case the ownerPassword is replaced by a random string. The open permissions for the document can be AllowPrinting, AllowModifyContents, AllowCopy, AllowModifyAnnotations, AllowFillIn, AllowScreenReaders, AllowAssembly and AllowDegradedPrinting. The permissions can be combined by ORing them.
        Specified by:
        setEncryption in interface PdfEncryptionSettings
        Parameters:
        userPassword - the user password. Can be null or empty
        ownerPassword - the owner password. Can be null or empty
        permissions - the user permissions
        encryptionType - can be any of the following: PdfWriter#STANDARD_ENCRYPTION_40, PdfWriter#STANDARD_ENCRYPTION_128, PdfWriter#ENCRYPTION_AES_128 or PdfWriter#ENCRYPTION_AES_256
        Throws:
        DocumentException - if the document is already open
      • setEncryption

        public void setEncryption​(java.security.cert.Certificate[] certs,
                                  int[] permissions,
                                  int encryptionType)
                           throws DocumentException
        Sets the encryption options for this document. The userPassword and the ownerPassword can be null or have zero length. In this case the ownerPassword is replaced by a random string. The open permissions for the document can be AllowPrinting, AllowModifyContents, AllowCopy, AllowModifyAnnotations, AllowFillIn, AllowScreenReaders, AllowAssembly and AllowDegradedPrinting. The permissions can be combined by ORing them.
        Specified by:
        setEncryption in interface PdfEncryptionSettings
        Parameters:
        certs - Certificates to encrypt the document
        permissions - the user permissions
        encryptionType - can be any of the following: PdfWriter#STANDARD_ENCRYPTION_40, PdfWriter#STANDARD_ENCRYPTION_128, PdfWriter#ENCRYPTION_AES_128 or PdfWriter#ENCRYPTION_AES_256
        Throws:
        DocumentException - if the document is already open
      • setEncryption

        @Deprecated
        public void setEncryption​(byte[] userPassword,
                                  byte[] ownerPassword,
                                  int permissions,
                                  boolean strength128Bits)
                           throws DocumentException
        Deprecated.
        As of iText 2.0.3, replaced by (@link #setEncryption(byte[], byte[], int, int)}. Scheduled for removal at or after 2.2.0
        Sets the encryption options for this document. The userPassword and the ownerPassword can be null or have zero length. In this case the ownerPassword is replaced by a random string. The open permissions for the document can be AllowPrinting, AllowModifyContents, AllowCopy, AllowModifyAnnotations, AllowFillIn, AllowScreenReaders, AllowAssembly and AllowDegradedPrinting. The permissions can be combined by ORing them.
        Parameters:
        userPassword - the user password. Can be null or empty
        ownerPassword - the owner password. Can be null or empty
        permissions - the user permissions
        strength128Bits - true for 128 bit key length, false for 40 bit key length
        Throws:
        DocumentException - if the document is already open
      • setEncryption

        @Deprecated
        public void setEncryption​(boolean strength,
                                  java.lang.String userPassword,
                                  java.lang.String ownerPassword,
                                  int permissions)
                           throws DocumentException
        Deprecated.
        As of iText 2.0.3, replaced by (@link #setEncryption(byte[], byte[], int, int)}. Scheduled for removal at or after 2.2.0
        Sets the encryption options for this document. The userPassword and the ownerPassword can be null or have zero length. In this case the ownerPassword is replaced by a random string. The open permissions for the document can be AllowPrinting, AllowModifyContents, AllowCopy, AllowModifyAnnotations, AllowFillIn, AllowScreenReaders, AllowAssembly and AllowDegradedPrinting. The permissions can be combined by ORing them.
        Parameters:
        strength - true for 128 bit key length, false for 40 bit key length
        userPassword - the user password. Can be null or empty
        ownerPassword - the owner password. Can be null or empty
        permissions - the user permissions
        Throws:
        DocumentException - if the document is already open
      • setEncryption

        @Deprecated
        public void setEncryption​(int encryptionType,
                                  java.lang.String userPassword,
                                  java.lang.String ownerPassword,
                                  int permissions)
                           throws DocumentException
        Deprecated.
        As of iText 2.0.3, replaced by (@link #setEncryption(byte[], byte[], int, int)}. Scheduled for removal at or after 2.2.0
        Sets the encryption options for this document. The userPassword and the ownerPassword can be null or have zero length. In this case the ownerPassword is replaced by a random string. The open permissions for the document can be AllowPrinting, AllowModifyContents, AllowCopy, AllowModifyAnnotations, AllowFillIn, AllowScreenReaders, AllowAssembly and AllowDegradedPrinting. The permissions can be combined by ORing them.
        Parameters:
        encryptionType - the type of encryption. It can be one of STANDARD_ENCRYPTION_40, STANDARD_ENCRYPTION_128 or ENCRYPTION_AES128. Optionally DO_NOT_ENCRYPT_METADATA can be ored to output the metadata in cleartext
        userPassword - the user password. Can be null or empty
        ownerPassword - the owner password. Can be null or empty
        permissions - the user permissions
        Throws:
        DocumentException - if the document is already open
      • isFullCompression

        public boolean isFullCompression()
        Use this method to find out if 1.5 compression is on.
        Returns:
        the 1.5 compression status
      • setFullCompression

        public void setFullCompression()
                                throws DocumentException
        Use this method to set the document's compression to the PDF 1.5 mode with object streams and xref streams. It can be set at any time but once set it can't be unset.
        Throws:
        DocumentException
      • getCompressionLevel

        public int getCompressionLevel()
        Returns the compression level used for streams written by this writer.
        Returns:
        the compression level (0 = best speed, 9 = best compression, -1 is default)
        Since:
        2.1.3
      • setCompressionLevel

        public void setCompressionLevel​(int compressionLevel)
        Sets the compression level to be used for streams written by this writer.
        Parameters:
        compressionLevel - a value between 0 (best speed) and 9 (best compression)
        Since:
        2.1.3
      • addSimple

        FontDetails addSimple​(BaseFont bf)
        Adds a BaseFont to the document but not to the page resources. It is used for templates.
        Parameters:
        bf - the BaseFont to add
        Returns:
        an Object[] where position 0 is a PdfName and position 1 is an PdfIndirectReference
      • eliminateFontSubset

        void eliminateFontSubset​(PdfDictionary fonts)
      • addDirectTemplateSimple

        PdfName addDirectTemplateSimple​(PdfTemplate template,
                                        PdfName forcedName)
        Adds a template to the document but not to the page resources.
        Parameters:
        template - the template to add
        forcedName - the template name, rather than a generated one. Can be null
        Returns:
        the PdfName for this template
      • releaseTemplate

        public void releaseTemplate​(PdfTemplate tp)
                             throws java.io.IOException
        Use this method to releases the memory used by a template. This method writes the template to the output. The template can still be added to any content but changes to the template itself won't have any effect.
        Parameters:
        tp - the template to release
        Throws:
        java.io.IOException - on error
      • getImportedPage

        public PdfImportedPage getImportedPage​(PdfReader reader,
                                               int pageNumber)
        Use this method to get a page from other PDF document. The page can be used as any other PdfTemplate. Note that calling this method more than once with the same parameters will retrieve the same object.
        Parameters:
        reader - the PDF document where the page is
        pageNumber - the page number. The first page is 1
        Returns:
        the template representing the imported page
      • getPdfReaderInstance

        protected PdfReaderInstance getPdfReaderInstance​(PdfReader reader)
        Returns the PdfReaderInstance associated with the specified reader. Multiple calls with the same reader object will return the same PdfReaderInstance.
        Parameters:
        reader - the PDF reader that you want an instance for
        Returns:
        the instance for the provided reader
        Since:
        5.0.3
      • freeReader

        public void freeReader​(PdfReader reader)
                        throws java.io.IOException
        Use this method to writes the reader to the document and free the memory used by it. The main use is when concatenating multiple documents to keep the memory usage restricted to the current appending document.
        Parameters:
        reader - the PdfReader to free
        Throws:
        java.io.IOException - on error
      • getCurrentDocumentSize

        public long getCurrentDocumentSize()
        Use this method to gets the current document size. This size only includes the data already written to the output stream, it does not include templates or fonts. It is useful if used with freeReader() when concatenating many documents and an idea of the current size is needed.
        Returns:
        the approximate size without fonts or templates
      • getNewObjectNumber

        protected int getNewObjectNumber​(PdfReader reader,
                                         int number,
                                         int generation)
      • getColorspaceName

        PdfName getColorspaceName()
      • addSimple

        ColorDetails addSimple​(ICachedColorSpace spc)
        Adds a SpotColor to the document but not to the page resources.
        Parameters:
        spc - the SpotColor to add
        Returns:
        an Object[] where position 0 is a PdfName and position 1 is an PdfIndirectReference
      • addSimpleShadingPattern

        void addSimpleShadingPattern​(PdfShadingPattern shading)
      • addSimpleShading

        void addSimpleShading​(PdfShading shading)
      • propertyExists

        boolean propertyExists​(java.lang.Object prop)
      • setTagged

        public void setTagged()
        Mark this document for tagging. It must be called before open.
      • setTagged

        public void setTagged​(int taggingMode)
      • needToBeMarkedInContent

        public boolean needToBeMarkedInContent​(IAccessibleElement element)
      • isTagged

        public boolean isTagged()
        Check if the document is marked for tagging.
        Returns:
        true if the document is marked for tagging
      • flushTaggedObjects

        protected void flushTaggedObjects()
                                   throws java.io.IOException
        Fix structure of tagged document: remove unused objects, remove unused items from class map, fix xref table due to removed objects.
        Throws:
        java.io.IOException
      • getStructureTreeRoot

        public PdfStructureTreeRoot getStructureTreeRoot()
        Gets the structure tree root. If the document is not marked for tagging it will return null.
        Returns:
        the structure tree root
      • getOCProperties

        public PdfOCProperties getOCProperties()
        Use this method to get the Optional Content Properties Dictionary. Each call fills the dictionary with the current layer state. It's advisable to only call this method right before close and do any modifications at that time.
        Returns:
        the Optional Content Properties Dictionary
      • addOCGRadioGroup

        public void addOCGRadioGroup​(java.util.ArrayList<PdfLayer> group)
        Use this method to set a collection of optional content groups whose states are intended to follow a "radio button" paradigm. That is, the state of at most one optional content group in the array should be ON at a time: if one group is turned ON, all others must be turned OFF.
        Parameters:
        group - the radio group
      • lockLayer

        public void lockLayer​(PdfLayer layer)
        Use this method to lock an optional content group. The state of a locked group cannot be changed through the user interface of a viewer application. Producers can use this entry to prevent the visibility of content that depends on these groups from being changed by users.
        Parameters:
        layer - the layer that needs to be added to the array of locked OCGs
        Since:
        2.1.2
      • getOCGOrder

        private static void getOCGOrder​(PdfArray order,
                                        PdfLayer layer)
      • addASEvent

        private void addASEvent​(PdfName event,
                                PdfName category)
      • fillOCProperties

        protected void fillOCProperties​(boolean erase)
        Parameters:
        erase - true to erase the PdfName.OCGS and PdfName.D from the OCProperties first.
        Since:
        2.1.2
      • registerLayer

        void registerLayer​(PdfOCG layer)
      • getPageSize

        public Rectangle getPageSize()
        Use this method to get the size of the media box.
        Returns:
        a Rectangle
      • setCropBoxSize

        public void setCropBoxSize​(Rectangle crop)
        Use this method to set the crop box. The crop box should not be rotated even if the page is rotated. This change only takes effect in the next page.
        Parameters:
        crop - the crop box
      • setBoxSize

        public void setBoxSize​(java.lang.String boxName,
                               Rectangle size)
        Use this method to set the page box sizes. Allowed names are: "crop", "trim", "art" and "bleed".
        Parameters:
        boxName - the box size
        size - the size
      • getBoxSize

        public Rectangle getBoxSize​(java.lang.String boxName)
        Use this method to get the size of a trim, art, crop or bleed box, or null if not defined.
        Parameters:
        boxName - crop, trim, art or bleed
      • getBoxSize

        public Rectangle getBoxSize​(java.lang.String boxName,
                                    Rectangle intersectingRectangle)
        Returns the intersection between the crop, trim art or bleed box and the parameter intersectingRectangle. This method returns null when - there is no intersection - any of the above boxes are not defined - the parameter intersectingRectangle is null
        Parameters:
        boxName - crop, trim, art, bleed
        intersectingRectangle - the rectangle that intersects the rectangle associated to the boxName
        Returns:
        the intersection of the two rectangles
      • setPageEmpty

        public void setPageEmpty​(boolean pageEmpty)
        Use this method to make sure a page is added, even if it's empty. If you use setPageEmpty(false), invoking newPage() after a blank page will add a newPage. setPageEmpty(true) won't have any effect.
        Parameters:
        pageEmpty - the state
      • isPageEmpty

        public boolean isPageEmpty()
        Checks if a newPage() will actually generate a new page.
        Returns:
        true if a new page will be generated, false otherwise
        Since:
        5.0.0
      • getGroup

        public PdfDictionary getGroup()
        Use this method to get the group dictionary.
        Returns:
        Value of property group.
      • setGroup

        public void setGroup​(PdfDictionary group)
        Use this method to set the group dictionary.
        Parameters:
        group - New value of property group.
      • getSpaceCharRatio

        public float getSpaceCharRatio()
        Use this method to gets the space/character extra spacing ratio for fully justified text.
        Returns:
        the space/character extra spacing ratio
      • setSpaceCharRatio

        public void setSpaceCharRatio​(float spaceCharRatio)
        Use this method to set the ratio between the extra word spacing and the extra character spacing when the text is fully justified. Extra word spacing will grow spaceCharRatio times more than extra character spacing. If the ratio is PdfWriter.NO_SPACE_CHAR_RATIO then the extra character spacing will be zero.
        Parameters:
        spaceCharRatio - the ratio between the extra word spacing and the extra character spacing
      • setRunDirection

        public void setRunDirection​(int runDirection)
        Use this method to set the run direction. This is only used as a placeholder as it does not affect anything.
        Specified by:
        setRunDirection in interface PdfRunDirection
        Parameters:
        runDirection - the run direction
      • getRunDirection

        public int getRunDirection()
        Use this method to set the run direction.
        Specified by:
        getRunDirection in interface PdfRunDirection
        Returns:
        the run direction
      • setUserunit

        public void setUserunit​(float userunit)
                         throws DocumentException
        Use this method to set the user unit. A UserUnit is a value that defines the default user space unit. The minimum UserUnit is 1 (1 unit = 1/72 inch). The maximum UserUnit is 75,000. Note that this userunit only works starting with PDF1.6!
        Parameters:
        userunit - The userunit to set.
        Throws:
        DocumentException - on error
      • getDefaultColorspace

        public PdfDictionary getDefaultColorspace()
        Use this method to get the default colorspaces.
        Returns:
        the default colorspaces
      • setDefaultColorspace

        public void setDefaultColorspace​(PdfName key,
                                         PdfObject cs)
        Use this method to sets the default colorspace that will be applied to all the document. The colorspace is only applied if another colorspace with the same name is not present in the content.

        The colorspace is applied immediately when creating templates and at the page end for the main document content.

        Parameters:
        key - the name of the colorspace. It can be PdfName.DEFAULTGRAY, PdfName.DEFAULTRGB or PdfName.DEFAULTCMYK
        cs - the colorspace. A null or PdfNull removes any colorspace with the same name
      • isStrictImageSequence

        public boolean isStrictImageSequence()
        Use this method to get the strictImageSequence status.
        Returns:
        value of property strictImageSequence
      • setStrictImageSequence

        public void setStrictImageSequence​(boolean strictImageSequence)
        Use this method to set the image sequence, so that it follows the text in strict order (or not).
        Parameters:
        strictImageSequence - new value of property strictImageSequence
      • addDirectImageSimple

        public PdfName addDirectImageSimple​(Image image)
                                     throws PdfException,
                                            DocumentException
        Use this method to adds an image to the document but not to the page resources. It is used with templates and Document.add(Image). Use this method only if you know what you're doing!
        Parameters:
        image - the Image to add
        Returns:
        the name of the image added
        Throws:
        PdfException - on error
        DocumentException - on error
      • addDirectImageSimple

        public PdfName addDirectImageSimple​(Image image,
                                            PdfIndirectReference fixedRef)
                                     throws PdfException,
                                            DocumentException
        Adds an image to the document but not to the page resources. It is used with templates and Document.add(Image). Use this method only if you know what you're doing!
        Parameters:
        image - the Image to add
        fixedRef - the reference to used. It may be null, a PdfIndirectReference or a PRIndirectReference.
        Returns:
        the name of the image added
        Throws:
        PdfException - on error
        DocumentException - on error
      • add

        PdfIndirectReference add​(PdfImage pdfImage,
                                 PdfIndirectReference fixedRef)
                          throws PdfException
        Writes a PdfImage to the outputstream.
        Parameters:
        pdfImage - the image to be added
        fixedRef - the IndirectReference, may be null then a new indirect reference is returned
        Returns:
        a PdfIndirectReference to the encapsulated image
        Throws:
        PdfException - when a document isn't open yet, or has been closed
      • getImageReference

        PdfIndirectReference getImageReference​(PdfName name)
        return the PdfIndirectReference to the image with a given name.
        Parameters:
        name - the name of the image
        Returns:
        a PdfIndirectReference
      • getReferenceJBIG2Globals

        protected PdfIndirectReference getReferenceJBIG2Globals​(byte[] content)
        Gets an indirect reference to a JBIG2 Globals stream. Adds the stream if it hasn't already been added to the writer.
        Parameters:
        content - a byte array that may already been added to the writer inside a stream object.
        Returns:
        the PdfIndirectReference of the stream
        Since:
        2.1.5
      • isUserProperties

        public boolean isUserProperties()
        Gets the flag indicating the presence of structure elements that contain user properties attributes.
        Returns:
        the user properties flag
      • 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
      • isRgbTransparencyBlending

        public boolean isRgbTransparencyBlending()
        Gets the transparency blending colorspace.
        Returns:
        true if the transparency blending colorspace is RGB, false if it is the default blending colorspace
        Since:
        2.1.0
      • setRgbTransparencyBlending

        public void setRgbTransparencyBlending​(boolean rgbTransparencyBlending)
        Sets the transparency blending colorspace to RGB. The default blending colorspace is CMYK and will result in faded colors in the screen and in printing. Calling this method will return the RGB colors to what is expected. The RGB blending will be applied to all subsequent pages until other value is set. Note that this is a generic solution that may not work in all cases.
        Parameters:
        rgbTransparencyBlending - true to set the transparency blending colorspace to RGB, false to use the default blending colorspace
        Since:
        2.1.0
      • writeKeyInfo

        protected static void writeKeyInfo​(java.io.OutputStream os)
                                    throws java.io.IOException
        Throws:
        java.io.IOException
      • createXmpWriter

        protected XmpWriter createXmpWriter​(java.io.ByteArrayOutputStream baos,
                                            PdfDictionary info)
                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • createXmpWriter

        protected XmpWriter createXmpWriter​(java.io.ByteArrayOutputStream baos,
                                            java.util.HashMap<java.lang.String,​java.lang.String> info)
                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • createAnnotation

        public PdfAnnotation createAnnotation​(Rectangle rect,
                                              PdfName subtype)
        A wrapper around PdfAnnotation constructor. It is recommended to use this wrapper instead of direct constructor as this is a convenient way to override PdfAnnotation construction when needed.
        Parameters:
        rect -
        subtype -
        Returns:
      • createAnnotation

        public PdfAnnotation createAnnotation​(float llx,
                                              float lly,
                                              float urx,
                                              float ury,
                                              PdfString title,
                                              PdfString content,
                                              PdfName subtype)
        A wrapper around PdfAnnotation constructor. It is recommended to use this wrapper instead of direct constructor as this is a convenient way to override PdfAnnotation construction when needed.
        Parameters:
        llx -
        lly -
        urx -
        ury -
        title -
        content -
        subtype -
        Returns:
      • createAnnotation

        public PdfAnnotation createAnnotation​(float llx,
                                              float lly,
                                              float urx,
                                              float ury,
                                              PdfAction action,
                                              PdfName subtype)
        A wrapper around PdfAnnotation constructor. It is recommended to use this wrapper instead of direct constructor as this is a convenient way to override PdfAnnotation construction when needed.
        Parameters:
        llx -
        lly -
        urx -
        ury -
        action -
        subtype -
        Returns:
      • checkPdfIsoConformance

        public static void checkPdfIsoConformance​(PdfWriter writer,
                                                  int key,
                                                  java.lang.Object obj1)
      • checkPdfIsoConformance

        public void checkPdfIsoConformance​(int key,
                                           java.lang.Object obj1)
      • completeInfoDictionary

        private void completeInfoDictionary​(PdfDictionary info)
      • completeExtraCatalog

        private void completeExtraCatalog​(PdfDictionary extraCatalog)
      • getStandardStructElems

        public java.util.List<PdfName> getStandardStructElems()
        Gets the list of the standard structure element names (roles).
        Returns:
      • useExternalCacheForTagStructure

        public void useExternalCacheForTagStructure​(TempFileCache fileCache)