Importer et Exporter des Annotations au format XFDF en utilisant Aspose.PDF pour C++

Aspose.PDF pour C++ est un composant riche en fonctionnalités lorsqu’il s’agit de modifier des documents PDF. Comme nous le savons, XFDF est un aspect important de la manipulation des formulaires PDF, l’espace de noms Aspose.Pdf.Facades dans Aspose.PDF pour C++ l’a très bien pris en compte et a fourni des méthodes pour importer et exporter des données d’annotations vers des fichiers XFDF.

La classe PDFAnnotationEditor contient deux méthodes pour travailler avec l’importation et l’exportation d’annotations vers un fichier XFDF. ExportAnnotationsXfdf méthode fournit la fonctionnalité pour exporter des annotations d’un document PDF vers un fichier XFDF, tandis que ImportAnnotationFromXfdf méthode vous permet d’importer des annotations à partir d’un fichier XFDF existant. Afin d’importer ou d’exporter des annotations, nous devons spécifier les types d’annotation. Nous pouvons spécifier ces types sous forme d’une énumération, puis passer cette énumération en tant qu’argument à l’une de ces méthodes.

Le fragment de code suivant vous montre comment exporter des annotations vers un fichier 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\\");

    // Créer un objet PdfAnnotationEditor
    auto annotationEditor = MakeObject<PdfAnnotationEditor>();

    // Lier le document PDF à l'éditeur d'annotations
    annotationEditor->BindPdf(_dataDir + u"AnnotationDemo1.pdf");

    // Exporter les 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();
}

Le prochain extrait de code décrit comment importer des annotations dans un fichier XFDF :

void AnnotationImportExport::ImportAnnotationXFDF() {

    // Créer un objet PdfAnnotationEditor
    auto annotationEditor = MakeObject<PdfAnnotationEditor>();

    // Créer un nouveau document 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();

    // Importer l'annotation
    annotationEditor->ImportAnnotationsFromXfdf(exportFileName);

    // Enregistrer le PDF de sortie
    document->Save(_dataDir + u"AnnotationDemo2.pdf");
}

Encore une autre façon d’exporter/importer des annotations à la fois

Dans le code ci-dessous, une méthode ImportAnnotations permet d’importer des annotations directement à partir d’un autre document PDF.

void AnnotationImportExport::ImportAnnotationFromPDF() {

    // Créer un objet PdfAnnotationEditor
    auto annotationEditor = MakeObject<PdfAnnotationEditor>();

    // Créer un nouveau document 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();

    // L'éditeur d'annotations permet d'importer des annotations à partir de plusieurs documents PDF,
    // mais dans cet exemple, nous n'utilisons qu'un seul.
    auto fileStreams = MakeArray<String>({ _dataDir + u"AnnotationDemo1.pdf" });
    annotationEditor->ImportAnnotations(fileStreams);

    // Enregistrer le PDF de sortie
    document->Save(_dataDir + u"AnnotationDemo3.pdf");
}