org.apache.pdfbox.multipdf

## Class Overlay

- java.lang.Object
- - org.apache.pdfbox.multipdf.Overlay

All Implemented Interfaces:
  Closeable, AutoCloseable

    public class Overlay
    extends Object
    implements Closeable

Adds an overlay to an existing PDF document. Based on code contributed by Balazs Jerk.

### Nested Class Summary

Nested Classes
`static class` `Overlay.Position` Possible location of the overlaid pages: foreground or background.

### Constructor Summary

Constructors
Constructor and Description
`Overlay()`

### Method Summary

All Methods Instance Methods Concrete Methods
`protected AffineTransform` `calculateAffineTransform(PDPage page, PDRectangle overlayMediaBox)` Calculate the transform to be used when positioning the overlay.
`void` `close()` Close all input documents which were used for the overlay and opened by this class.
`String` `getDefaultOverlayFile()` Returns the default overlay file.
`String` `getInputFile()` Returns the input file.
`PDDocument` `overlay(Map<Integer,String> specificPageOverlayMap)` This will add overlays to a document.
`PDDocument` `overlayDocuments(Map<Integer,PDDocument> specificPageOverlayDocumentMap)` This will add overlays documents to a document.
`void` `setAdjustRotation(boolean adjustRotation)` This sets whether the overlay is to be rotated according to the rotation of the pages of the source document.
`void` `setAllPagesOverlayFile(String allPagesOverlayFile)` Sets the all pages overlay file.
`void` `setAllPagesOverlayPDF(PDDocument allPagesOverlayPDF)` Sets the all pages overlay PDF.
`void` `setDefaultOverlayFile(String defaultOverlayFile)` Sets the default overlay file.
`void` `setDefaultOverlayPDF(PDDocument defaultOverlayPDF)` Sets the default overlay PDF.
`void` `setEvenPageOverlayFile(String evenPageOverlayFile)` Sets the even page overlay file.
`void` `setEvenPageOverlayPDF(PDDocument evenPageOverlayPDF)` Sets the even page overlay PDF.
`void` `setFirstPageOverlayFile(String firstPageOverlayFile)` Sets the first page overlay file.
`void` `setFirstPageOverlayPDF(PDDocument firstPageOverlayPDF)` Sets the first page overlay PDF.
`void` `setInputFile(String inputFile)` Sets the file to be overlaid.
`void` `setInputPDF(PDDocument inputPDF)` Sets the PDF to be overlaid.
`void` `setLastPageOverlayFile(String lastPageOverlayFile)` Sets the last page overlay file.
`void` `setLastPageOverlayPDF(PDDocument lastPageOverlayPDF)` Sets the last page overlay PDF.
`void` `setOddPageOverlayFile(String oddPageOverlayFile)` Sets the odd page overlay file.
`void` `setOddPageOverlayPDF(PDDocument oddPageOverlayPDF)` Sets the odd page overlay PDF.
`void` `setOverlayPosition(Overlay.Position overlayPosition)` Sets the overlay position.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### Overlay

    public Overlay()

### Method Detail

#### overlay

    public PDDocument overlay(Map<Integer,String> specificPageOverlayMap)
                       throws IOException

This will add overlays to a document.

Parameters:
  `specificPageOverlayMap` - Optional map of overlay files of which the first page will be used for specific pages of the input document. The page numbers are 1-based. The map must be empty (but not null) if no specific mappings are used.
Returns:
  The modified input PDF document, which has to be saved and closed by the caller. If the input document was passed by `setInputPDF(PDDocument)` then it is that object that is returned.
Throws:
  `IOException` - if something went wrong.
  `IllegalArgumentException` - if the input document is missing.

#### overlayDocuments

    public PDDocument overlayDocuments(Map<Integer,PDDocument> specificPageOverlayDocumentMap)
                                throws IOException

This will add overlays documents to a document. If you created the overlay documents with subsetted fonts, you need to save them first so that the subsetting gets done.

Parameters:
  `specificPageOverlayDocumentMap` - Optional map of overlay documents for specific pages. The page numbers are 1-based. The map must be empty (but not null) if no specific mappings are used.
Returns:
  The modified input PDF document, which has to be saved and closed by the caller. If the input document was passed by `setInputPDF(PDDocument)` then it is that object that is returned.
Throws:
  `IOException` - if something went wrong

#### close

    public void close()
               throws IOException

Close all input documents which were used for the overlay and opened by this class.

Specified by:
  `close` in interface `Closeable`
Specified by:
  `close` in interface `AutoCloseable`
Throws:
  `IOException` - if something went wrong

#### calculateAffineTransform

    protected AffineTransform calculateAffineTransform(PDPage page,
                                                       PDRectangle overlayMediaBox)

Calculate the transform to be used when positioning the overlay. The default implementation centers on the destination and assumes (0,0) to be the lower left (This will be changed in 4.0, see PDFBOX-6048 why). Override this method to do your own, e.g. move to a corner, rotate, or zoom.

