org.apache.pdfbox.printing

## Class PDFPrintable

- java.lang.Object
- - org.apache.pdfbox.printing.PDFPrintable

All Implemented Interfaces:
  Printable

    public final class PDFPrintable
    extends Object
    implements Printable

Prints pages from a PDF document using any page size or scaling mode.

Author:
  John Hewson

### Field Summary

Fields
`static float` `RASTERIZE_DPI_AUTO`
`static float` `RASTERIZE_OFF`

### Fields inherited from interface java.awt.print.Printable

`NO_SUCH_PAGE, PAGE_EXISTS`

### Constructor Summary

Constructors
Constructor and 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 Instance Methods Concrete Methods
`RenderingHints` `getRenderingHints()` Get the rendering hints.
`boolean` `isSubsamplingAllowed()` Value indicating if the renderer is allowed to subsample images before drawing, according to image dimensions and requested scale.
`int` `print(Graphics graphics, PageFormat pageFormat, int pageIndex)`
`void` `setRenderingHints(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

#### RASTERIZE_OFF

    public static final float RASTERIZE_OFF

See Also:
  Constant Field Values

#### RASTERIZE_DPI_AUTO

    public static final float RASTERIZE_DPI_AUTO

See Also:
  Constant Field Values

### 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 positive non-zero then the image will be rasterized at the given DPI. If set to the special value RASTERIZE_DPI_AUTO, the dpi of the printer will be used.

#### 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 positive non-zero then the image will be rasterized at the given DPI. If set to the special value RASTERIZE_DPI_AUTO, the dpi of the printer will be used.
  `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 positive non-zero then the image will be rasterized at the given DPI. If set to the special value RASTERIZE_DPI_AUTO, the dpi of the printer will be used.
  `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 RenderingHints getRenderingHints()

Get the rendering hints.

Returns:
  the rendering hints or null if none are set.

#### setRenderingHints

    public void setRenderingHints(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` - rendering hints to be used to influence rendering quality and speed

#### print

    public int print(Graphics graphics,
                     PageFormat pageFormat,
                     int pageIndex)
              throws PrinterException

Specified by:
  `print` in interface `Printable`
Throws:
  `PrinterException`