Importar y Exportar Anotaciones al formato XFDF usando Aspose.PDF para C++

Aspose.PDF para C++ es un componente rico en funciones cuando se trata de editar documentos PDF. Como sabemos, XFDF es un aspecto importante de la manipulación de formularios PDF, el espacio de nombres Aspose.Pdf.Facades en Aspose.PDF para C++ ha considerado esto muy bien y ha proporcionado métodos para importar y exportar datos de anotaciones a archivos XFDF.

La clase PDFAnnotationEditor contiene dos métodos para trabajar con la importación y exportación de anotaciones a archivos XFDF. ExportAnnotationsXfdf método proporciona la funcionalidad para exportar anotaciones de un documento PDF a un archivo XFDF, mientras que el método ImportAnnotationFromXfdf le permite importar anotaciones de un archivo XFDF existente. Para importar o exportar anotaciones necesitamos especificar los tipos de anotación. Podemos especificar estos tipos en forma de una enumeración y luego pasar esta enumeración como un argumento a cualquiera de estos métodos.

El siguiente fragmento de código le muestra cómo exportar anotaciones a un archivo 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\\");

    // Crear objeto PdfAnnotationEditor
    auto annotationEditor = MakeObject<PdfAnnotationEditor>();

    // Vincular documento PDF al Editor de Anotaciones
    annotationEditor->BindPdf(_dataDir + u"AnnotationDemo1.pdf");

    // Exportar anotaciones
    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();
}

El siguiente fragmento de código describe cómo importar anotaciones a un archivo XFDF:

void AnnotationImportExport::ImportAnnotationXFDF() {

    // Crear objeto PdfAnnotationEditor
    auto annotationEditor = MakeObject<PdfAnnotationEditor>();

    // Crear un nuevo documento 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();

    // Importar anotación
    annotationEditor->ImportAnnotationsFromXfdf(exportFileName);

    // Guardar PDF de salida
    document->Save(_dataDir + u"AnnotationDemo2.pdf");
}

Otra forma de exportar/importar anotaciones de una vez

En el código a continuación, un método ImportAnnotations permite importar anotaciones directamente desde otro documento PDF.

void AnnotationImportExport::ImportAnnotationFromPDF() {

    // Crear objeto PdfAnnotationEditor
    auto annotationEditor = MakeObject<PdfAnnotationEditor>();

    // Crear un nuevo documento 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();

    // El Editor de anotaciones permite importar anotaciones de varios documentos PDF,
    // pero en este ejemplo, usamos solo uno.
    auto fileStreams = MakeArray<String>({ _dataDir + u"AnnotationDemo1.pdf" });
    annotationEditor->ImportAnnotations(fileStreams);

    // Guardar PDF de salida
    document->Save(_dataDir + u"AnnotationDemo3.pdf");
}