Watermark
A watermark is a visible overlay embedded in a PDF document, such as text, a logo, or a copyright notice. Depending on the implementation, a watermark may exist as page content or as a PDF annotation. Watermarks help protect an author's work from unauthorized use. Foxit PDF SDK provides APIs to create, insert, and remove watermarks, supporting management as page content or annotation objects.
Create a text watermark and insert it on the first page of a PDF document
c++
#include "include/common/fs_common.h"
#include "include/pdf/fs_pdfdoc.h"
#include "include/pdf/fs_pdfpage.h"
#include "include/pdf/fs_watermark.h"
using namespace foxit;
using namespace foxit::common;
using foxit::common::Library;
using namespace pdf;
...
// Assuming PDFDoc doc has been loaded.
WatermarkSettings settings;
settings.flags = WatermarkSettings::e_FlagASPageContents | WatermarkSettings::e_FlagOnTop;
settings.offset_x = 0;
settings.offset_y = 0;
settings.opacity = 90;
settings.position = common::e_PosTopRight;
settings.rotation = -45.f;
settings.scale_x = 1.f;
settings.scale_y = 1.f;
WatermarkTextProperties text_properties;
text_properties.alignment = CommonDefines::e_AlignmentCenter;
text_properties.color = 0xF68C21;
text_properties.font_style = WatermarkTextProperties::e_FontStyleNormal;
text_properties.line_space = 1;
text_properties.font_size = 12.f;
text_properties.font = Font(Font::e_StdIDTimesB);
Watermark watermark(doc, L"Foxit PDF SDK\nwww.foxitsoftware.com", text_properties, settings);
watermark.InsertToPage(doc.GetPage(0));
// Save document to file
...C
#include "include/fs_basictypes_c.h"
#include "include/fs_common_c.h"
#include "include/fs_pdfdoc_c.h"
#include "include/fs_pdfpage_c.h"
#include "include/fs_watermark_c.h"
...
// Assuming FS_PDFDOC_HANDLE doc has been loaded.
FSWatermarkSettings settings;
settings.flags = e_FSWatermarkFlagsFlagASPageContents | e_FSWatermarkFlagsFlagOnTop;
settings.offset_x = 0;
settings.offset_y = 0;
settings.opacity = 90;
settings.position = e_FSPosTopRight;
settings.rotation = -45.f;
settings.scale_x = 1.f;
settings.scale_y = 1.f;
FSWatermarkTextProperties text_properties;
text_properties.alignment = e_FSAlignmentCenter;
text_properties.color = 0xF68C21;
text_properties.font_style = e_FSFontStyleFontStyleNormal;
text_properties.line_space = 1;
text_properties.font_size = 12.f;
FS_FONT_HANDLE font;
FSDK_Font_Create0(e_FSStdIDTimesB, &font);
text_properties.font = font;
FS_WATERMARK_HANDLE watermark;
FSDK_Watermark_Create(doc, L"Foxit PDF SDK\nwww.foxitsoftware.com", text_properties, settings, &watermark);
FS_BOOL return_value;
FS_PDFPAGE_HANDLE page;
FSDK_PDFDoc_GetPage(doc, 0, &page);
FSDK_Watermark_InsertToPage(watermark, page, &return_value);
// Save document to file
...java
import com.foxit.sdk.common.Font;
import com.foxit.sdk.pdf.*;
import com.foxit.sdk.pdf.Watermark;
import com.foxit.sdk.pdf.WatermarkSettings;
import com.foxit.sdk.pdf.WatermarkTextProperties;
import com.foxit.sdk.common.Constants;
import static com.foxit.sdk.common.Constants.e_AlignmentCenter;
import static com.foxit.sdk.common.Font.e_StdIDTimesB;
import static com.foxit.sdk.pdf.WatermarkSettings.*;
import static com.foxit.sdk.pdf.WatermarkTextProperties.e_FontStyleNormal;
...
// Assuming PDFDoc doc has been loaded.
WatermarkSettings settings = new WatermarkSettings();
settings.setFlags(e_FlagASPageContents | e_FlagOnTop);
settings.setOffset_x(0);
settings.setOffset_y(0);
settings.setOpacity(90);
settings.setPosition(Constants.e_PosTopRight);
settings.setRotation(-45.f);
settings.setScale_x(1.f);
settings.setScale_y(1.f);
WatermarkTextProperties text_properties = new WatermarkTextProperties();
text_properties.setAlignment(e_AlignmentCenter);
text_properties.setColor(0xF68C21);
text_properties.setFont_style(e_FontStyleNormal);
text_properties.setLine_space(1);
text_properties.setFont_size(12.f);
text_properties.setFont(new Font(e_StdIDTimesB));
Watermark watermark = new Watermark(doc, "Foxit PDF SDK\nwww.foxitsoftware.com", text_properties, settings);
watermark.insertToPage(page);
// Save document to file
...py
import sys
import site
if sys.version_info.major == 2:
_PYTHON2_ = True
else:
_PYTHON2_ = False
if _PYTHON2_:
#replace with the python2 lib path
site.addsitedir('../../../')
from FoxitPDFSDKPython2 import *
else:
from FoxitPDFSDKPython3 import *
...
# Assuming PDFDoc doc has been loaded.
settings = WatermarkSettings()
settings.flags = WatermarkSettings.e_FlagASPageContents | WatermarkSettings.e_FlagOnTop
settings.offset_x = 0
settings.offset_y = 0
settings.opacity = 90
settings.position = e_PosTopRight
settings.rotation = -45.0
settings.scale_x = 1.0
settings.scale_y = 1.0
text_properties = WatermarkTextProperties()
text_properties.alignment = e_AlignmentCenter
text_properties.color = 0xF68C21
text_properties.font_style = WatermarkTextProperties.e_FontStyleNormal
text_properties.line_space = 1
text_properties.font_size = 12.0
text_properties.font = Font(Font.e_StdIDTimesB)
watermark = Watermark(doc, "Foxit PDF SDK\nwww.foxitsoftware.com", text_properties, settings)
watermark.InsertToPage(doc.GetPage(0))
# Save document to file
...objc
#include "FSPDFObjC.h"
...
// Assuming FSPDFDoc doc has been loaded.
FSWatermarkSettings* settings = [FSWatermarkSettings new];
settings.flags = FSWatermarkSettingsFlagASPageContents | FSWatermarkSettingsFlagOnTop;
settings.offset_x = 0;
settings.offset_y = 0;
settings.opacity = 90;
settings.position = FSPosTopRight;
settings.rotation = -45.f;
settings.scale_x = 1.f;
settings.scale_y = 1.f;
FSWatermarkTextProperties* text_properties = [FSWatermarkTextProperties new];
text_properties.alignment = FSAlignmentCenter;
text_properties.color = 0xF68C21;
text_properties.font_style = FSWatermarkTextPropertiesFontStyleNormal;
text_properties.line_space = 1;
text_properties.font_size = 12.f;
FSFont* new_font = [[FSFont alloc] initWithFont_id:FSFontStdIDTimesB];
text_properties.font = new_font;
FSWatermark* watermark = [[FSWatermark alloc] initWithDocument:doc text:@"Foxit PDF SDK\nwww.foxitsoftware.com" properties:text_properties settings:settings];
[watermark insertToPage:page];
// Save document to file
...js
const FSDK = require("@fuxinsoft/foxit-pdf-sdk-node");
...
// Assuming PDFDoc doc has been loaded.
let settings = new FSDK.WatermarkSettings();
settings.flags = FSDK.WatermarkSettings.e_FlagASPageContents | FSDK.WatermarkSettings.e_FlagOnTop;
settings.offset_x = 0;
settings.offset_y = 0;
settings.opacity = 90;
settings.position = FSDK.e_PosTopRight;
settings.rotation = -45.0;
settings.scale_x = 1.0;
settings.scale_y = 1.0;
let text_properties = new FSDK.WatermarkTextProperties();
text_properties.alignment = FSDK.e_AlignmentCenter;
text_properties.color = 0xF68C21;
text_properties.font_style = FSDK.WatermarkTextProperties.e_FontStyleNormal;
text_properties.line_space = 1;
text_properties.font_size = 12.0;
text_properties.font = new FSDK.Font(FSDK.Font.e_StdIDTimesB);
let watermark = new FSDK.Watermark(doc, "Foxit PDF SDK\nwww.foxitsoftware.com", text_properties, settings);
watermark.InsertToPage(doc.GetPage(0));
// Save document to file.
...csharp
using foxit.common;
using foxit.pdf;
...
// Assuming PDFDoc doc has been loaded.
WatermarkSettings settings = new WatermarkSettings();
settings.offset_x = 0;
settings.offset_y = 0;
settings.opacity = 90;
settings.position = Position.e_PosTopRight;
settings.rotation = -45.0f;
settings.scale_x = 1.0f;
settings.scale_y = 1.0f;
WatermarkTextProperties text_properties = new WatermarkTextProperties();
text_properties.alignment = Alignment.e_AlignmentCenter;
text_properties.color = 0xF68C21;
text_properties.font_style = WatermarkTextProperties.FontStyle.e_FontStyleNormal;
text_properties.line_space = 1;
text_properties.font_size = 12.0f;
text_properties.font = font;
Watermark watermark = new Watermark(doc, "Foxit PDF SDK\nwww.foxitsoftware.com", text_properties, settings);
watermark.InsertToPage(doc.GetPage(0));
// Save document to file
...go
import (
. “foxit.com/fsdk”
)
...
# Assuming PDFDoc doc has been loaded.
settings := NewWatermarkSettings()
settings.SetFlags(WatermarkSettingsE_FlagASPageContents | WatermarkSettingsE_FlagOnTop)
settings.SetOffset_x(0)
settings.SetOffset_y(0)
settings.SetOpacity(90)
settings.SetPosition(E_PosTopRight)
settings.SetRotation(-45.0)
settings.SetScale_x(1.0)
settings.SetScale_y(1.0)
text_properties := NewWatermarkTextProperties()
text_properties.SetAlignment(E_AlignmentCenter)
text_properties.SetColor(0xF68C21)
text_properties.SetFont_style(WatermarkTextPropertiesE_FontStyleNormal)
text_properties.SetLine_space(1)
text_properties.SetFont_size(12.0)
text_properties.SetFont(NewFont(FontE_StdIDTimesB))
watermark := NewWatermark(doc, "Foxit PDF SDK\nwww.foxitsoftware.com", text_properties, settings)
watermark.InsertToPage(doc.GetPage(0))
# Save document to file
...Create an image watermark and insert it on the first page of a PDF document
c++
#include "include/common/fs_common.h"
#include "include/pdf/fs_pdfdoc.h"
#include "include/pdf/fs_pdfpage.h"
#include "include/pdf/fs_watermark.h"
using namespace foxit;
using namespace foxit::common;
using foxit::common::Library;
using namespace pdf;
...
// Assuming PDFDoc doc has been loaded.
WatermarkSettings settings;
settings.flags = WatermarkSettings::e_FlagASPageContents | WatermarkSettings::e_FlagOnTop;
settings.offset_x = 0.f;
settings.offset_y = 0.f;
settings.opacity = 20;
settings.position = common::e_PosCenter;
settings.rotation = 0.0f;
Image image(image_file);
Bitmap bitmap = image.GetFrameBitmap(0);
settings.scale_x = page.GetWidth() * 0.618f / bitmap.GetWidth();
settings.scale_y = settings.scale_x;
Watermark watermark(doc, image, 0, settings);
watermark.InsertToPage(doc.GetPage(0));
// Save document to file.
...C
#include "include/fs_basictypes_c.h"
#include "include/fs_common_c.h"
#include "include/fs_pdfdoc_c.h"
#include "include/fs_pdfpage_c.h"
#include "include/fs_watermark_c.h"
...
// Assuming FS_PDFDOC_HANDLE doc has been loaded.
FSWatermarkSettings settings;
settings.flags = e_FSWatermarkFlagsFlagASPageContents | e_FSWatermarkFlagsFlagOnTop;
settings.offset_x = 0.f;
settings.offset_y = 0.f;
settings.opacity = 20;
settings.position = e_FSPosCenter;
settings.rotation = 0.0f;
FS_IMAGE_HANDLE image;
FSDK_Image_Create0(image_file, &image);
FS_BITMAP_HANDLE bitmap;
FSDK_Image_GetFrameBitmap(image, 0, &bitmap);
float Width;
FSDK_PDFPage_GetWidth(page, &Width);
int iWidth;
FSDK_Bitmap_GetWidth(bitmap, &iWidth);
settings.scale_x = Width * 0.618f / iWidth;
settings.scale_y = settings.scale_x;
FS_WATERMARK_HANDLE watermark;
FSDK_Watermark_Create1(doc, image, 0, settings, &watermark);
FS_PDFPAGE_HANDLE page;
FSDK_PDFDoc_GetPage(doc, 0, &page);
FS_BOOL return_value;
FSDK_Watermark_InsertToPage(watermark, page, &return_value);
// Save document to file.
...java
import com.foxit.sdk.common.Bitmap;
import com.foxit.sdk.common.Image;
import com.foxit.sdk.pdf.*;
import com.foxit.sdk.pdf.Watermark;
import com.foxit.sdk.pdf.WatermarkSettings;
import com.foxit.sdk.common.Constants;
import static com.foxit.sdk.common.Constants.e_AlignmentCenter;
import static com.foxit.sdk.common.Font.e_StdIDTimesB;
import static com.foxit.sdk.pdf.WatermarkSettings.*;
import static com.foxit.sdk.pdf.WatermarkTextProperties.e_FontStyleNormal;
...
// Assuming PDFDoc doc has been loaded.
WatermarkSettings settings = new WatermarkSettings();
settings.setFlags(e_FlagASPageContents | e_FlagOnTop);
settings.setOffset_x(0.f);
settings.setOffset_y(0.f);
settings.setOpacity(20);
settings.setPosition(Constants.e_PosCenter);
settings.setRotation(0.0f);
Image image = new Image(image_file);
Bitmap bitmap = image.getFrameBitmap(0);
settings.setScale_x(page.getWidth() * 0.618f / bitmap.getWidth());
settings.setScale_y(settings.getScale_x());
Watermark watermark = new Watermark(doc, image, 0, settings);
watermark.insertToPage(page);
// Save document to file.
...py
import sys
import site
if sys.version_info.major == 2:
_PYTHON2_ = True
else:
_PYTHON2_ = False
if _PYTHON2_:
#replace with the python2 lib path
site.addsitedir('../../../')
from FoxitPDFSDKPython2 import *
else:
from FoxitPDFSDKPython3 import *
...
# Assuming PDFDoc doc has been loaded.
settings = WatermarkSettings()
settings.flags = WatermarkSettings.e_FlagASPageContents | WatermarkSettings.e_FlagOnTop
settings.offset_x = 0.0
settings.offset_y = 0.0
settings.opacity = 20
settings.position = e_PosCenter
settings.rotation = 0.0
image = Image(image_file)
bitmap = image.GetFrameBitmap(0)
settings.scale_x = page.GetWidth() * 0.618 / bitmap.GetWidth()
settings.scale_y = settings.scale_x
watermark = Watermark(doc, image, 0, settings)
watermark.InsertToPage(doc.GetPage(0))
# Save document to file.
...objc
#include "FSPDFObjC.h"
...
// Assuming FSPDFDoc doc has been loaded.
FSWatermarkSettings* settings = [FSWatermarkSettings new];
settings.flags = FSWatermarkSettingsFlagASPageContents | FSWatermarkSettingsFlagOnTop;
settings.offset_x = 0.f;
settings.offset_y = 0.f;
settings.opacity = 20;
settings.position = FSPosCenter;
settings.rotation = 0.0f;
FSImage* image = [[FSImage alloc] initWithPath:image_file_path];
FSBitmap* bitmap = [image getFrameBitmap:0];
settings.scale_x = [page getWidth] * 0.618f / [bitmap getWidth];
settings.scale_y = settings.scale_x;
FSWatermark* watermark = [[FSWatermark alloc] initWithDocument:doc image:image frame_index:0 settings:settings];
[watermark insertToPage:page];
// Save document to file.
...js
const FSDK = require("@fuxinsoft/foxit-pdf-sdk-node");
...
// Assuming PDFDoc doc has been loaded.
let settings = new FSDK.WatermarkSettings();
settings.flags = FSDK.WatermarkSettings.e_FlagASPageContents | FSDK.WatermarkSettings.e_FlagOnTop;
settings.offset_x = 0.0;
settings.offset_y = 0.0;
settings.opacity = 20;
settings.position = FSDK.e_PosCenter;
settings.rotation = 0.0;
let image = new FSDK.Image(image_file);
let bitmap = image.GetFrameBitmap(0);
settings.scale_x = page.GetWidth() * 0.618 / bitmap.GetWidth();
settings.scale_y = settings.scale_x;
let watermark = new FSDK.Watermark(doc, image, 0, settings);
watermark.InsertToPage(doc.GetPage(0));
// Save document to file.
...csharp
using foxit.common;
using foxit.pdf;
...
// Assuming PDFDoc doc has been loaded.
// Assuming PDFPage page has been loaded and parsed.
WatermarkSettings settings = new WatermarkSettings();
settings.flags = (int)(WatermarkSettings.Flags.e_FlagASPageContents | WatermarkSettings.Flags.e_FlagOnTop);
settings.offset_x = 0.0f;
settings.offset_y = 0.0f;
settings.opacity = 20;
settings.position = Position.e_PosCenter;
settings.rotation = 0.0f;
Image image = new Image(image_file);
foxit.common.Bitmap bitmap = image.GetFrameBitmap(0);
settings.scale_x = page.GetWidth() * 0.618f / bitmap.Width;
settings.scale_y = settings.scale_x;
Watermark watermark = new Watermark(doc, image, 0, settings);
watermark.InsertToPage(doc.GetPage(0));
// Save document to file.
...go
import (
. “foxit.com/fsdk”
)
...
# Assuming PDFDoc doc has been loaded.
settings := NewWatermarkSettings()
settings.flags = WatermarkSettingsE_FlagASPageContents | WatermarkSettingsE_FlagOnTop
settings.SetOffset_x(0.0)
settings.SetOffset_y(0.0)
settings.SetOpacity(20)
settings.SetPosition(E_PosCenter)
settings.SetRotation(0.0)
image := NewImage(image_file)
bitmap := image.GetFrameBitmap(0)
settings.SetScale_x(page.GetWidth() * 0.618 / bitmap.GetWidth())
settings.SetScale_y(settings.GetScale_x())
watermark := NewWatermark(doc, image, 0, settings)
watermark.InsertToPage(doc.GetPage(0))
# Save document to file.
...Remove all watermarks from a PDF page
c++
#include "include/common/fs_common.h"
#include "include/pdf/fs_pdfdoc.h"
#include "include/pdf/fs_pdfpage.h"
using namespace foxit;
using namespace foxit::common;
using foxit::common::Library;
using namespace pdf;
...
// Assuming PDFPage page has been loaded and parsed.
...
page.RemoveAllWatermarks();
...
// Save document to file
...C
#include "include/fs_basictypes_c.h"
#include "include/fs_common_c.h"
#include "include/fs_pdfdoc_c.h"
#include "include/fs_pdfpage_c.h"
...
// Assuming FS_PDFPAGE_HANDLE page has been loaded and parsed.
...
FS_BOOL isRemove;
FSDK_PDFPage_RemoveAllWatermarks(page, &isRemove);
...
// Save document to file
...java
import com.foxit.sdk.pdf.PDFPage;
...
// Assuming PDFPage page has been loaded and parsed.
...
page.removeAllWatermarks();
...
// Save document to file
...py
import sys
import site
if sys.version_info.major == 2:
_PYTHON2_ = True
else:
_PYTHON2_ = False
if _PYTHON2_:
#replace with the python2 lib path
site.addsitedir('../../../')
from FoxitPDFSDKPython2 import *
else:
from FoxitPDFSDKPython3 import *
...
# Assuming PDFPage page has been loaded and parsed.
...
page.RemoveAllWatermarks()
...
# Save document to fileobjc
#include "FSPDFObjC.h"
...
// Assuming FSPDFPage page has been loaded and parsed.
...
[page removeAllWatermarks];
// Save document to file
...js
const FSDK = require("@fuxinsoft/foxit-pdf-sdk-node");
...
// Assuming PDFPage page has been loaded and parsed.
...
page.RemoveAllWatermarks()
...
// Save document to file.csharp
using foxit.common;
using foxit.pdf;
...
// Assuming PDFPage page has been loaded and parsed.
...
page.RemoveAllWatermarks();
...
// Save document to file
...go
import (
. “foxit.com/fsdk”
)
...
# Assuming PDFPage page has been loaded and parsed.
...
page.RemoveAllWatermarks()
...
# Save document to file