Aspose.PDF FOSS for C++ Fonctionnalités

Aspose.PDF FOSS for C++ Fonctionnalités

Aspose.PDF FOSS pour C++ Fonctionnalités

Aspose.PDF FOSS pour C++ est une bibliothèque C++20 pour créer, ouvrir, modifier et enregistrer des documents PDF. Cette page passe en revue les principaux domaines de capacités et les classes qui servent de points d’entrée. Chaque domaine est traité en profondeur sur sa propre page du guide du développeur.


Gestion de documents

Aspose::Pdf::Document est l’objet racine pour chaque opération. Il ouvre un fichier existant depuis un chemin, expose la collection de pages via Pages(), et persiste les modifications avec Save(). Optimize() et OptimizeResources() réduisent la taille du fichier en supprimant les ressources inutilisées ou dupliquées.

#include <aspose/pdf/document.hpp>

int main() {
    Aspose::Pdf::Document doc("input.pdf");

    auto& pages = doc.Pages();
    pages.Add();                 // append a blank page
    pages.Delete(1);             // remove the original first page

    doc.Optimize();
    doc.Save("output.pdf");
}

Extraction de texte

Aspose::Pdf::Text::TextAbsorber parcourt un document ou une seule page et collecte le texte brut, qui est récupéré avec Text() après avoir appelé Visit(). TextFragmentAbsorber effectue le même parcours mais renvoie des objets TextFragment individuels via TextFragments(), offrant l’accès à la position et à l’état du texte de chaque fragment.

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/text_absorber.hpp>
#include <iostream>

int main() {
    Aspose::Pdf::Document doc("report.pdf");

    Aspose::Pdf::Text::TextAbsorber absorber;
    absorber.Visit(doc);

    std::cout << absorber.Text() << "\n";
}

Rendu en images raster

Les dispositifs de rendu de pages convertissent un Page en image raster. BmpDevice, PngDevice, JpegDevice et TiffDevice partagent la même signature Process(page, output) et sont construits avec un Resolution qui définit le DPI de sortie.

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/bmp_device.hpp>
#include <aspose/pdf/resolution.hpp>
#include <fstream>

int main() {
    Aspose::Pdf::Document doc("report.pdf");

    Aspose::Pdf::Devices::BmpDevice device(Aspose::Pdf::Devices::Resolution(150));
    std::ofstream out("page1.bmp", std::ios::binary);
    device.Process(doc.Pages()[1], out);
}

Chiffrement

Document::Encrypt() protège un document avec un mot de passe utilisateur (nécessaire pour l’ouvrir) et un mot de passe propriétaire (nécessaire pour modifier les autorisations), en utilisant un algorithme sélectionné parmi l’énumération CryptoAlgorithm : RC4x40, RC4x128, AESx128 ou AESx256. IsEncrypted() indique l’état actuel et Decrypt() supprime la protection d’un document déjà ouvert.

#include <aspose/pdf/document.hpp>

int main() {
    Aspose::Pdf::Document doc("input.pdf");

    doc.Encrypt("user-password", "owner-password",
                Aspose::Pdf::Permissions::PrintDocument,
                Aspose::Pdf::CryptoAlgorithm::AESx256);

    doc.Save("encrypted.pdf");
}

Annotations

Les annotations attachent des notes visibles, des formes et des balisages à une page. Chaque type d’annotation dérive de Annotation et est construit avec la cible Page et un placement Rectangle, puis ajouté à la page via Annotations() (un AnnotationCollection).

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/text_annotation.hpp>
#include <aspose/pdf/rectangle.hpp>

int main() {
    Aspose::Pdf::Document doc("input.pdf");
    auto page = doc.Pages()[1];

    Aspose::Pdf::Annotations::TextAnnotation note(
        page, Aspose::Pdf::Rectangle(50.0, 700.0, 250.0, 740.0, false));
    note.Contents("Reviewed and approved.");

    page.Annotations().Add(note);
    doc.Save("annotated.pdf");
}

Forms

Les champs AcroForm sont gérés via Aspose::Pdf::Forms::Form, accessibles via Document::Form(). Les types de champ tels que TextBoxField sont construits comme des annotations — avec un Page et un Rectangle — et enregistrés auprès de Form::Add().

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/text_box_field.hpp>
#include <aspose/pdf/rectangle.hpp>

int main() {
    Aspose::Pdf::Document doc("input.pdf");
    auto page = doc.Pages()[1];

    Aspose::Pdf::Forms::TextBoxField field(
        page, Aspose::Pdf::Rectangle(100.0, 650.0, 300.0, 670.0, false));
    field.PartialName("customer_name");
    field.Value("Jane Doe");

    doc.Form().Add(field);
    doc.Save("form_filled.pdf");
}

