Class PDFPrintable

  • All Implemented Interfaces:
    java.awt.print.Printable

    public final class PDFPrintable
    extends java.lang.Object
    implements java.awt.print.Printable
    Prints pages from a PDF document using any page size or scaling mode.
    • Constructor Summary

      Constructors 
      Constructor Description
      PDFPrintable​(PDDocument document)
      Creates a new PDFPrintable.
      PDFPrintable​(PDDocument document, Scaling scaling)
      Creates a new PDFPrintable with the given page scaling.
      PDFPrintable​(PDDocument document, Scaling scaling, boolean showPageBorder)
      Creates a new PDFPrintable with the given page scaling and with optional page borders shown.
      PDFPrintable​(PDDocument document, Scaling scaling, boolean showPageBorder, float dpi)
      Creates a new PDFPrintable with the given page scaling and with optional page borders shown.
      PDFPrintable​(PDDocument document, Scaling scaling, boolean showPageBorder, float dpi, boolean center)
      Creates a new PDFPrintable with the given page scaling and with optional page borders shown.
      PDFPrintable​(PDDocument document, Scaling scaling, boolean showPageBorder, float dpi, boolean center, PDFRenderer renderer)
      Creates a new PDFPrintable with the given page scaling and with optional page borders shown.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.awt.RenderingHints getRenderingHints()
      Get the rendering hints.
      (package private) static PDRectangle getRotatedCropBox​(PDPage page)
      This will find the CropBox with rotation applied, for this page by looking up the hierarchy until it finds them.
      (package private) static PDRectangle getRotatedMediaBox​(PDPage page)
      This will find the MediaBox with rotation applied, for this page by looking up the hierarchy until it finds them.
      boolean isSubsamplingAllowed()
      Value indicating if the renderer is allowed to subsample images before drawing, according to image dimensions and requested scale.
      int print​(java.awt.Graphics graphics, java.awt.print.PageFormat pageFormat, int pageIndex)  
      void setRenderingHints​(java.awt.RenderingHints renderingHints)
      Set the rendering hints.
      void setSubsamplingAllowed​(boolean subsamplingAllowed)
      Sets a value instructing the renderer whether it is allowed to subsample images before drawing.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • showPageBorder

        private final boolean showPageBorder
      • scaling

        private final Scaling scaling
      • dpi

        private final float dpi
      • center

        private final boolean center
      • subsamplingAllowed

        private boolean subsamplingAllowed
      • renderingHints

        private java.awt.RenderingHints renderingHints
    • Constructor Detail

      • PDFPrintable

        public PDFPrintable​(PDDocument document)
        Creates a new PDFPrintable.
        Parameters:
        document - the document to print
      • PDFPrintable

        public PDFPrintable​(PDDocument document,
                            Scaling scaling)
        Creates a new PDFPrintable with the given page scaling.
        Parameters:
        document - the document to print
        scaling - page scaling policy
      • PDFPrintable

        public PDFPrintable​(PDDocument document,
                            Scaling scaling,
                            boolean showPageBorder)
        Creates a new PDFPrintable with the given page scaling and with optional page borders shown.
        Parameters:
        document - the document to print
        scaling - page scaling policy
        showPageBorder - true if page borders are to be printed
      • PDFPrintable

        public PDFPrintable​(PDDocument document,
                            Scaling scaling,
                            boolean showPageBorder,
                            float dpi)
        Creates a new PDFPrintable with the given page scaling and with optional page borders shown. The image will be rasterized at the given DPI before being sent to the printer.
        Parameters:
        document - the document to print
        scaling - page scaling policy
        showPageBorder - true if page borders are to be printed
        dpi - if non-zero then the image will be rasterized at the given DPI
      • PDFPrintable

        public PDFPrintable​(PDDocument document,
                            Scaling scaling,
                            boolean showPageBorder,
                            float dpi,
                            boolean center)
        Creates a new PDFPrintable with the given page scaling and with optional page borders shown. The image will be rasterized at the given DPI before being sent to the printer.
        Parameters:
        document - the document to print
        scaling - page scaling policy
        showPageBorder - true if page borders are to be printed
        dpi - if non-zero then the image will be rasterized at the given DPI
        center - true if the content is to be centered on the page (otherwise top-left).
      • PDFPrintable

        public PDFPrintable​(PDDocument document,
                            Scaling scaling,
                            boolean showPageBorder,
                            float dpi,
                            boolean center,
                            PDFRenderer renderer)
        Creates a new PDFPrintable with the given page scaling and with optional page borders shown. The image will be rasterized at the given DPI before being sent to the printer.
        Parameters:
        document - the document to print
        scaling - page scaling policy
        showPageBorder - true if page borders are to be printed
        dpi - if non-zero then the image will be rasterized at the given DPI
        center - true if the content is to be centered on the page (otherwise top-left).
        renderer - the document renderer. Useful if PDFRenderer has been subclassed.
    • Method Detail

      • isSubsamplingAllowed

        public boolean isSubsamplingAllowed()
        Value indicating if the renderer is allowed to subsample images before drawing, according to image dimensions and requested scale. Subsampling may be faster and less memory-intensive in some cases, but it may also lead to loss of quality, especially in images with high spatial frequency.
        Returns:
        true if subsampling of images is allowed, false otherwise.
      • setSubsamplingAllowed

        public void setSubsamplingAllowed​(boolean subsamplingAllowed)
        Sets a value instructing the renderer whether it is allowed to subsample images before drawing. The subsampling frequency is determined according to image size and requested scale. Subsampling may be faster and less memory-intensive in some cases, but it may also lead to loss of quality, especially in images with high spatial frequency.
        Parameters:
        subsamplingAllowed - The new value indicating if subsampling is allowed.
      • getRenderingHints

        public java.awt.RenderingHints getRenderingHints()
        Get the rendering hints.
        Returns:
        the rendering hints or null if none are set.
      • setRenderingHints

        public void setRenderingHints​(java.awt.RenderingHints renderingHints)
        Set the rendering hints. Use this to influence rendering quality and speed. If you don't set them yourself or pass null, PDFBox will decide at runtime depending on the destination.
        Parameters:
        renderingHints -
      • print

        public int print​(java.awt.Graphics graphics,
                         java.awt.print.PageFormat pageFormat,
                         int pageIndex)
                  throws java.awt.print.PrinterException
        Specified by:
        print in interface java.awt.print.Printable
        Throws:
        java.awt.print.PrinterException
      • getRotatedCropBox

        static PDRectangle getRotatedCropBox​(PDPage page)
        This will find the CropBox with rotation applied, for this page by looking up the hierarchy until it finds them.
        Returns:
        The CropBox at this level in the hierarchy.
      • getRotatedMediaBox

        static PDRectangle getRotatedMediaBox​(PDPage page)
        This will find the MediaBox with rotation applied, for this page by looking up the hierarchy until it finds them.
        Returns:
        The MediaBox at this level in the hierarchy.