Class PdfWriter

All Implemented Interfaces:
Closeable, Flushable, AutoCloseable
Direct Known Subclasses:
MemoryFirstPdfWriter

public class PdfWriter extends PdfOutputStream
  • Field Details

    • obj

      private static final byte[] obj
    • endobj

      private static final byte[] endobj
    • properties

      protected WriterProperties properties
    • isUserWarnedAboutAcroFormCopying

      protected boolean isUserWarnedAboutAcroFormCopying
    • objectStream

      PdfObjectStream objectStream
      Currently active object stream. Objects are written to the object stream if fullCompression set to true.
    • copiedObjects

      Is used to avoid duplications on object copying. It stores hashes of the indirect reference from the source document and the corresponding indirect references of the copied objects from the new document.
    • smartModeSerializer

      private SmartModePdfObjectsSerializer smartModeSerializer
      Is used in smart mode to serialize and store serialized objects content.
  • Constructor Details

    • PdfWriter

      public PdfWriter(File file) throws FileNotFoundException
      Create a PdfWriter writing to the passed File and with default writer properties.
      Parameters:
      file - File to write to.
      Throws:
      FileNotFoundException - if the file exists but is a directory rather than a regular file, does not exist but cannot be created, or cannot be opened for any other reason
    • PdfWriter

      public PdfWriter(OutputStream os)
      Create a PdfWriter writing to the passed outputstream and with default writer properties.
      Parameters:
      os - Outputstream to write to.
    • PdfWriter

      public PdfWriter(OutputStream os, WriterProperties properties)
    • PdfWriter

      public PdfWriter(String filename) throws FileNotFoundException
      Create a PdfWriter writing to the passed filename and with default writer properties.
      Parameters:
      filename - filename of the resulting pdf.
      Throws:
      FileNotFoundException - if the file exists but is a directory rather than a regular file, does not exist but cannot be created, or cannot be opened for any other reason
    • PdfWriter

      public PdfWriter(String filename, WriterProperties properties) throws FileNotFoundException
      Create a PdfWriter writing to the passed filename and using the passed writer properties.
      Parameters:
      filename - filename of the resulting pdf.
      properties - writerproperties to use.
      Throws:
      FileNotFoundException - if the file exists but is a directory rather than a regular file, does not exist but cannot be created, or cannot be opened for any other reason
  • Method Details

    • isFullCompression

      public boolean isFullCompression()
      Indicates if to use full compression mode.
      Returns:
      true if to use full compression, false otherwise.
    • getCompressionLevel

      public int getCompressionLevel()
      Gets default compression level for @see PdfStream. For more details @see DeflaterOutputStream.
      Returns:
      compression level.
    • setCompressionLevel

      public PdfWriter setCompressionLevel(int compressionLevel)
      Sets default compression level for @see PdfStream. For more details @see DeflaterOutputStream.
      Parameters:
      compressionLevel - compression level.
      Returns:
      this PdfWriter instance
    • getProperties

      public WriterProperties getProperties()
      Gets the writer properties.
      Returns:
      The WriterProperties of the current PdfWriter.
    • setSmartMode

      public PdfWriter setSmartMode(boolean smartMode)
      Sets the smart mode.
      In smart mode when resources (such as fonts, images,...) are encountered, a reference to these resources is saved in a cache, so that they can be reused. This requires more memory, but reduces the file size of the resulting PDF document.
      Parameters:
      smartMode - True for enabling smart mode.
      Returns:
      this PdfWriter instance
    • initCryptoIfSpecified

      protected void initCryptoIfSpecified(PdfVersion version)
    • flushObject

      protected void flushObject(PdfObject pdfObject, boolean canBeInObjStm)
      Flushes the object. Override this method if you want to define custom behaviour for object flushing.
      Parameters:
      pdfObject - object to flush.
      canBeInObjStm - indicates whether object can be placed into object stream.
    • copyObject

      protected PdfObject copyObject(PdfObject obj, PdfDocument documentTo, boolean allowDuplicating)
      Copies a PdfObject either stand alone or as part of the PdfDocument passed as documentTo.
      Parameters:
      obj - object to copy
      documentTo - optional target document
      allowDuplicating - allow that some objects will become duplicated by this action
      Returns:
      the copies object
    • copyObject

      protected PdfObject copyObject(PdfObject obj, PdfDocument documentTo, boolean allowDuplicating, ICopyFilter copyFilter)
      Copies a PdfObject either stand alone or as part of the PdfDocument passed as documentTo.
      Parameters:
      obj - object to copy
      documentTo - optional target document
      allowDuplicating - allow that some objects will become duplicated by this action
      copyFilter - ICopyFilter a filter to apply while copying arrays and dictionaries * Use NullCopyFilter for no filtering
      Returns:
      the copies object
    • writeToBody

      protected void writeToBody(PdfObject pdfObj)
      Writes object to body of PDF document.
      Parameters:
      pdfObj - object to write.
    • writeHeader

      protected void writeHeader()
      Writes PDF header.
    • flushWaitingObjects

      protected void flushWaitingObjects(Set<PdfIndirectReference> forbiddenToFlush)
      Flushes all objects which have not been flushed yet.
      Parameters:
      forbiddenToFlush - a Set of references that are forbidden to be flushed automatically.
    • flushModifiedWaitingObjects

      protected void flushModifiedWaitingObjects(Set<PdfIndirectReference> forbiddenToFlush)
      Flushes all modified objects which have not been flushed yet. Used in case incremental updates.
      Parameters:
      forbiddenToFlush - a Set of references that are forbidden to be flushed automatically.
    • getObjectStream

      PdfObjectStream getObjectStream()
      Gets the current object stream.
      Returns:
      object stream.
    • flushCopiedObjects

      void flushCopiedObjects(long docId)
      Flush all copied objects.
      Parameters:
      docId - id of the source document
    • markArrayContentToFlush

      private void markArrayContentToFlush(PdfArray array)
    • markDictionaryContentToFlush

      private void markDictionaryContentToFlush(PdfDictionary dictionary)
    • markObjectToFlush

      private void markObjectToFlush(PdfObject pdfObject)
    • checkTypeOfPdfDictionary

      private static boolean checkTypeOfPdfDictionary(PdfObject dictionary, PdfName expectedType)