C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > C++ PDF添加图片水印

C++实现添加图片水印到PDF文档

作者:E-iceblue

水印是显示在文档内容后面的淡色文字或图片,可以用于指示文档的状态(保密、草稿等),本文主要为大家介绍了如何使用 Spire.PDF for C++ 在 PDF 文档中添加图片水印,需要的可以参考下

水印是显示在文档内容后面的淡色文字或图片,可以用于指示文档的状态(保密、草稿等),也可以含蓄地展示公司徽标。水印有助于提示文档的来源,从而避免未经允许的复制和转发。本文将介绍如何使用 Spire.PDF for C++ 在 PDF 文档中添加图片水印

安装 Spire.PDF for C++

有两种方法可以将 Spire.PDF for C++ 集成到您的应用程序中。一种方法是通过 NuGet 安装它,另一种方法是从我们的网站下载包并将库复制到您的程序中。通过 NuGet 安装更简单,更推荐使用。您可以通过访问以下链接找到更多详细信息。

如何将 Spire. PDF for C++ 集成到 C++ 程序中

添加单一图片水印到 PDF 文档

Sprie.PDF for C++ 提供的 PdfPageBase->GetCanvas()->DrawImage() 方法可以在 PDF 页面的任意位置绘制图片,而通过对图片的透明度进行调节可以实现淡色效果,使其不覆盖文档内容。添加单一图片水印的操作步骤如下:

#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 类表示平铺画笔,可以生成重复平铺图案来填充区域。以下是插入平铺水印的详细操作步骤:

#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;
}

到此这篇关于C++实现添加图片水印到PDF文档的文章就介绍到这了,更多相关C++ PDF添加图片水印内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文