使用 C++ 处理 PDF 文件中的注释

注释是可以添加到 PDF 文档的附加对象。注释在向文档添加上下文信息等场景中会很有帮助。由于 PDF 文件不易编辑,注释提供了向文档添加附加信息的选项。在本文中,您将学习如何在 C++ 中添加、更新和删除 PDF 文件中的注释。

用于添加、更新和删除 PDF 注释的 C++ API

Aspose.PDF for C++ 是一个 C++ 库,允许您创建、阅读和更新 PDF 文档。此外,API 支持处理 PDF 文件中的注释。您可以通过 NuGet 安装 API,也可以直接从 下载 部分下载。

PM> Install-Package Aspose.PDF.Cpp

在 C++ 中为 PDF 添加注释

以下是在 C++ 中为 PDF 文件添加注释的步骤。

以下是使用 C++ 为 PDF 文件添加注释的示例代码。

// 创建 PdfContentEditor 类的实例
auto editor = MakeObject<Facades::PdfContentEditor>();

// 加载示例 PDF 文件
editor->BindPdf(u"SourceDirectory\\Sample 1.pdf");

// 创建注释
editor->CreateText(System::Drawing::Rectangle(400, 700, 100, 100), u"Title", u"Welcome to Aspose", true, u"Comment", 1);

// 保存 PDF 文件
editor->Save(u"OutputDirectory\\AnnotationSample.pdf");

下面是示例代码保存的文件的图像。

添加到 PDF 文件的注释

显示注释的图像

C++ 读取 PDF 中的注释

以下是在 C++ 中读取 PDF 文件中的注释的步骤。

以下是使用 C++ 读取 PDF 文件中的注释的示例代码。

// 创建 PdfAnnotationEditor 类的实例
System::SharedPtr<Aspose::Pdf::Facades::PdfAnnotationEditor> annotationEditor = System::MakeObject<Aspose::Pdf::Facades::PdfAnnotationEditor>();

// 加载示例 PDF 文件
annotationEditor->BindPdf(u"SourceDirectory\\Sample 1.pdf");

// 创建注释类型数组
System::ArrayPtr<Aspose::Pdf::Annotations::AnnotationType> annotationTypes = System::MakeArray<Aspose::Pdf::Annotations::AnnotationType>({ Aspose::Pdf::Annotations::AnnotationType::Text, Aspose::Pdf::Annotations::AnnotationType::Highlight });

// 提取注释
System::SharedPtr<System::Collections::Generic::IList<System::SharedPtr<Aspose::Pdf::Annotations::Annotation>>> annotationList = annotationEditor->ExtractAnnotations(1, 2, annotationTypes);

// 循环通过注解
for (System::SharedPtr<Aspose::Pdf::Annotations::Annotation> annotation : annotationList)
{
	// 显示注释内容
	Console::WriteLine(annotation->get_Contents());
}

在 C++ 中编辑 PDF 中的注释

以下是在 C++ 中编辑和更新 PDF 文件中的注释的步骤。

以下是使用 C++ 修改 PDF 文件中的注释的示例代码。

// 创建示例 PDF 文件的实例
auto document = MakeObject <Aspose::Pdf::Document>(u"SourceDirectory\\AnnotationSample.pdf");

// 创建 PdfAnnotationEditor 类的实例
System::SharedPtr<Aspose::Pdf::Facades::PdfAnnotationEditor> annotationEditor = System::MakeObject<Aspose::Pdf::Facades::PdfAnnotationEditor>();

// 加载示例 PDF 文档
annotationEditor->BindPdf(document);

// 创建注释对象
System::SharedPtr<Aspose::Pdf::Annotations::TextAnnotation> annotation = System::MakeObject<Aspose::Pdf::Annotations::TextAnnotation>(document->get_Pages()->idx_get(1), MakeObject<Aspose::Pdf::Rectangle>(200, 400, 400, 600));

// 设置修改日期
annotation->set_Modified(System::DateTime::get_Now());

// 设置标题
annotation->set_Title(u"NEW AUTHOR");

// 设置内容
annotation->set_Contents(u"NEW CONTENTS");

// 设置主题
annotation->set_Subject(u"NEW SUBJECT");

// 设置打开标志
annotation->set_Open(true);

// 修改注解
annotationEditor->ModifyAnnotations(1, 1, annotation);

// 保存文档
annotationEditor->Save(u"OutputDirectory\\AnnotationSample_out.pdf");

C++ 删除 PDF 注释

Aspose.PDF for C++ 提供以下用于从 PDF 文件中删除注释的选项。

删除特定的 PDF 注释

以下是从 PDF 文件中删除特定注释的步骤。

以下是使用 C++ 从 PDF 文件中删除特定注释的示例代码。

// 创建 PdfAnnotationEditor 类的实例
System::SharedPtr<Aspose::Pdf::Facades::PdfAnnotationEditor> annotationEditor = System::MakeObject<Aspose::Pdf::Facades::PdfAnnotationEditor>();
// 加载现有的 PDF 文档
annotationEditor->BindPdf(u"SourceDirectory\\AnnotationSample.pdf");
// 按名称删除注释
annotationEditor->DeleteAnnotation(u"4df2cf36-d961-4d83-a39e-4b0069f97e0b");
// 保存文档
annotationEditor->Save(u"OutputDirectory\\AnnotationSample_out.pdf");

按类型删除 PDF 注释

以下是从 PDF 文件中按类型删除注释的步骤。

以下是使用 C++ 从 PDF 文件中按类型删除注释的示例代码。

// 创建 PdfAnnotationEditor 类的实例
System::SharedPtr<Aspose::Pdf::Facades::PdfAnnotationEditor> annotationEditor = System::MakeObject<Aspose::Pdf::Facades::PdfAnnotationEditor>();
// 加载现有的 PDF 文档
annotationEditor->BindPdf(u"SourceDirectory\\AnnotationSample.pdf");
// 删除文本注释
annotationEditor->DeleteAnnotations(u"Text");
// 保存文档
annotationEditor->Save(u"OutputDirectory\\AnnotationSample_out.pdf");

删除所有 PDF 注释

以下是从 PDF 文件中删除所有注释的步骤。

以下是使用 C++ 从 PDF 文件中删除所有注释的示例代码。

// 创建 PdfAnnotationEditor 类的实例
System::SharedPtr<Aspose::Pdf::Facades::PdfAnnotationEditor> annotationEditor = System::MakeObject<Aspose::Pdf::Facades::PdfAnnotationEditor>();
// 加载现有的 PDF 文档
annotationEditor->BindPdf(u"SourceDirectory\\AnnotationSample.pdf");
// 删除所有注释
annotationEditor->DeleteAnnotations();
// 保存文档
annotationEditor->Save(u"OutputDirectory\\AnnotationSample_out.pdf");

用于添加/更新/删除 PDF 注释的 C++ API - 获得免费许可证

您可以通过请求 免费临时许可证 来试用 Aspose.PDF for C++,而不受评估限制。

结论

在本文中,您学习了如何使用 C++ 处理 PDF 文件中的注释。具体来说,您已经了解了如何在 C++ 中读取、添加、编辑和删除 PDF 中的注释。此外,您还学习了如何使用 Aspose.PDF for C++ 删除特定注释、按类型注释或所有注释。该 API 提供了一系列用于处理 PDF 文件的附加功能。您可以使用 官方文档 详细探索 API。如有任何问题,请随时通过我们的 免费支持论坛 与我们联系。

也可以看看