导入和导出注释到XFDF格式使用Aspose.PDF for C++
XFDF是一种与PDF阅读器兼容的文件格式。XFDF文件使用XML格式存储数据,如表单编码和注释,这些数据可以保存并导入/导出到PDF并查看。
XFDF可以用于更多不同的任务,但在我们的情况下,它可以用于向其他计算机或服务器等发送或接收表单数据或注释,或者用于存档表单数据或注释。
Aspose.PDF for C++ 是一个功能丰富的组件,用于编辑PDF文档。 As we know XFDF is an important aspect of PDF forms manipulation, Aspose.Pdf.Facades namespace in Aspose.PDF for C++ has considered this very well, and have provided methods to import and export annotations data to XFDF files.
我们知道,XFDF 是 PDF 表单操作的重要方面,Aspose.Pdf.Facades 命名空间在 Aspose.PDF for C++ 中对此进行了很好的考虑,并提供了将注释数据导入和导出到 XFDF 文件的方法。
PDFAnnotationEditor class contains two methods to work with import and export of annotations to XFDF file.
PDFAnnotationEditor 类包含两个方法,用于处理注释到 XFDF 文件的导入和导出。 ExportAnnotationsXfdf 方法提供了将注释从 PDF 文档导出到 XFDF 文件的功能,而 ImportAnnotationFromXfdf 方法允许您从现有的 XFDF 文件中导入注释。为了导入或导出注释,我们需要指定注释类型。我们可以以枚举的形式指定这些类型,然后将此枚举作为参数传递给这些方法中的任何一个。
以下代码片段向您展示了如何将注释导出到 XFDF 文件:
using namespace System;
using namespace Aspose::Pdf;
using namespace Aspose::Pdf::Annotations;
using namespace Aspose::Pdf::Facades;
void AnnotationImportExport::ExportAnnotationXFDF() {
String _dataDir("C:\\Samples\\");
// Create PdfAnnotationEditor object
auto annotationEditor = MakeObject<PdfAnnotationEditor>();
// Bind PDF document to the Annotation Editor
annotationEditor->BindPdf(_dataDir + u"AnnotationDemo1.pdf");
// Export annotations
auto fileStream = System::IO::File::OpenWrite(_dataDir +u"exportannotations.xfdf");
auto annotType = MakeArray<AnnotationType>({ AnnotationType::Line, AnnotationType::Square });
annotationEditor->ExportAnnotationsXfdf(fileStream, 1, 1, annotType);
fileStream->Flush();
fileStream->Close();
}
下一个代码片段描述了如何将注释导入到XFDF文件中:
void AnnotationImportExport::ImportAnnotationXFDF() {
// 创建PdfAnnotationEditor对象
auto annotationEditor = MakeObject<PdfAnnotationEditor>();
// 创建一个新的PDF文档
auto document = new Document();
document->get_Pages()->Add();
annotationEditor->BindPdf(document);
String _dataDir("C:\\Samples\\");
String exportFileName = _dataDir + u"exportannotations.xfdf";
if (!System::IO::File::Exists(exportFileName))
ExportAnnotationXFDF();
// 导入注释
annotationEditor->ImportAnnotationsFromXfdf(exportFileName);
// 保存输出PDF
document->Save(_dataDir + u"AnnotationDemo2.pdf");
}
另一种一次性导出/导入注释的方法
在下面的代码中,ImportAnnotations方法允许直接从另一个PDF文档导入注释。
void AnnotationImportExport::ImportAnnotationFromPDF() {
// 创建PdfAnnotationEditor对象
auto annotationEditor = MakeObject<PdfAnnotationEditor>();
// 创建一个新的PDF文档
auto document = new Document();
document->get_Pages()->Add();
annotationEditor->BindPdf(document);
String _dataDir("C:\\Samples\\");
String exportFileName = _dataDir + u"exportannotations.xfdf";
if (!System::IO::File::Exists(exportFileName))
ExportAnnotationXFDF();
// 注释编辑器允许从多个PDF文档导入注释,
// 但在此示例中,我们仅使用一个。
auto fileStreams = MakeArray<String>({ _dataDir + u"AnnotationDemo1.pdf" });
annotationEditor->ImportAnnotations(fileStreams);
// 保存输出PDF
document->Save(_dataDir + u"AnnotationDemo3.pdf");
}