Parameters:
  `page` - The page that will get the overlay.
  `overlayMediaBox` - The overlay media box.
Returns:
  The affine transform to be used.

#### setOverlayPosition

    public void setOverlayPosition(Overlay.Position overlayPosition)

Sets the overlay position.

Parameters:
  `overlayPosition` - the overlay position

#### setInputFile

    public void setInputFile(String inputFile)

Sets the file to be overlaid.

Parameters:
  `inputFile` - the file to be overlaid. The `PDDocument` object gathered from opening this file will be returned by `overlay(Map<Integer, String>)`.

#### setInputPDF

    public void setInputPDF(PDDocument inputPDF)

Sets the PDF to be overlaid.

Parameters:
  `inputPDF` - the PDF to be overlaid. This will be the object that is returned by `overlay(Map<Integer, String>)`.

#### getInputFile

    public String getInputFile()

Returns the input file.

Returns:
  the input file

#### setDefaultOverlayFile

    public void setDefaultOverlayFile(String defaultOverlayFile)

Sets the default overlay file.

Parameters:
  `defaultOverlayFile` - the default overlay file

#### setDefaultOverlayPDF

    public void setDefaultOverlayPDF(PDDocument defaultOverlayPDF)

Sets the default overlay PDF. If you created the overlay document with subsetted fonts, you need to save it first so that the subsetting gets done.

Parameters:
  `defaultOverlayPDF` - the default overlay PDF

#### getDefaultOverlayFile

    public String getDefaultOverlayFile()

Returns the default overlay file.

Returns:
  the default overlay file

#### setFirstPageOverlayFile

    public void setFirstPageOverlayFile(String firstPageOverlayFile)

Sets the first page overlay file.

Parameters:
  `firstPageOverlayFile` - the first page overlay file

#### setFirstPageOverlayPDF

    public void setFirstPageOverlayPDF(PDDocument firstPageOverlayPDF)

Sets the first page overlay PDF. If you created the overlay document with subsetted fonts, you need to save it first so that the subsetting gets done.

Parameters:
  `firstPageOverlayPDF` - the first page overlay PDF

#### setLastPageOverlayFile

    public void setLastPageOverlayFile(String lastPageOverlayFile)

Sets the last page overlay file.

Parameters:
  `lastPageOverlayFile` - the last page overlay file

#### setLastPageOverlayPDF

    public void setLastPageOverlayPDF(PDDocument lastPageOverlayPDF)

Sets the last page overlay PDF. If you created the overlay document with subsetted fonts, you need to save it first so that the subsetting gets done.

Parameters:
  `lastPageOverlayPDF` - the last page overlay PDF

#### setAllPagesOverlayFile

    public void setAllPagesOverlayFile(String allPagesOverlayFile)

Sets the all pages overlay file.

Parameters:
  `allPagesOverlayFile` - the all pages overlay file

#### setAllPagesOverlayPDF

    public void setAllPagesOverlayPDF(PDDocument allPagesOverlayPDF)

Sets the all pages overlay PDF. If you created the overlay document with subsetted fonts, you need to save it first so that the subsetting gets done.

Parameters:
  `allPagesOverlayPDF` - the all pages overlay PDF. This should not be a PDDocument that you created on the fly, it should be saved first, if it contains any fonts that are subset.

#### setOddPageOverlayFile

    public void setOddPageOverlayFile(String oddPageOverlayFile)

Sets the odd page overlay file.

Parameters:
  `oddPageOverlayFile` - the odd page overlay file

#### setOddPageOverlayPDF

    public void setOddPageOverlayPDF(PDDocument oddPageOverlayPDF)

Sets the odd page overlay PDF. If you created the overlay document with subsetted fonts, you need to save it first so that the subsetting gets done.

Parameters:
  `oddPageOverlayPDF` - the odd page overlay PDF

#### setEvenPageOverlayFile

    public void setEvenPageOverlayFile(String evenPageOverlayFile)

Sets the even page overlay file.

Parameters:
  `evenPageOverlayFile` - the even page overlay file

#### setEvenPageOverlayPDF

    public void setEvenPageOverlayPDF(PDDocument evenPageOverlayPDF)

Sets the even page overlay PDF. If you created the overlay document with subsetted fonts, you need to save it first so that the subsetting gets done.

Parameters:
  `evenPageOverlayPDF` - the even page overlay PDF

#### setAdjustRotation

    public void setAdjustRotation(boolean adjustRotation)

This sets whether the overlay is to be rotated according to the rotation of the pages of the source document. This may look weird if the content of the document is also rotated. So it's really a users decision to activate this option if the overlay appears rotated in some pages of the result document and this isn't wanted.

This setting will only apply to usage of the default overlay, because it is assumed that when using specific overlays for specific pages, it is known in advance what kind of input there is.

Parameters:
  `adjustRotation` - if true, the overlay will always look the same when the result file is displayed on the screen. If false (default) then it will be rotated if the page is rotated.