Импорт и экспорт аннотаций в формате XFDF с использованием Aspose.PDF для C++

Aspose.PDF для C++ — это компонент, богатый функциями, когда дело касается редактирования PDF-документов. As we know XFDF является важным аспектом работы с PDF-формами, пространство имен Aspose.Pdf.Facades в Aspose.PDF для C++ учитывает это очень хорошо и предоставляет методы для импорта и экспорта данных аннотаций в файлы XFDF.

Класс 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\\");

    // Создать объект PdfAnnotationEditor
    auto annotationEditor = MakeObject<PdfAnnotationEditor>();

    // Привязать PDF документ к редактору аннотаций
    annotationEditor->BindPdf(_dataDir + u"AnnotationDemo1.pdf");

    // Экспортировать аннотации
    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");
}