文档中的水印以机密、草稿等文本标识文档的状态,并使原始文档难以复制。水印可以是基于图像或文本的,并且经常在 PDF 文档中使用。您可能需要在 C++ 应用程序中为 PDF 文档添加水印。为此,本文将教您如何使用 C++ 在 PDF 文档中添加和删除文本和图像水印。
用于插入和删除文本/图像水印的 C++ API
Aspose.PDF for C++ 是一个 C++ 库,允许您创建、阅读和更新 PDF 文档。此外,API 支持在 PDF 文档中插入和删除图像/文本水印。您可以通过 NuGet 安装 API,也可以直接从 下载 部分下载。
PM> Install-Package Aspose.PDF.Cpp
使用 C++ 在 PDF 文件中插入文本水印
使用 Aspose.PDF for C++ API,您可以控制文本水印的字体样式、文本、颜色、角度、不透明度等。以下是在 PDF 文件中添加文本水印的步骤。
- 使用 Document 类加载 PDF 文件。
- 使用水印文本创建 TextStamp 类的实例。
- 设置水印的位置和其他属性。
- 使用 Document->getPages()->idxget(1)->AddStamp(System::SharedPtr) 将水印添加到页面邮票) 方法。
- 使用 Document->Save(System::String outputFileName, SaveFormat format) 方法保存 PDF 文件。
以下示例代码展示了如何使用 C++ 在 PDF 文件中添加文本水印。
// 打开源 PDF 文档
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");
// 创建 TextStamp 类的实例
System::SharedPtr<TextStamp> textStamp = MakeObject<TextStamp>(u"CONFIDENTIAL");
// 设置水印的位置
textStamp->set_XIndent(70);
textStamp->set_YIndent(300);
// 设置文本属性
textStamp->get_TextState()->set_Font(FontRepository::FindFont(u"Arial"));
textStamp->get_TextState()->set_FontSize(72.0F);
textStamp->get_TextState()->set_ForegroundColor(Aspose::Pdf::Color::get_Red());
textStamp->set_Opacity(0.4);
textStamp->set_RotateAngle(45);
textStamp->setStampId(123456);
// 在 PDF 页面添加水印
pdfDocument->get_Pages()->idx_get(1)->AddStamp(textStamp);
// 保存 PDF 文件
pdfDocument->Save(u"OutputDirectory\\Text-Watermark-Out.pdf", SaveFormat::Pdf);
使用 C++ 在 PDF 文件中插入图像水印
图像水印通常用于通过使用徽标或任何其他可识别图像来显示文档的所有权。您可以使用以下步骤将图像水印添加到 PDF 文件。
- 使用 Document 类加载 PDF 文件。
- 使用水印图像创建 ImageStamp 类的实例。
- 设置水印的位置和其他属性。
- 使用 Document->getPages()->idxget(1)->AddStamp(System::SharedPtr) 将水印添加到页面邮票) 方法。
- 使用 Document->Save(System::String outputFileName, SaveFormat format) 方法保存 PDF 文件。
以下示例代码演示了如何使用 C++ 在 PDF 文件中添加图像水印。
// 打开源 PDF 文档
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");
// 创建 ImageStamp 类的实例
System::SharedPtr<ImageStamp> imageStamp = MakeObject<ImageStamp>(u"SourceDirectory\\aspose.png");
// 设置水印的位置
imageStamp->set_XIndent(150);
imageStamp->set_YIndent(350);
// 设置其他属性
imageStamp->set_Height(100);
imageStamp->set_Width(300);
imageStamp->set_RotateAngle(45);
imageStamp->set_Opacity(0.4);
imageStamp->setStampId(12345678);
// 在 PDF 页面添加水印
pdfDocument->get_Pages()->idx_get(1)->AddStamp(imageStamp);
// 保存 PDF 文件
pdfDocument->Save(u"OutputDirectory\\Image-Watermark-Out.pdf", SaveFormat::Pdf);
使用 C++ 从 PDF 文件中删除文本或图像水印
在某些情况下,您可能需要从 PDF 文档中删除水印。在前面的示例中,我们为文本和图像水印定义了 id。我们将使用这些 id 从 PDF 文档中删除水印。以下是从 PDF 文件中删除水印的步骤。
- 创建 PdfContentEditor 类的实例。
- 使用 PdfContentEditor->BindPdf(System::String inputFile) 方法加载 PDF 文档。
- 使用 PdfContentEditor->DeleteStampById(int32t stampId) 方法删除水印。
- 使用 Document->Save(System::String outputFileName, SaveFormat format) 方法保存 PDF 文件。
以下示例代码展示了如何使用 C++ 从 PDF 文件中删除文本和图像水印。
// 创建 PdfContentEditor 类的实例
System::SharedPtr<PdfContentEditor> contentEditor = MakeObject<PdfContentEditor>();
// 打开包含水印的 PDF 文件
contentEditor->BindPdf(u"SourceDirectory\\SampleImageWatermark.pdf");
// 按id删除水印
contentEditor->DeleteStampById(12345678);
// 保存 PDF 文件
pdfDocument->Save(u"OutputDirectory\\Remove-Watermark-Out.pdf", SaveFormat::Pdf);
获得免费许可证
您可以通过请求 免费的临时许可证 来试用该 API,而不受评估限制。
结论
在本文中,您学习了如何使用 C++ 处理 PDF 文件中的水印。具体来说,您已经学习了如何使用 Aspose.PDF for C++ API 从 PDF 文档中添加和删除图像和文本水印。 API 提供了许多附加功能,用于自动执行与 PDF 相关的任务。您可以通过访问 官方文档 来详细探索 API。如有任何问题,请随时通过我们的 免费支持论坛 与我们联系。