Class LayerUtility


  • public class LayerUtility
    extends Object
    This class allows to import pages as Form XObjects into a PDF file and use them to create layers (optional content groups).
    • Constructor Detail

      • LayerUtility

        public LayerUtility​(PDDocument document)
        Creates a new instance.
        Parameters:
        document - the PDF document to modify
    • Method Detail

      • getDocument

        public PDDocument getDocument()
        Returns the PDF document we work on.
        Returns:
        the PDF document
      • wrapInSaveRestore

        public void wrapInSaveRestore​(PDPage page)
                               throws IOException
        Some applications may not wrap their page content in a save/restore (q/Q) pair which can lead to problems with coordinate system transformations when content is appended. This method lets you add a q/Q pair around the existing page's content.
        Parameters:
        page - the page
        Throws:
        IOException - if an I/O error occurs
      • importPageAsForm

        public PDFormXObject importPageAsForm​(PDDocument sourceDoc,
                                              int pageNumber)
                                       throws IOException
        Imports a page from some PDF file as a Form XObject so it can be placed on another page in the target document.
        Parameters:
        sourceDoc - the source PDF document that contains the page to be copied
        pageNumber - the page number of the page to be copied
        Returns:
        a Form XObject containing the original page's content
        Throws:
        IOException - if an I/O error occurs
      • importPageAsForm

        public PDFormXObject importPageAsForm​(PDDocument sourceDoc,
                                              PDPage page)
                                       throws IOException
        Imports a page from some PDF file as a Form XObject so it can be placed on another page in the target document.
        Parameters:
        sourceDoc - the source PDF document that contains the page to be copied
        page - the page in the source PDF document to be copied
        Returns:
        a Form XObject containing the original page's content
        Throws:
        IOException - if an I/O error occurs
      • appendFormAsLayer

        public PDOptionalContentGroup appendFormAsLayer​(PDPage targetPage,
                                                        PDFormXObject form,
                                                        AffineTransform transform,
                                                        String layerName)
                                                 throws IOException
        Places the given form over the existing content of the indicated page (like an overlay). The form is enveloped in a marked content section to indicate that it's part of an optional content group (OCG), here used as a layer. This optional group is returned and can be enabled and disabled through methods on PDOptionalContentProperties.
        Parameters:
        targetPage - the target page
        form - the form to place
        transform - the transformation matrix that controls the placement
        layerName - the name for the layer/OCG to produce
        Returns:
        the optional content group that was generated for the form usage
        Throws:
        IOException - if an I/O error occurs