Conseils et meilleures pratiques

  • Ouvrez les fichiers d’entrée par chemin avec le constructeur Document; appelez Save() avec un chemin de sortie explicite plutôt que d’écraser la source tant que d’autres handles y sont encore ouverts.
  • Appelez Optimize() avant Save() lorsqu’un document a été fortement modifié — il supprime les ressources qui ne sont plus référencées par aucune page.
  • Construisez les périphériques raster (BmpDevice, PngDevice, JpegDevice, TiffDevice) une fois par résolution et réutilisez-les sur plusieurs pages au lieu de recréer un périphérique par page.
  • Définissez à la fois un mot de passe utilisateur et un mot de passe propriétaire lors de l’appel de Encrypt() — un mot de passe utilisateur vide permet à n’importe quel visualiseur d’ouvrir le fichier, tandis que le mot de passe propriétaire contrôle les changements de permissions.
  • Conservez les objets d’annotation et de champ (TextAnnotation, TextBoxField, et similaires) en vie jusqu’après le retour de Save(), car le document conserve des références au contenu de la page auquel ils ont été ajoutés.

Problèmes courants

ProblèmeCauseCorrection
Save() produit un fichier avec un contenu inchangéDes modifications ont été apportées à une copie de page ou d’annotation plutôt qu’à l’objet obtenu à partir de doc.Pages()Modifiez directement l’objet renvoyé par Pages(), Annotations() ou Form()
L’image rendue est vide ou blancheIndice de page incorrect passé à Process()PageCollection utilise un index à partir de 1 — la page 1 est doc.Pages()[1], pas [0]
Encrypt() produit un fichier qui s’ouvre encore sans mot de passeLe mot de passe de l’utilisateur est videFournissez une chaîne non vide comme argument userPassword
Le texte extrait est vide pour un PDF numériséLa page ne contient que du contenu d’image raster, pas d’opérateurs de texteTextAbsorber lit les opérateurs de texte ; les pages uniquement composées d’images n’en ont aucun à extraire
Le champ ajouté avec Form::Add() n’apparaît pas sur la pageLe Rectangle du champ se trouve en dehors du MediaBox de la pageConfirmez que les coordonnées du rectangle sont à l’intérieur des limites de Page::MediaBox()

FAQ

Le Aspose.PDF FOSS pour C++ dépend-il d’une bibliothèque PDF commerciale?

Non. Il s’agit d’une implémentation C++20 écrite de zéro, sans dépendance à aucune pile PDF commerciale, publiée sous la MIT license.

Puis-je créer un nouveau PDF à partir de zéro au lieu d’ouvrir un PDF existant?

Oui. Document possède un constructeur par défaut qui crée un document vide; appelez Pages().Add() pour ajouter des pages avant d’enregistrer.

Vers quels formats raster puis-je rendre?

BmpDevice, PngDevice, JpegDevice et TiffDevice rendent les pages individuelles en BMP, PNG, JPEG et TIFF respectivement.

Quels algorithmes de chiffrement sont pris en charge?

CryptoAlgorithm propose RC4x40, RC4x128, AESx128 et AESx256, transmis à Document::Encrypt().

Où dois-je aller ensuite?

Le guide du développeur comprend des pages dédiées à la gestion des documents et des pages, aux graphiques et formes PDF-native, aux annotations et aux formulaires interactifs, ainsi qu’aux classes de façade de haut niveau qui encapsulent les opérations courantes sur les fichiers.


API Reference Résumé

Classe/MéthodeDescription
DocumentObjet racine — ouvrir, créer, enregistrer et optimiser un PDF
Document.Pages()Retourne le PageCollection du document
Document.Encrypt() / Decrypt()Protéger par mot de passe ou supprimer la protection d’un document
Document.Form()Renvoie le conteneur AcroForm du document
TextAbsorberExtrait le texte brut d’un document ou d’une page
TextFragmentAbsorberExtrait les fragments de texte positionnés
BmpDevice / PngDevice / JpegDevice / TiffDeviceRendre une page au format d’image raster
ResolutionDPI de sortie transmis à un dispositif de rendu
CryptoAlgorithmSélection de l’algorithme de chiffrement : RC4 ou AES, 40–256 bits
PermissionsDrapeaux de contrôle d’accès transmis à Encrypt()
Annotation / AnnotationCollectionType de base et conteneur pour les annotations de page
TextAnnotationAnnotation de note texte
Formconteneur de champ AcroForm atteint via Document.Form()
TextBoxFieldChamp de formulaire texte à ligne unique/multi-ligne

Voir aussi

 Français