水印是显示在文档内容后面的淡色文字或图片,可以用于指示文档的状态(保密、草稿等),也可以含蓄地展示公司徽标。水印有助于提示文档的来源,从而避免未经允许的复制和转发。本文将介绍如何使用 spire.pdf for c 在 pdf 文档中添加图片水印。
安装 spire.pdf for c
有两种方法可以将 spire.pdf for c 集成到您的应用程序中。一种方法是通过 安装它,另一种方法是从我们的网站下载包并将库复制到您的程序中。通过 nuget 安装更简单,更推荐使用。您可以通过访问以下链接找到更多详细信息。
如何将 spire. pdf for c 集成到 c 程序中
添加单一图片水印到 pdf 文档
sprie.pdf for c 提供的 pdfpagebase->getcanvas()->drawimage() 方法可以在 pdf 页面的任意位置绘制图片,而通过对图片的透明度进行调节可以实现淡色效果,使其不覆盖文档内容。添加单一图片水印的操作步骤如下:
- 创建 pdfdocument 的对象。
- 使用 pdfdocument->loadfromfile() 方法载入 pdf 文件。
- 使用 pdfimage::fromfile() 方法载入图片。
- 循环遍历文档页面以绘制水印。
- 使用 pdfdocument->getpages()->getitem() 方法获取指定页面。
- 使用 pdfpagebase->getcanvas()->settransparency() 方法设置透明度。
- 使用 pdfpagebase->getcanvas()->drawimage() 方法将图片绘制在页面上。
- 使用 pdfdocument->savetofile() 方法保存文档。
- c
#include "spire.pdf.o.h"
using namespace spire::pdf;
int main()
{
//创建pdfdocument的对象
pdfdocument* document = new pdfdocument();
//载入pdf文件
document->loadfromfile(l"c:/我们之间的距离.pdf");
//载入图片
pdfimage* img = pdfimage::fromfile(l"c:/logo.png");
//获取图片的高度和宽度
int imagewidth = img->getwidth();
int imageheight = img->getheight();
for (int i = 0; i < document->getpages()->getcount(); i )
{
//获取指定页面
pdfpagebase* page = document->getpages()->getitem(i);
//获取页面的高度和宽度
float pagewidth = (float)(page->getactualsize()->getwidth());
float pageheight = (float)(page->getactualsize()->getheight());
//设置透明度
page->getcanvas()->settransparency(0.3f);
//将图片绘制在页面中央
page->getcanvas()->drawimage(img, pagewidth / 2 - imagewidth / 2, pageheight / 2 - imageheight / 2, imagewidth, imageheight);
}
//保存文档
document->savetofile(l"output/单一图片水印.pdf");
document->close();
delete document;
}
添加平铺图片水印到 pdf 文档
pdftilingbrush 类表示平铺画笔,可以生成重复平铺图案来填充区域。以下是插入平铺水印的详细操作步骤:
- 创建一个自定义方法 inserttiledimagetwatermark(pdfpagebase* page, pdfimage* image, int rownum, int columnnum) 来添加平铺水印到 pdf 页面。可通过参数 rownum 和 columnnum 来指定平铺水印的行数和列数。
- 创建 pdfdocument 的对象。
- 使用 pdfdocument->loadfromfile() 方法载入 pdf 文档。
- 遍历文档中的所有页面,并调用自定义方法 inserttiledimagewatermark() 来给每一页添加水印。
- 使用 pdfdocument->savetofile() 方法保存文档。
- c
#include "spire.pdf.o.h"
using namespace spire::pdf;
void inserttiledimagewatermark(pdfpagebase* page, pdfimage* img, int row, int column) {
//创建平铺笔刷
pdftilingbrush* brush = new pdftilingbrush(new sizef(page->getcanvas()->getsize()->getwidth() / (int)(row), page->getcanvas()->getsize()->getheight() / (int)(column)));
//设置透明度
brush->getgraphics()->settransparency(0.3);
//将图片绘制在笔刷上
brush->getgraphics()->drawimage(img, new pointf((brush->getsize()->getwidth() - img->getwidth()) / 2.f, (brush->getsize()->getheight() - img->getheight()) / 2.f));
//使用笔刷将图片绘制在页面上
page->getcanvas()->drawrectangle(brush, new rectanglef(new pointf(0, 0), page->getcanvas()->getsize()));
}
int main()
{
//创建pdfdocument的对象
pdfdocument* pdf = new pdfdocument();
//载入pdf文件
pdf->loadfromfile(l"c:/我们之间的距离.pdf");
//载入图片
pdfimage* img = pdfimage::fromfile(l"c:/logo.png");
//循环遍历文档页面以添加水印
for (int i = 0; i < pdf->getpages()->getcount(); i ) {
//获取一个页面
pdfpagebase* page = pdf->getpages()->getitem(i);
//添加水印到页面
inserttiledimagewatermark(page, img, 3, 3);
}
//保存文档
pdf->savetofile(l"output/平铺图片水印.pdf");
pdf->close();
delete pdf;
}
申请临时 license
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用javascript。获取有效期 30 天的临时许可证。