com.lowagie.text.pdf

## Class PdfWriter

- java.lang.Object
- - com.lowagie.text.DocWriter
  - - com.lowagie.text.pdf.PdfWriter

- All Implemented Interfaces:
    DocListener, ElementListener, PdfAnnotations, PdfDocumentActions, PdfEncryptionSettings, PdfPageActions, PdfRunDirection, PdfVersion, PdfViewerPreferences, PdfXConformance, java.util.EventListener
  Direct Known Subclasses:
    FdfWriter.Wrt, PdfCopy, PdfCopyFieldsImp, PdfStamperImp

      public class PdfWriter
      extends DocWriter
      implements PdfViewerPreferences, PdfEncryptionSettings, PdfVersion, PdfDocumentActions, PdfPageActions, PdfXConformance, PdfRunDirection, PdfAnnotations

  A `DocWriter` class for PDF.

  When this `PdfWriter` is added to a certain `PdfDocument`, the PDF representation of every Element added to this Document will be written to the outputstream.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `PdfWriter.PdfBody` This class generates the structure of a PDF document.
    `(package private) static class` | `PdfWriter.PdfTrailer` `PdfTrailer` is the PDF Trailer object.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `ALLOW_ASSEMBLY` The operation permitted when the document is opened with the user password
    `static int` | `ALLOW_COPY` The operation permitted when the document is opened with the user password
    `static int` | `ALLOW_DEGRADED_PRINTING` The operation permitted when the document is opened with the user password
    `static int` | `ALLOW_FILL_IN` The operation permitted when the document is opened with the user password
    `static int` | `ALLOW_MODIFY_ANNOTATIONS` The operation permitted when the document is opened with the user password
    `static int` | `ALLOW_MODIFY_CONTENTS` The operation permitted when the document is opened with the user password
    `static int` | `ALLOW_PRINTING` The operation permitted when the document is opened with the user password
    `static int` | `ALLOW_SCREENREADERS` The operation permitted when the document is opened with the user password
    `static int` | `AllowAssembly` Deprecated. As of iText 2.0.7, use `ALLOW_ASSEMBLY` instead. Scheduled for removal at or after 2.2.0
    `static int` | `AllowCopy` Deprecated. As of iText 2.0.7, use `ALLOW_COPY` instead. Scheduled for removal at or after 2.2.0
    `static int` | `AllowDegradedPrinting` Deprecated. As of iText 2.0.7, use `ALLOW_DEGRADED_PRINTING` instead. Scheduled for removal at or after 2.2.0
    `static int` | `AllowFillIn` Deprecated. As of iText 2.0.7, use `ALLOW_FILL_IN` instead. Scheduled for removal at or after 2.2.0
    `static int` | `AllowModifyAnnotations` Deprecated. As of iText 2.0.7, use `ALLOW_MODIFY_ANNOTATIONS` instead. Scheduled for removal at or after 2.2.0
    `static int` | `AllowModifyContents` Deprecated. As of iText 2.0.7, use `ALLOW_MODIFY_CONTENTS` instead. Scheduled for removal at or after 2.2.0
    `static int` | `AllowPrinting` Deprecated. As of iText 2.0.7, use `ALLOW_PRINTING` instead. Scheduled for removal at or after 2.2.0
    `static int` | `AllowScreenReaders` Deprecated. As of iText 2.0.7, use `ALLOW_SCREENREADERS` instead. Scheduled for removal at or after 2.2.0
    `protected PdfWriter.PdfBody` | `body` body of the PDF document
    `static int` | `CenterWindow` A viewer preference
    `protected int` | `colorNumber` The color number counter for the colors in the document.
    `protected int` | `compressionLevel` The compression level of the content streams.
    `protected PdfEncryption` | `crypto` Contains the business logic for cryptography.
    `protected int` | `currentPageNumber` The current page number.
    `protected PdfReaderInstance` | `currentPdfReaderInstance`
    `protected PdfDictionary` | `defaultColorspace`
    `static PdfName` | `DID_PRINT` action value
    `static PdfName` | `DID_SAVE` action value
    `protected PdfContentByte` | `directContent` The direct content in this document.
    `protected PdfContentByte` | `directContentUnder` The direct content under in this document.
    `static int` | `DirectionL2R` A viewer preference
    `static int` | `DirectionR2L` A viewer preference
    `static int` | `DisplayDocTitle` A viewer preference
    `static int` | `DO_NOT_ENCRYPT_METADATA` Add this to the mode to keep the metadata in clear text
    `static PdfName` | `DOCUMENT_CLOSE` action value
    `protected java.util.HashMap` | `documentColors` The colors of this document
    `protected java.util.HashMap` | `documentExtGState`
    `protected java.util.LinkedHashMap` | `documentFonts` The fonts of this document
    `protected java.util.HashSet` | `documentOCG` A hashSet containing all the PdfLayer objects.
    `protected java.util.ArrayList` | `documentOCGorder` An array list used to define the order of an OCG tree.
    `protected java.util.HashMap` | `documentPatterns` The patterns of this document
    `protected java.util.HashMap` | `documentProperties`
    `protected java.util.HashMap` | `documentShadingPatterns`
    `protected java.util.HashMap` | `documentShadings`
    `protected java.util.HashMap` | `documentSpotPatterns`
    `static int` | `EMBEDDED_FILES_ONLY` Add this to the mode to keep encrypt only the embedded files.
    `static int` | `ENCRYPTION_AES_128` Type of encryption
    `(package private) static int` | `ENCRYPTION_MASK` Mask to separate the encryption type from the encryption mode.
    `protected PdfDictionary` | `extraCatalog` Holds value of property extraCatalog this is used for Output Intents.
    `static int` | `FitWindow` A viewer preference
    `protected int` | `fontNumber` The font number counter for the fonts in the document.
    `protected java.util.HashMap` | `formXObjects` The form XObjects in this document.
    `protected int` | `formXObjectsCounter` The name counter for the form XObjects name.
    `protected boolean` | `fullCompression` Holds value of property fullCompression.
    `static int` | `GENERATION_MAX` The highest generation number possible.
    `protected PdfDictionary` | `group` A group attributes dictionary specifying the attributes of the page's page group for use in the transparent imaging model
    `static int` | `HideMenubar` A viewer preference
    `static int` | `HideToolbar` A viewer preference
    `static int` | `HideWindowUI` A viewer preference
    `protected PdfDictionary` | `imageDictionary` Dictionary, containing all the images of the PDF document
    `private java.util.HashMap` | `images` This is the list with all the images in the document.
    `protected java.util.HashMap` | `importedPages`
    `protected java.util.HashMap` | `JBIG2Globals` A HashSet with Stream objects containing JBIG2 Globals
    `protected java.util.List` | `newBookmarks`
    `static float` | `NO_SPACE_CHAR_RATIO` Disable the inter-character spacing.
    `static int` | `NonFullScreenPageModeUseNone` A viewer preference
    `static int` | `NonFullScreenPageModeUseOC` A viewer preference
    `static int` | `NonFullScreenPageModeUseOutlines` A viewer preference
    `static int` | `NonFullScreenPageModeUseThumbs` A viewer preference
    `protected PdfArray` | `OCGLocked` The locked array in an OCG dictionary
    `protected PdfArray` | `OCGRadioGroup` The RBGroups array in an OCG dictionary
    `protected PdfOCProperties` | `OCProperties` The OCProperties in a catalog dictionary.
    `static PdfName` | `PAGE_CLOSE` action value
    `static PdfName` | `PAGE_OPEN` action value
    `private PdfPageEvent` | `pageEvent` The `PdfPageEvent` for this document.
    `static int` | `PageLayoutOneColumn` A viewer preference
    `static int` | `PageLayoutSinglePage` A viewer preference
    `static int` | `PageLayoutTwoColumnLeft` A viewer preference
    `static int` | `PageLayoutTwoColumnRight` A viewer preference
    `static int` | `PageLayoutTwoPageLeft` A viewer preference
    `static int` | `PageLayoutTwoPageRight` A viewer preference
    `static int` | `PageModeFullScreen` A viewer preference
    `static int` | `PageModeUseAttachments` A viewer preference
    `static int` | `PageModeUseNone` A viewer preference
    `static int` | `PageModeUseOC` A viewer preference
    `static int` | `PageModeUseOutlines` A viewer preference
    `static int` | `PageModeUseThumbs` A viewer preference
    `protected java.util.ArrayList` | `pageReferences` The PdfIndirectReference to the pages.
    `protected ColorDetails` | `patternColorspaceCMYK`
    `protected ColorDetails` | `patternColorspaceGRAY`
    `protected ColorDetails` | `patternColorspaceRGB`
    `protected int` | `patternNumber` The pattern number counter for the colors in the document.
    `protected PdfDocument` | `pdf` the pdfdocument object.
    `protected PdfVersionImp` | `pdf_version` Stores the version information for the header and the catalog.
    `static PdfName` | `PDF_VERSION_1_2` possible PDF version (catalog)
    `static PdfName` | `PDF_VERSION_1_3` possible PDF version (catalog)
    `static PdfName` | `PDF_VERSION_1_4` possible PDF version (catalog)
    `static PdfName` | `PDF_VERSION_1_5` possible PDF version (catalog)
    `static PdfName` | `PDF_VERSION_1_6` possible PDF version (catalog)
    `static PdfName` | `PDF_VERSION_1_7` possible PDF version (catalog)
    `static int` | `PDFA1A` PDFA-1A level.
    `static int` | `PDFA1B` PDFA-1B level.
    `static int` | `PDFX1A2001` A PDF/X level.
    `static int` | `PDFX32002` A PDF/X level.
    `private PdfXConformanceImp` | `pdfxConformance` Stores the PDF/X level.
    `static int` | `PDFXNONE` A PDF/X level.
    `protected int` | `prevxref` A number referring to the previous Cross-Reference Table.
    `static int` | `PrintScalingNone` A viewer preference
    `private boolean` | `rgbTransparencyBlending` Holds value of property RGBTranparency.
    `protected PdfPages` | `root` The root of the page tree.
    `static int` | `RUN_DIRECTION_DEFAULT` Use the default run direction.
    `static int` | `RUN_DIRECTION_LTR` Use bidirectional reordering with left-to-right preferential run direction.
    `static int` | `RUN_DIRECTION_NO_BIDI` Do not use bidirectional reordering.
    `static int` | `RUN_DIRECTION_RTL` Use bidirectional reordering with right-to-left preferential run direction.
    `protected int` | `runDirection`
    `static int` | `SIGNATURE_APPEND_ONLY` signature value
    `static int` | `SIGNATURE_EXISTS` signature value
    `static float` | `SPACE_CHAR_RATIO_DEFAULT` The default space-char ratio.
    `private float` | `spaceCharRatio` The ratio between the extra word spacing and the extra character spacing.
    `static int` | `STANDARD_ENCRYPTION_128` Type of encryption
    `static int` | `STANDARD_ENCRYPTION_40` Type of encryption
    `static boolean` | `STRENGTH128BITS` Deprecated. As of iText 2.0.7, use `STANDARD_ENCRYPTION_128` instead. Scheduled for removal at or after 2.2.0
    `static boolean` | `STRENGTH40BITS` Deprecated. As of iText 2.0.7, use `STANDARD_ENCRYPTION_40` instead. Scheduled for removal at or after 2.2.0
    `protected PdfStructureTreeRoot` | `structureTreeRoot`
    `protected PdfName` | `tabs` The value of the Tabs entry in the page dictionary.
    `protected boolean` | `tagged`
    `private boolean` | `userProperties` A flag indicating the presence of structure elements that contain user properties attributes.
    `protected float` | `userunit`
    `static char` | `VERSION_1_2` possible PDF version (header)
    `static char` | `VERSION_1_3` possible PDF version (header)
    `static char` | `VERSION_1_4` possible PDF version (header)
    `static char` | `VERSION_1_5` possible PDF version (header)
    `static char` | `VERSION_1_6` possible PDF version (header)
    `static char` | `VERSION_1_7` possible PDF version (header)
    `static PdfName` | `WILL_PRINT` action value
    `static PdfName` | `WILL_SAVE` action value
    `protected byte[]` | `xmpMetadata` XMP Metadata for the document.

    - ### Fields inherited from class com.lowagie.text.DocWriter

      `closeStream, document, EQUALS, FORWARD, GT, LT, NEWLINE, open, os, pageSize, pause, QUOTE, SPACE, TAB`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `PdfWriter()` Constructs a `PdfWriter`.
    `protected` | `PdfWriter(PdfDocument document, java.io.OutputStream os)` Constructs a `PdfWriter`.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected PdfIndirectReference` | `add(PdfICCBased icc)`
    `(package private) PdfIndirectReference` | `add(PdfImage pdfImage, PdfIndirectReference fixedRef)` Writes a `PdfImage` to the outputstream.
    `(package private) PdfIndirectReference` | `add(PdfPage page, PdfContents contents)` Adds some `PdfContents` to this Writer.
    `void` | `addAnnotation(PdfAnnotation annot)` Use this methods to add a `PdfAnnotation` or a `PdfFormField` to the document.
    `(package private) void` | `addAnnotation(PdfAnnotation annot, int page)`
    `private void` | `addASEvent(PdfName event, PdfName category)`
    `void` | `addCalculationOrder(PdfFormField annot)` Use this method to adds the `PdfAnnotation` to the calculation order array.
    `void` | `addDeveloperExtension(PdfDeveloperExtension de)` Adds a developer extension to the Extensions dictionary in the Catalog.
    `PdfName` | `addDirectImageSimple(Image image)` Use this method to adds an image to the document but not to the page resources.
    `PdfName` | `addDirectImageSimple(Image image, PdfIndirectReference fixedRef)` Adds an image to the document but not to the page resources.
    `(package private) PdfName` | `addDirectTemplateSimple(PdfTemplate template, PdfName forcedName)` Adds a template to the document but not to the page resources.
    `void` | `addFileAttachment(PdfFileSpecification fs)` Use this method to add a file attachment at the document level.
    `void` | `addFileAttachment(java.lang.String description, byte[] fileStore, java.lang.String file, java.lang.String fileDisplay)` Use this method to add a file attachment at the document level.
    `void` | `addFileAttachment(java.lang.String description, PdfFileSpecification fs)` Use this method to add a file attachment at the document level.
    `void` | `addJavaScript(PdfAction js)` Use this method to add a JavaScript action at the document level.
    `void` | `addJavaScript(java.lang.String code)` Use this method to adds a JavaScript action at the document level.
    `void` | `addJavaScript(java.lang.String code, boolean unicode)` Use this method to add a JavaScript action at the document level.
    `void` | `addJavaScript(java.lang.String name, PdfAction js)` Use this method to add a JavaScript action at the document level.
    `void` | `addJavaScript(java.lang.String name, java.lang.String code)` Use this method to adds a JavaScript action at the document level.
    `void` | `addJavaScript(java.lang.String name, java.lang.String code, boolean unicode)` Use this method to add a JavaScript action at the document level.
    `(package private) void` | `addLocalDestinations(java.util.TreeMap dest)` Adds the local destinations to the body of the document.
    `void` | `addNamedDestination(java.lang.String name, int page, PdfDestination dest)` Adds one named destination.
    `void` | `addNamedDestinations(java.util.Map map, int page_offset)` Adds named destinations in bulk.
    `void` | `addOCGRadioGroup(java.util.ArrayList group)` Use this method to set a collection of optional content groups whose states are intended to follow a "radio button" paradigm.
    `protected void` | `addSharedObjectsToBody()`
    `(package private) FontDetails` | `addSimple(BaseFont bf)` Adds a `BaseFont` to the document but not to the page resources.
    `(package private) ColorDetails` | `addSimple(PdfSpotColor spc)` Adds a `SpotColor` to the document but not to the page resources.
    `(package private) PdfObject[]` | `addSimpleExtGState(PdfDictionary gstate)`
    `(package private) PdfName` | `addSimplePattern(PdfPatternPainter painter)`
    `(package private) ColorDetails` | `addSimplePatternColorspace(java.awt.Color color)`
    `(package private) PdfObject[]` | `addSimpleProperty(java.lang.Object prop, PdfIndirectReference refi)`
    `(package private) void` | `addSimpleShading(PdfShading shading)`
    `(package private) void` | `addSimpleShadingPattern(PdfShadingPattern shading)`
    `PdfIndirectObject` | `addToBody(PdfObject object)` Use this method to add a PDF object to the PDF body.
    `PdfIndirectObject` | `addToBody(PdfObject object, boolean inObjStm)` Use this method to add a PDF object to the PDF body.
    `PdfIndirectObject` | `addToBody(PdfObject object, int refNumber)` Use this method to add a PDF object to the PDF body.
    `PdfIndirectObject` | `addToBody(PdfObject object, int refNumber, boolean inObjStm)` Use this method to add a PDF object to the PDF body.
    `PdfIndirectObject` | `addToBody(PdfObject object, PdfIndirectReference ref)` Use this method to add a PDF object to the PDF body.
    `PdfIndirectObject` | `addToBody(PdfObject object, PdfIndirectReference ref, boolean inObjStm)` Use this method to add a PDF object to the PDF body.
    `void` | `addViewerPreference(PdfName key, PdfObject value)` Adds a viewer preference.
    `void` | `clearTextWrap()` Use this method to clear text wrapping around images (if applicable).
    `void` | `close()` Signals that the `Document` was closed and that no other `Elements` will be added.
    `void` | `createXmpMetadata()` Use this method to creates XMP Metadata based on the metadata in the PdfDocument.
    `private byte[]` | `createXmpMetadataBytes()`
    `(package private) void` | `eliminateFontSubset(PdfDictionary fonts)`
    `protected void` | `fillOCProperties(boolean erase)`
    `boolean` | `fitsPage(Table table)` Checks if a `Table` fits the current page of the `PdfDocument`.
    `boolean` | `fitsPage(Table table, float margin)` Checks if a `Table` fits the current page of the `PdfDocument`.
    `void` | `freeReader(PdfReader reader)` Use this method to writes the reader to the document and free the memory used by it.
    `PdfAcroForm` | `getAcroForm()` Use this methods to get the AcroForm object.
    `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.
    `protected PdfDictionary` | `getCatalog(PdfIndirectReference rootObj)`
    `(package private) PdfName` | `getColorspaceName()`
    `int` | `getCompressionLevel()` Returns the compression level used for streams written by this writer.
    `int` | `getCurrentDocumentSize()` Use this method to gets the current document size.
    `(package private) PdfIndirectReference` | `getCurrentPage()`
    `int` | `getCurrentPageNumber()`
    `PdfDictionary` | `getDefaultColorspace()` Use this method to get the default colorspaces.
    `PdfContentByte` | `getDirectContent()` Use this method to get the direct content for this document.
    `PdfContentByte` | `getDirectContentUnder()` Use this method to get the direct content under for this document.
    `(package private) PdfEncryption` | `getEncryption()`
    `PdfDictionary` | `getExtraCatalog()` Sets extra keys to the catalog.
    `PdfDictionary` | `getGroup()` Use this method to get the group dictionary.
    `(package private) PdfIndirectReference` | `getImageReference(PdfName name)` return the `PdfIndirectReference` to the image with a given name.
    `PdfImportedPage` | `getImportedPage(PdfReader reader, int pageNumber)` Use this method to get a page from other PDF document.
    `(package private) int` | `getIndirectReferenceNumber()`
    `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).
    `static PdfWriter` | `getInstance(Document document, java.io.OutputStream os)` Use this method to get an instance of the `PdfWriter`.
    `static PdfWriter` | `getInstance(Document document, java.io.OutputStream os, DocListener listener)` Use this method to get an instance of the `PdfWriter`.
    `private static java.lang.String` | `getNameString(PdfDictionary dic, PdfName key)`
    `protected int` | `getNewObjectNumber(PdfReader reader, int number, int generation)`
    `private static void` | `getOCGOrder(PdfArray order, PdfLayer layer)`
    `PdfOCProperties` | `getOCProperties()` Use this method to get the Optional Content Properties Dictionary.
    `(package private) OutputStreamCounter` | `getOs()` Returns the outputStreamCounter.
    `PdfPageEvent` | `getPageEvent()` Gets the `PdfPageEvent` for this document or `null` if none is set.
    `int` | `getPageNumber()` Gets the pagenumber of this document.
    `PdfIndirectReference` | `getPageReference(int page)` Use this method to get a reference to a page existing or not.
    `Rectangle` | `getPageSize()` Use this method to get the size of the media box.
    `(package private) PdfDocument` | `getPdfDocument()` Gets the `PdfDocument` associated with this writer.
    `PdfIndirectReference` | `getPdfIndirectReference()` Use this to get an `PdfIndirectReference` for an object that will be created in the future.
    `(package private) PdfVersionImp` | `getPdfVersion()` Returns the version information.
    `int` | `getPDFXConformance()` Getter for the PDF/X Conformance value.
    `(package private) RandomAccessFileOrArray` | `getReaderFile(PdfReader reader)`
    `protected PdfIndirectReference` | `getReferenceJBIG2Globals(byte[] content)` Gets an indirect reference to a JBIG2 Globals stream.
    `PdfOutline` | `getRootOutline()` Use this method to get the root outline and construct bookmarks.
    `int` | `getRunDirection()` Use this method to set the run direction.
    `float` | `getSpaceCharRatio()` Use this method to gets the space/character extra spacing ratio for fully justified text.
    `PdfStructureTreeRoot` | `getStructureTreeRoot()` Gets the structure tree root.
    `PdfName` | `getTabs()` Returns the value to be used for the Tabs entry in the page tree.
    `float` | `getUserunit()` Use this method to get the user unit.
    `float` | `getVerticalPosition(boolean ensureNewLine)` Use this method to get the current vertical page position.
    `boolean` | `isFullCompression()` Use this method to find out if 1.5 compression is on.
    `boolean` | `isPageEmpty()` Checks if a newPage() will actually generate a new page.
    `boolean` | `isPdfX()` Checks if the PDF/X Conformance is necessary.
    `boolean` | `isRgbTransparencyBlending()` Gets the transparency blending colorspace.
    `boolean` | `isStrictImageSequence()` Use this method to get the strictImageSequence status.
    `boolean` | `isTagged()` Check if the document is marked for tagging.
    `boolean` | `isUserProperties()` Gets the flag indicating the presence of structure elements that contain user properties attributes.
    `void` | `lockLayer(PdfLayer layer)` Use this method to lock an optional content group.
    `void` | `open()` Signals that the `Document` has been opened and that `Elements` can be added.
    `(package private) boolean` | `propertyExists(java.lang.Object prop)`
    `(package private) void` | `registerLayer(PdfOCG layer)`
    `void` | `releaseTemplate(PdfTemplate tp)` Use this method to releases the memory used by a template.
    `int` | `reorderPages(int[] order)` Use this method to reorder the pages in the document.
    `(package private) void` | `resetContent()` Resets all the direct contents to empty.
    `void` | `setAdditionalAction(PdfName actionType, PdfAction action)` Additional-actions defining the actions to be taken in response to various trigger events affecting the document as a whole.
    `void` | `setAtLeastPdfVersion(char version)` 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.
    `void` | `setBoxSize(java.lang.String boxName, Rectangle size)` Use this method to set the page box sizes.
    `void` | `setCollection(PdfCollection collection)` Use this method to add the Collection dictionary.
    `void` | `setCompressionLevel(int compressionLevel)` Sets the compression level to be used for streams written by this writer.
    `void` | `setCropBoxSize(Rectangle crop)` Use this method to set the crop box.
    `void` | `setDefaultColorspace(PdfName key, PdfObject cs)` Use this method to sets the default colorspace that will be applied to all the document.
    `void` | `setDuration(int seconds)` Sets the display duration for the page (for presentations)
    `void` | `setEncryption(boolean strength, java.lang.String userPassword, java.lang.String ownerPassword, int permissions)` Deprecated. As of iText 2.0.3, replaced by (@link #setEncryption(byte[], byte[], int, int)}. Scheduled for removal at or after 2.2.0
    `void` | `setEncryption(byte[] userPassword, byte[] ownerPassword, int permissions, boolean strength128Bits)` Deprecated. As of iText 2.0.3, replaced by (@link #setEncryption(byte[], byte[], int, int)}. Scheduled for removal at or after 2.2.0
    `void` | `setEncryption(byte[] userPassword, byte[] ownerPassword, int permissions, int encryptionType)` Sets the encryption options for this document.
    `void` | `setEncryption(java.security.cert.Certificate[] certs, int[] permissions, int encryptionType)` Sets the certificate encryption options for this document.
    `void` | `setEncryption(int encryptionType, java.lang.String userPassword, java.lang.String ownerPassword, int permissions)` Deprecated. As of iText 2.0.3, replaced by (@link #setEncryption(byte[], byte[], int, int)}. Scheduled for removal at or after 2.2.0
    `void` | `setFullCompression()` Use this method to set the document's compression to the PDF 1.5 mode with object streams and xref streams.
    `void` | `setGroup(PdfDictionary group)` Use this method to set the group dictionary.
    `void` | `setInitialLeading(float leading)` Sets the initial leading for the PDF document.
    `void` | `setLinearPageMode()` Use this method to make sure the page tree has a linear structure (every leave is attached directly to the root).
    `void` | `setOpenAction(PdfAction action)` When the document opens this `action` will be invoked.
    `void` | `setOpenAction(java.lang.String name)` When the document opens it will jump to the destination with this name.
    `void` | `setOutlines(java.util.List outlines)` Sets the bookmarks.
    `boolean` | `setOutputIntents(PdfReader reader, boolean checkExistence)` Use this method to copy the output intent dictionary from another document to this one.
    `void` | `setOutputIntents(java.lang.String outputConditionIdentifier, java.lang.String outputCondition, java.lang.String registryName, java.lang.String info, byte[] destOutputProfile)` Sets the values of the output intent dictionary.
    `void` | `setOutputIntents(java.lang.String outputConditionIdentifier, java.lang.String outputCondition, java.lang.String registryName, java.lang.String info, java.awt.color.ICC_Profile colorProfile)` Sets the values of the output intent dictionary.
    `void` | `setPageAction(PdfName actionType, PdfAction action)` Sets the open and close page additional action.
    `void` | `setPageEmpty(boolean pageEmpty)` Use this method to make sure a page is added, even if it's empty.
    `void` | `setPageEvent(PdfPageEvent event)` Sets the `PdfPageEvent` for this document.
    `void` | `setPageLabels(PdfPageLabels pageLabels)` Use this method to add page labels
    `void` | `setPageXmpMetadata(byte[] xmpMetadata)` Use this method to set the XMP Metadata for each page.
    `void` | `setPdfVersion(char version)` If the PDF Header hasn't been written yet, this changes the version as it will appear in the PDF Header.
    `void` | `setPdfVersion(PdfName version)` Sets the PDF version as it will appear in the Catalog.
    `void` | `setPDFXConformance(int pdfx)` Sets the PDF/X conformance level.
    `void` | `setRgbTransparencyBlending(boolean rgbTransparencyBlending)` Sets the transparency blending colorspace to RGB.
    `void` | `setRunDirection(int runDirection)` Use this method to set the run direction.
    `void` | `setSigFlags(int f)` Use this method to set the signature flags.
    `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.
    `void` | `setStrictImageSequence(boolean strictImageSequence)` Use this method to set the image sequence, so that it follows the text in strict order (or not).
    `void` | `setTabs(PdfName tabs)` Sets the value for the Tabs entry in the page tree.
    `void` | `setTagged()` Mark this document for tagging.
    `void` | `setThumbnail(Image image)` Use this method to set the thumbnail image for the current page.
    `void` | `setTransition(PdfTransition transition)` Sets the transition for the page
    `void` | `setUserProperties(boolean userProperties)` Sets the flag indicating the presence of structure elements that contain user properties attributes.
    `void` | `setUserunit(float userunit)` Use this method to set the user unit.
    `void` | `setViewerPreferences(int preferences)` Sets the page layout and page mode preferences by ORing one or two of these constants.
    `void` | `setXmpMetadata(byte[] xmpMetadata)` Use this method to set the XMP Metadata.
    `protected void` | `writeOutlines(PdfDictionary catalog, boolean namedAsNames)`

    - ### Methods inherited from class com.lowagie.text.DocWriter

      `add, addTabs, flush, getISOBytes, isCloseStream, isPaused, newPage, pause, resetFooter, resetHeader, resetPageCount, resume, setCloseStream, setFooter, setHeader, setMarginMirroring, setMarginMirroringTopBottom, setMargins, setPageCount, setPageSize, write, write, writeEnd, writeEnd, writeMarkupAttributes, writeStart`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### 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

    - #### 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.

    - #### body

          protected PdfWriter.PdfBody body

      body of the PDF 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 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

    - #### pageEvent

          private PdfPageEvent pageEvent

      The `PdfPageEvent` for this document.

    - #### prevxref

          protected int prevxref

      A number referring to the previous Cross-Reference Table.

    - #### newBookmarks

          protected java.util.List 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

    - #### HideToolbar

          public static final int HideToolbar

      A viewer preference
      See Also:
        Constant Field Values

    - #### HideMenubar

          public static final int HideMenubar

      A viewer preference
      See Also:
        Constant Field Values

    - #### HideWindowUI

          public static final int HideWindowUI

      A viewer preference
      See Also:
        Constant Field Values

    - #### FitWindow

          public static final int FitWindow

      A viewer preference
      See Also:
        Constant Field Values

    - #### CenterWindow

          public static final int CenterWindow

      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

    - #### DirectionL2R

          public static final int DirectionL2R

      A viewer preference
      See Also:
        Constant Field Values

    - #### DirectionR2L

          public static final int DirectionR2L

      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.

    - #### PDFXNONE

          public static final int PDFXNONE

      A PDF/X level.
      See Also:
        Constant Field Values

    - #### PDFX1A2001

          public static final int PDFX1A2001

      A PDF/X level.
      See Also:
        Constant Field Values

    - #### PDFX32002

          public static final int PDFX32002

      A PDF/X level.
      See Also:
        Constant Field Values

    - #### PDFA1A

          public static final int PDFA1A

      PDFA-1A level.
      See Also:
        Constant Field Values

    - #### PDFA1B

          public static final int PDFA1B

      PDFA-1B level.
      See Also:
        Constant Field Values

    - #### pdfxConformance

          private PdfXConformanceImp pdfxConformance

      Stores the PDF/X level.

    - #### 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_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

          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

          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

          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

          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

          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

          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

          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

          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

    - #### STRENGTH40BITS

          public static final boolean STRENGTH40BITS

      Deprecated. As of iText 2.0.7, use `STANDARD_ENCRYPTION_40` instead. Scheduled for removal at or after 2.2.0
      See Also:
        Constant Field Values

    - #### STRENGTH128BITS

          public static final boolean STRENGTH128BITS

      Deprecated. As of iText 2.0.7, use `STANDARD_ENCRYPTION_128` 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 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 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.

    - #### importedPages

          protected java.util.HashMap importedPages

    - #### currentPdfReaderInstance

          protected PdfReaderInstance currentPdfReaderInstance

    - #### documentColors

          protected java.util.HashMap documentColors

      The colors of this document

    - #### colorNumber

          protected int colorNumber

      The color number counter for the colors in the document.

    - #### documentPatterns

          protected java.util.HashMap documentPatterns

      The patterns of this document

    - #### patternNumber

          protected int patternNumber

      The pattern number counter for the colors in the document.

    - #### documentShadingPatterns

          protected java.util.HashMap documentShadingPatterns

    - #### documentShadings

          protected java.util.HashMap documentShadings

    - #### documentExtGState

          protected java.util.HashMap documentExtGState

    - #### documentProperties

          protected java.util.HashMap documentProperties

    - #### tagged

          protected boolean tagged

    - #### structureTreeRoot

          protected PdfStructureTreeRoot structureTreeRoot

    - #### documentOCG

          protected java.util.HashSet documentOCG

      A hashSet containing all the PdfLayer objects.

    - #### documentOCGorder

          protected java.util.ArrayList 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

    - #### userunit

          protected float userunit

    - #### defaultColorspace

          protected PdfDictionary defaultColorspace

    - #### documentSpotPatterns

          protected java.util.HashMap documentSpotPatterns

    - #### 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 java.util.HashMap images

      This is the list with all the images in the document.

    - #### JBIG2Globals

          protected java.util.HashMap 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.

  - ### 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

    - #### 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.

    - #### addLocalDestinations

          void addLocalDestinations(java.util.TreeMap dest)
                              throws java.io.IOException

      Adds the local destinations to the body of the document.
      Parameters:
        `dest` - 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

          int getIndirectReferenceNumber()

    - #### getOs

          OutputStreamCounter getOs()

      Returns the outputStreamCounter.
      Returns:
        the outputStreamCounter

    - #### getCatalog

          protected PdfDictionary getCatalog(PdfIndirectReference rootObj)

    - #### getExtraCatalog

          public PdfDictionary getExtraCatalog()

      Sets extra keys to the catalog.
      Returns:
        the catalog to change

    - #### 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

    - #### getCurrentPage

          PdfIndirectReference getCurrentPage()

    - #### getCurrentPageNumber

          public int getCurrentPageNumber()

    - #### 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.
      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()`

    - #### 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 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.
      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.lowagie.text.pdf.PdfName)`

    - #### addDeveloperExtension

          public void addDeveloperExtension(PdfDeveloperExtension de)

      Description copied from interface: `PdfVersion`
      Adds a developer extension to the Extensions dictionary in the Catalog.
      Specified by:
        `addDeveloperExtension` in interface `PdfVersion`
      Parameters:
        `de` - an object that contains the extensions prefix and dictionary
      Since:
        2.1.6
      See Also:
        `PdfVersion.addDeveloperExtension(com.lowagie.text.pdf.PdfDeveloperExtension)`

    - #### getPdfVersion

          PdfVersionImp getPdfVersion()

      Returns the version information.

    - #### 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).
        - PAGE_LAYOUT_SINGLE_PAGE - Display one page at a time. (default)
        - PAGE_LAYOUT_ONE_COLUMN - Display the pages in one column.
        - PAGE_LAYOUT_TWO_COLUMN_LEFT - Display the pages in two columns, with oddnumbered pages on the left.
        - PAGE_LAYOUT_TWO_COLUMN_RIGHT - Display the pages in two columns, with oddnumbered pages on the right.
        - PAGE_LAYOUT_TWO_PAGE_LEFT - Display the pages two at a time, with oddnumbered pages on the left.
        - PAGE_LAYOUT_TWO_PAGE_RIGHT - Display the pages two at a time, with oddnumbered pages on the right.
      - The page mode how the document should be displayed when opened (choose one).
        - PAGE_MODE_USE_NONE - Neither document outline nor thumbnail images visible. (default)
        - PAGE_MODE_USE_OUTLINES - Document outline visible.
        - PAGE_MODE_USE_THUMBS - Thumbnail images visible.
        - PAGE_MODE_FULL_SCREEN - Full-screen mode, with no menu bar, window controls, or any other window visible.
        - PAGE_MODE_USE_OC - Optional content group panel visible
        - PAGE_MODE_USE_ATTACHMENTS - 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:
      - HIDE_TOOLBAR - A flag specifying whether to hide the viewer application's tool bars when the document is active.
      - HIDE_MENUBAR - A flag specifying whether to hide the viewer application's menu bar when the document is active.
      - HIDE_WINDOW_UI - 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.
      - FIT_WINDOW - A flag specifying whether to resize the document's window to fit the size of the first displayed page.
      - CENTER_WINDOW - A flag specifying whether to position the document's window in the center of the screen.
      - DISPLAY_DOC_TITLE - 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).
        - DIRECTION_L2R - Left to right
        - DIRECTION_R2L - 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).
        - NON_FULL_SCREEN_PAGE_MODE_USE_NONE - Neither document outline nor thumbnail images visible
        - NON_FULL_SCREEN_PAGE_MODE_USE_OUTLINES - Document outline visible
        - NON_FULL_SCREEN_PAGE_MODE_USE_THUMBS - Thumbnail images visible
        - NON_FULL_SCREEN_PAGE_MODE_USE_OC - Optional content group panel visible
      - PRINT_SCALING_NONE - 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.lowagie.text.pdf.PdfName, com.lowagie.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 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`

    - #### 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`

    - #### setOpenAction

          public void setOpenAction(java.lang.String name)

      Description copied from interface: `PdfDocumentActions`
      When the document opens it will jump to the destination with this name.
      Specified by:
        `setOpenAction` in interface `PdfDocumentActions`
      Parameters:
        `name` - the name of the destination to jump to
      See Also:
        `PdfDocumentActions.setOpenAction(java.lang.String)`

    - #### setOpenAction

          public void setOpenAction(PdfAction action)

      Description copied from interface: `PdfDocumentActions`
      When the document opens this `action` will be invoked.
      Specified by:
        `setOpenAction` in interface `PdfDocumentActions`
      Parameters:
        `action` - the action to be invoked
      See Also:
        `PdfDocumentActions.setOpenAction(com.lowagie.text.pdf.PdfAction)`

    - #### setAdditionalAction

          public void setAdditionalAction(PdfName actionType,
                                 PdfAction action)
                                   throws DocumentException

      Description copied from interface: `PdfDocumentActions`
      Additional-actions defining the actions to be taken in response to various trigger events affecting the document as a whole. The actions types allowed are: `DOCUMENT_CLOSE`, `WILL_SAVE`, `DID_SAVE`, `WILL_PRINT` and `DID_PRINT`.
      Specified by:
        `setAdditionalAction` in interface `PdfDocumentActions`
      Parameters:
        `actionType` - the action type
        `action` - the action to execute in response to the trigger
      Throws:
        `DocumentException` - on invalid action type
      See Also:
        `PdfDocumentActions.setAdditionalAction(com.lowagie.text.pdf.PdfName, com.lowagie.text.pdf.PdfAction)`

    - #### setCollection

          public void setCollection(PdfCollection collection)

      Use this method to add the Collection dictionary.
      Parameters:
        `collection` - a dictionary of type PdfCollection

    - #### getAcroForm

          public PdfAcroForm getAcroForm()

      Description copied from interface: `PdfAnnotations`
      Use this methods to get the AcroForm object. Use this method only if you know what you're doing
      Specified by:
        `getAcroForm` in interface `PdfAnnotations`
      Returns:
        the PdfAcroform object of the PdfDocument
      See Also:
        `PdfAnnotations.getAcroForm()`

    - #### addAnnotation

          public void addAnnotation(PdfAnnotation annot)

      Description copied from interface: `PdfAnnotations`
      Use this methods to add a `PdfAnnotation` or a `PdfFormField` to the document. Only the top parent of a `PdfFormField` needs to be added.
      Specified by:
        `addAnnotation` in interface `PdfAnnotations`
      Parameters:
        `annot` - the `PdfAnnotation` or the `PdfFormField` to add
      See Also:
        `PdfAnnotations.addAnnotation(com.lowagie.text.pdf.PdfAnnotation)`

    - #### addAnnotation

          void addAnnotation(PdfAnnotation annot,
                           int page)

    - #### addCalculationOrder

          public void addCalculationOrder(PdfFormField annot)

      Description copied from interface: `PdfAnnotations`
      Use this method to adds the `PdfAnnotation` to the calculation order array.
      Specified by:
        `addCalculationOrder` in interface `PdfAnnotations`
      Parameters:
        `annot` - the `PdfAnnotation` to be added
      See Also:
        `PdfAnnotations.addCalculationOrder(com.lowagie.text.pdf.PdfFormField)`

    - #### setSigFlags

          public void setSigFlags(int f)

      Description copied from interface: `PdfAnnotations`
      Use this method to set the signature flags.
      Specified by:
        `setSigFlags` in interface `PdfAnnotations`
      Parameters:
        `f` - the flags. This flags are ORed with current ones
      See Also:
        `PdfAnnotations.setSigFlags(int)`

    - #### 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)

      Use this method to set the XMP Metadata for each page.
      Parameters:
        `xmpMetadata` - The xmpMetadata to set.

    - #### createXmpMetadata

          public void createXmpMetadata()

      Use this method to creates XMP Metadata based on the metadata in the PdfDocument.

    - #### createXmpMetadataBytes

          private byte[] createXmpMetadataBytes()

      Returns:
        an XmpMetadata byte array

    - #### setPDFXConformance

          public void setPDFXConformance(int pdfx)

      Description copied from interface: `PdfXConformance`
      Sets the PDF/X conformance level. Allowed values are PDFX1A2001, PDFX32002, PDFA1A and PDFA1B. It must be called before opening the document.
      Specified by:
        `setPDFXConformance` in interface `PdfXConformance`
      Parameters:
        `pdfx` - the conformance level
      See Also:
        `PdfXConformance.setPDFXConformance(int)`

    - #### getPDFXConformance

          public int getPDFXConformance()

      Description copied from interface: `PdfXConformance`
      Getter for the PDF/X Conformance value.
      Specified by:
        `getPDFXConformance` in interface `PdfXConformance`
      Returns:
        the pdfxConformance
      See Also:
        `PdfXConformance.getPDFXConformance()`

    - #### isPdfX

          public boolean isPdfX()

      Description copied from interface: `PdfXConformance`
      Checks if the PDF/X Conformance is necessary.
      Specified by:
        `isPdfX` in interface `PdfXConformance`
      Returns:
        true if the PDF has to be in conformance with any of the PDF/X specifications
      See Also:
        `PdfXConformance.isPdfX()`

    - #### setOutputIntents

          public void setOutputIntents(java.lang.String outputConditionIdentifier,
                              java.lang.String outputCondition,
                              java.lang.String registryName,
                              java.lang.String info,
                              java.awt.color.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, "PDFA/A" to force GTS_PDFA1, otherwise cued by pdfxConformance.
        `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

          private static java.lang.String getNameString(PdfDictionary dic,
                                       PdfName key)

    - #### getEncryption

          PdfEncryption getEncryption()

    - #### setEncryption

          public void setEncryption(byte[] userPassword,
                           byte[] ownerPassword,
                           int permissions,
                           int encryptionType)
                             throws DocumentException

      Description copied from interface: `PdfEncryptionSettings`
      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` - 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
      Throws:
        `DocumentException` - if the document is already open
      See Also:
        `PdfEncryptionSettings.setEncryption(byte[], byte[], int, int)`

    - #### setEncryption

          public void setEncryption(java.security.cert.Certificate[] certs,
                           int[] permissions,
                           int encryptionType)
                             throws DocumentException

      Description copied from interface: `PdfEncryptionSettings`
      Sets the certificate encryption options for this document. An array of one or more public certificates must be provided together with an array of the same size for the permissions for each certificate. 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. Optionally DO_NOT_ENCRYPT_METADATA can be ored to output the metadata in cleartext
      Specified by:
        `setEncryption` in interface `PdfEncryptionSettings`
      Parameters:
        `certs` - the public certificates to be used for the encryption
        `permissions` - the user permissions for each of the certificates
        `encryptionType` - the type of encryption. It can be one of STANDARD_ENCRYPTION_40, STANDARD_ENCRYPTION_128 or ENCRYPTION_AES128.
      Throws:
        `DocumentException` - if the document is already open
      See Also:
        `PdfEncryptionSettings.setEncryption(java.security.cert.Certificate[], int[], int)`

    - #### setEncryption

          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

          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

          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()

      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.

      If set before opening the document it will also set the pdf version to 1.5.

    - #### 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

    - #### 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 int 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)

    - #### getReaderFile

          RandomAccessFileOrArray getReaderFile(PdfReader reader)

    - #### getColorspaceName

          PdfName getColorspaceName()

    - #### addSimple

          ColorDetails addSimple(PdfSpotColor 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`

    - #### addSimplePattern

          PdfName addSimplePattern(PdfPatternPainter painter)

    - #### addSimpleShadingPattern

          void addSimpleShadingPattern(PdfShadingPattern shading)

    - #### addSimpleShading

          void addSimpleShading(PdfShading shading)

    - #### addSimpleExtGState

          PdfObject[] addSimpleExtGState(PdfDictionary gstate)

    - #### addSimpleProperty

          PdfObject[] addSimpleProperty(java.lang.Object prop,
                                      PdfIndirectReference refi)

    - #### propertyExists

          boolean propertyExists(java.lang.Object prop)

    - #### setTagged

          public void setTagged()

      Mark this document for tagging. It must be called before open.

    - #### isTagged

          public boolean isTagged()

      Check if the document is marked for tagging.
      Returns:
        `true` if the document is marked for tagging

    - #### 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 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)

      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

    - #### 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:
        2.1.8

    - #### setPageAction

          public void setPageAction(PdfName actionType,
                           PdfAction action)
                             throws DocumentException

      Description copied from interface: `PdfPageActions`
      Sets the open and close page additional action.
      Specified by:
        `setPageAction` in interface `PdfPageActions`
      Parameters:
        `actionType` - the action type. It can be `PdfWriter.PAGE_OPEN` or `PdfWriter.PAGE_CLOSE`
        `action` - the action to perform
      Throws:
        `DocumentException` - if the action type is invalid
      See Also:
        `PdfPageActions.setPageAction(com.lowagie.text.pdf.PdfName, com.lowagie.text.pdf.PdfAction)`

    - #### setDuration

          public void setDuration(int seconds)

      Description copied from interface: `PdfPageActions`
      Sets the display duration for the page (for presentations)
      Specified by:
        `setDuration` in interface `PdfPageActions`
      Parameters:
        `seconds` - the number of seconds to display the page
      See Also:
        `PdfPageActions.setDuration(int)`

    - #### setTransition

          public void setTransition(PdfTransition transition)

      Description copied from interface: `PdfPageActions`
      Sets the transition for the page
      Specified by:
        `setTransition` in interface `PdfPageActions`
      Parameters:
        `transition` - the Transition object
      See Also:
        `PdfPageActions.setTransition(com.lowagie.text.pdf.PdfTransition)`

    - #### setThumbnail

          public void setThumbnail(Image image)
                            throws PdfException,
                                   DocumentException

      Use this method to set the thumbnail image for the current page.
      Parameters:
        `image` - the image
      Throws:
        `PdfException` - on error
        `DocumentException` - or error

    - #### 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

    - #### getUserunit

          public float getUserunit()

      Use this method to get the user unit. A user unit 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!
      Returns:
        Returns the userunit.

    - #### 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

    - #### addSimplePatternColorspace

          ColorDetails addSimplePatternColorspace(java.awt.Color color)

    - #### 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

    - #### clearTextWrap

          public void clearTextWrap()
                             throws DocumentException

      Use this method to clear text wrapping around images (if applicable).
      Throws:
        `DocumentException`

    - #### 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
      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`

    - #### add

          protected PdfIndirectReference add(PdfICCBased icc)

    - #### 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.
      Since:
        2.1.5

    - #### fitsPage

          public boolean fitsPage(Table table,
                         float margin)

      Checks if a `Table` fits the current page of the `PdfDocument`.
      Parameters:
        `table` - the table that has to be checked
        `margin` - a certain margin
      Returns:
        `true` if the `Table` fits the page, `false` otherwise.

    - #### fitsPage

          public boolean fitsPage(Table table)

      Checks if a `Table` fits the current page of the `PdfDocument`.
      Parameters:
        `table` - the table that has to be checked
      Returns:
        `true` if the `Table` fits the page, `false` otherwise.

    - #### 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