Skip to content

水印 (Watermark)

水印是一种 PDF 注释,广泛用于 PDF 文档。水印是文档上嵌入的可见叠加层,包含文本、logo 或版权声明。水印的目的是对作者工作成果的保护,防止其未经授权而被他人使用。福昕 PDF SDK 提供了允许应用程序创建、插入和删除水印的 APIs。

创建一个文本水印,并将其插入到 PDF 文档的第一页

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("@foxitsoftware/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
...

创建一个图片水印,并将其插入到 PDF 文档的第一页

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("@foxitsoftware/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.
...

从 PDF 页面中删除所有的水印

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 file
objc
#include "FSPDFObjC.h"
...

// Assuming FSPDFPage page has been loaded and parsed.
...
[page removeAllWatermarks];

// Save document to file
...
js
const FSDK = require("@foxitsoftware/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
...