Skip to content

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

ClassDescription
WatermarkWatermark from text, Bitmap, Image, or PDFPage
WatermarkSettingsPosition, offset, scale, rotation, opacity, flags
WatermarkTextPropertiesFont, size, color, style, line spacing, alignment
TiledWatermarkSettingsRow/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

ConstantValueDescription
e_FlagASPageContents0x0000Insert as page content
e_FlagASAnnot0x0001Insert as annotation
e_FlagOnTop0x0002Above page content
e_FlagNoPrint0x0004Non-printable
e_FlagInvisible0x0008Invisible
e_FlagShareImageStream0x0010Share image stream across pages
e_FlagShareTextStream0x0020Share text stream across pages
e_FlagSharePageStream0x0040Share 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.