Watermarks
Foxit PDF SDK for Android provides watermark APIs through the Core SDK, supporting text, image, and page watermarks as page content or annotations, plus tiled watermarks that fill the page in a grid.
Core Classes
| Class | Description |
|---|---|
Watermark | Watermark from text, Bitmap, Image, or PDFPage |
WatermarkSettings | Position, offset, scale, rotation, opacity, flags |
WatermarkTextProperties | Font, size, color, style, line spacing, alignment |
TiledWatermarkSettings | Row/column spacing, rotation, opacity, scale |
Create Watermarks
Watermark has four constructors for different sources:
java
// Text watermark
Watermark(PDFDoc document, String text, WatermarkTextProperties properties, WatermarkSettings settings)
// Bitmap watermark
Watermark(PDFDoc document, Bitmap bitmap, WatermarkSettings settings)
// Image watermark (multi-frame)
Watermark(PDFDoc document, Image image, int frame_index, WatermarkSettings settings)
// Page watermark (another PDFPage as content)
Watermark(PDFDoc document, PDFPage page, WatermarkSettings settings)Flag Constants
| Constant | Value | Description |
|---|---|---|
e_FlagASPageContents | 0x0000 | Insert as page content |
e_FlagASAnnot | 0x0001 | Insert as annotation |
e_FlagOnTop | 0x0002 | Above page content |
e_FlagNoPrint | 0x0004 | Non-printable |
e_FlagInvisible | 0x0008 | Invisible |
e_FlagShareImageStream | 0x0010 | Share image stream across pages |
e_FlagShareTextStream | 0x0020 | Share text stream across pages |
e_FlagSharePageStream | 0x0040 | Share page stream across pages |
Example: Add Text Watermark
java
PDFDoc doc = new PDFDoc(filePath);
doc.load(null);
WatermarkSettings settings = new WatermarkSettings();
settings.setPosition(CommonDefines.e_PosCenter);
settings.setOffset_x(0);
settings.setOffset_y(0);
settings.setFlags(WatermarkSettings.e_FlagASPageContents | WatermarkSettings.e_FlagOnTop);
settings.setScale_x(1.0f);
settings.setScale_y(1.0f);
settings.setRotation(-45.0f);
settings.setOpacity(50);
WatermarkTextProperties textProps = new WatermarkTextProperties();
textProps.setFont(new Font(Font.e_StdIDCourier));
textProps.setFont_size(48.0f);
textProps.setColor(0xFF0000);
textProps.setFont_style(WatermarkTextProperties.e_FontStyleNormal);
textProps.setLine_space(1);
textProps.setAlignment(CommonDefines.e_AlignmentCenter);
Watermark watermark = new Watermark(doc, "CONFIDENTIAL", textProps, settings);
watermark.insertToPage(doc.getPage(0));
doc.saveAs(outputPath, PDFDoc.e_SaveFlagNormal);Check and Remove Watermarks
java
boolean hasWatermark = page.hasWatermark();
page.removeAllWatermarks();Tiled Watermarks
Tiled watermarks repeat in a grid across the page. Add with PDFDoc.startAddTiledWatermark() from text, image file, image stream, or PDFPage.
Example: Text Tiled Watermark
java
TiledWatermarkSettings tiledSettings = new TiledWatermarkSettings();
tiledSettings.setRow_space(100.0f);
tiledSettings.setCol_space(100.0f);
tiledSettings.setRotation(-45.0f);
tiledSettings.setOpacity(30);
tiledSettings.setScale(100);
WatermarkTextProperties textProps = new WatermarkTextProperties();
textProps.setFont(new Font(Font.e_StdIDCourier));
textProps.setFont_size(24.0f);
textProps.setColor(0xCCCCCC);
Range pageRange = new Range(0, doc.getPageCount() - 1);
Progressive progressive = doc.startAddTiledWatermark(
"DRAFT", tiledSettings, textProps, pageRange, null);
int state = Progressive.e_ToBeContinued;
while (state == Progressive.e_ToBeContinued) {
state = progressive.resume();
}
doc.saveAs(outputPath, PDFDoc.e_SaveFlagNormal);API Reference
See the API Reference for full Watermark, WatermarkSettings, WatermarkTextProperties, and TiledWatermarkSettings documentation.