Class PdfCopy

All Implemented Interfaces:
DocListener, ElementListener, PdfAnnotations, PdfDocumentActions, PdfEncryptionSettings, PdfPageActions, PdfRunDirection, PdfVersion, PdfViewerPreferences, PdfXConformance, AutoCloseable, EventListener
Direct Known Subclasses:
PdfSmartCopy

public class PdfCopy extends PdfWriter
Make copies of PDF documents. Documents can be edited after reading and before writing them out.
  • Field Details

  • Constructor Details

  • Method Details

    • isRotateContents

      public boolean isRotateContents()
      Getter for property rotateContents.
      Returns:
      Value of property rotateContents.
    • setRotateContents

      public void setRotateContents(boolean rotateContents)
      Setter for property rotateContents.
      Parameters:
      rotateContents - New value of property rotateContents.
    • getImportedPage

      public PdfImportedPage getImportedPage(PdfReader reader, int pageNumber)
      Grabs a page from the input document
      Overrides:
      getImportedPage in class PdfWriter
      Parameters:
      reader - the reader of the document
      pageNumber - which page to get
      Returns:
      the page
    • copyIndirect

      Translate a PRIndirectReference to a PdfIndirectReference In addition, translates the object numbers, and copies the referenced object to the output file. NB: PRIndirectReferences (and PRIndirectObjects) really need to know what file they came from, because each file has its own namespace. The translation we do from their namespace to ours is *at best* heuristic, and guaranteed to fail under some circumstances.
      Parameters:
      in - the PRIndirectReference to translate
      Returns:
      the translated PRIndirectReference
      Throws:
      IOException - on error
      BadPdfFormatException - on error with the Pdf format
    • copyDictionary

      protected PdfDictionary copyDictionary(PdfDictionary in) throws IOException, BadPdfFormatException
      Translate a PRDictionary to a PdfDictionary. Also translate all of the objects contained in it.
      Parameters:
      in - the PRDictionary to translate
      Returns:
      the translated PRDictionary
      Throws:
      IOException - on error
      BadPdfFormatException - on error with the Pdf format
    • copyStream

      protected PdfStream copyStream(PRStream in) throws IOException, BadPdfFormatException
      Translate a PRStream to a PdfStream. The data part copies itself.
      Parameters:
      in - the PRStream to translate
      Returns:
      the translated PRStream
      Throws:
      IOException - on error
      BadPdfFormatException - on error with the Pdf format
    • copyArray

      protected PdfArray copyArray(PdfArray in) throws IOException, BadPdfFormatException
      Translate a PRArray to a PdfArray. Also translate all of the objects contained in it
      Parameters:
      in - the PdfArray to copy
      Returns:
      the newly generate PdfArray
      Throws:
      IOException - on error
      BadPdfFormatException
    • copyObject

      protected PdfObject copyObject(PdfObject in) throws IOException, BadPdfFormatException
      Translate a PR-object to a Pdf-object
      Parameters:
      in - the PdfObject to translate
      Returns:
      the PdfObject
      Throws:
      IOException - on error
      BadPdfFormatException - on error with the Pdf format
    • setFromIPage

      protected int setFromIPage(PdfImportedPage iPage)
      convenience method. Given an imported page, set our "globals"
      Parameters:
      iPage - the imported page
      Returns:
      the page number
    • setFromReader

      protected void setFromReader(PdfReader reader)
      convenience method. Given a reader, set our "globals"
      Parameters:
      reader - the PdfReader
    • addPage

      public void addPage(PdfImportedPage iPage) throws IOException, BadPdfFormatException
      Add an imported page to our output
      Parameters:
      iPage - an imported page
      Throws:
      IOException - on error
      BadPdfFormatException - on error
    • addPage

      public void addPage(Rectangle rect, int rotation)
      Adds a blank page.
      Parameters:
      rect - The page dimension
      rotation - The rotation angle in degrees
      Since:
      2.1.5
    • copyAcroForm

      public void copyAcroForm(PdfReader reader) throws IOException, BadPdfFormatException
      Copy the acroform for an input document. Note that you can only have one, we make no effort to merge them.
      Parameters:
      reader - The reader of the input file that is being copied
      Throws:
      IOException - on error
      BadPdfFormatException - on error
    • getCatalog

      protected PdfDictionary getCatalog(PdfIndirectReference rootObj)
      Overrides:
      getCatalog in class PdfWriter
    • addFieldResources

      private void addFieldResources(PdfDictionary catalog) throws IOException
      Throws:
      IOException
    • 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 AutoCloseable
      Specified by:
      close in interface DocListener
      Overrides:
      close in class PdfWriter
      See Also:
    • add

      public PdfIndirectReference add(PdfOutline outline)
    • 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
      Overrides:
      addAnnotation in class PdfWriter
      Parameters:
      annot - the PdfAnnotation or the PdfFormField to add
      See Also:
    • add

      Description copied from class: PdfWriter
      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.

      Overrides:
      add in class PdfWriter
      Parameters:
      page - the PdfPage to add
      contents - the PdfContents of the page
      Returns:
      a PdfIndirectReference
      Throws:
      PdfException - on error
    • freeReader

      public void freeReader(PdfReader reader) throws IOException
      Description copied from class: PdfWriter
      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.
      Overrides:
      freeReader in class PdfWriter
      Parameters:
      reader - the PdfReader to free
      Throws:
      IOException - on error
    • createPageStamp

      public PdfCopy.PageStamp createPageStamp(PdfImportedPage iPage)
      Create a page stamp. New content and annotations, including new fields, are allowed. The fields added cannot have parents in another pages. This method modifies the PdfReader instance.

      The general usage to stamp something in a page is:

       PdfImportedPage page = copy.getImportedPage(reader, 1);
       PdfCopy.PageStamp ps = copy.createPageStamp(page);
       ps.addAnnotation(PdfAnnotation.createText(copy, new Rectangle(50, 180, 70, 200), "Hello", "No Thanks", true, "Comment"));
       PdfContentByte under = ps.getUnderContent();
       under.addImage(img);
       PdfContentByte over = ps.getOverContent();
       over.beginText();
       over.setFontAndSize(bf, 18);
       over.setTextMatrix(30, 30);
       over.showText("total page " + totalPage);
       over.endText();
       ps.alterContents();
       copy.addPage(page);
       
      Parameters:
      iPage - an imported page
      Returns:
      the PageStamp