1. Produits
  2.   Aspose.PDF
  3.   Aspose.PDF FOSS for C++

Aspose.PDF FOSS pour C++

Bibliothèque C++ open source pour créer, modifier, rendre et sécuriser des documents PDF sans dépendances d’exécution.

Aspose.PDF FOSS — Bibliothèque PDF C++ Open Source

Aspose.PDF FOSS for C++ est une bibliothèque open-source moderne en C++20 pour travailler avec des documents PDF — ouvrir et enregistrer des PDF, extraire du texte, rasteriser des pages vers des formats d’image, et créer des documents à partir de zéro (texte, images, tableaux, graphiques vectoriels, annotations, champs AcroForm et signets). La bibliothèque ne lie qu’à la bibliothèque standard C++ : chaque primitive, y compris les codecs TIFF, JPEG et PNG ainsi que le rasteriseur de pages, est implémentée à partir de zéro sans dépendance à aucune pile PDF commerciale.

Le cœur API est construit autour de la classe Document et de sa collection Pages(). Le texte est extrait avec Aspose::Pdf::Text::TextAbsorber, les pages sont rendues en images raster via des classes d’appareil telles que PngDevice, JpegDevice, BmpDevice et TiffDevice, et les documents peuvent être sécurisés avec Document.Encrypt() en utilisant les algorithmes RC4-40, RC4-128, AES-128 ou AES-256 sélectionnés via l’énumération CryptoAlgorithm. Les champs de formulaire interactifs sont gérés via la classe Form, et les annotations — notes textuelles, surlignages, formes et tampons — sont ajoutées et modifiées via la hiérarchie de classes Annotation.

Aspose.PDF FOSS for C++ est publié sous la licence MIT sans frais d’exécution ni restrictions d’utilisation. Il se compile en tant que bibliothèque statique via CMake — ajoutez-le comme sous-répertoire de votre construction ou installez-le de façon autonome — et nécessite un compilateur C++20 sans autres dépendances d’exécution. Pour les fonctionnalités et le support d’entreprise, voir Aspose.PDF for C++ — Enterprise Product.

Chargement du document et gestion des pages

  • Ouvrez des fichiers PDF existants et enregistrez les modifications avec Document
  • Accédez aux pages et parcourez-les via Document.Pages() (PageCollection)
  • Ajoutez, insérez et supprimez des pages avec PageCollection.Add()/Insert()/Delete()
  • Lisez et définissez les métadonnées du document via DocumentInfo (Document.Info())
  • Optimisez la taille du document avec Document.Optimize()/OptimizeResources()

Cas d’utilisation typiques

  • Créer des pipelines de génération PDF pour les rapports et les factures
  • Fusionner, scinder et réorganiser des documents PDF existants
  • Inspecter et mettre à jour les métadonnées du document de manière programmatique
  • Réduire la taille du fichier PDF avant l’archivage ou la distribution

Extraction de texte

  • Extraire le texte brut d’un document complet avec Aspose::Pdf::Text::TextAbsorber
  • Parcourir une seule page ou l’ensemble du document via TextAbsorber.Visit()
  • Récupérer le texte extrait via TextAbsorber.Text()
  • Localiser les fragments de texte individuels avec TextFragmentAbsorber.TextFragments()

Cas d’utilisation typiques

  • Indexer le contenu PDF pour la recherche
  • Extraire les données des factures et des documents structurés
  • Construire des pipelines d’exploration de texte ou d’analyse de contenu
  • Vérifier le contenu du document dans les suites de tests automatisées

Rendu vers des images raster

  • Rendre les pages au format PNG avec PngDevice
  • Rendre les pages au format JPEG, BMP ou TIFF avec JpegDevice, BmpDevice, TiffDevice
  • Contrôler la résolution de sortie avec la classe Resolution
  • Traiter une seule page via {Device}.Process()

Cas d'utilisation typiques

  • Générer des miniatures de pages pour un visualiseur de documents
  • Produire une sortie raster prête à l’impression à partir de PDF vectoriels
  • Construire des services de conversion PDF-vers-image
  • Créer des bases de référence de régression visuelle pour les PDF générés

Chiffrement et Sécurité

  • Chiffrer des documents avec Document.Encrypt() en utilisant un mot de passe utilisateur et propriétaire
  • Choisir RC4-40, RC4-128, AES-128 ou AES-256 via l’énumération CryptoAlgorithm
  • Contrôler les autorisations accordées avec le type Permissions
  • Déchiffrer les documents protégés par mot de passe avec Document.Decrypt()

Cas d'utilisation typiques

  • Protéger les rapports PDF confidentiels avant distribution
  • Appliquer des restrictions d’impression/copie/édition sur les documents partagés
  • Ajouter une protection par mot de passe aux factures et relevés générés
  • Crypter en lot les documents dans le cadre d’un pipeline de documents

Annotations et formulaires interactifs

  • Ajouter, modifier et aplatir les annotations via Annotation et AnnotationCollection
  • Gérer les champs AcroForm via la classe Form
  • Ajouter et supprimer des champs avec Form.Add()/Form.Delete()
  • Aplatir les formulaires interactifs en contenu statique avec Form.Flatten()

Cas d’utilisation typiques

  • Ajouter des commentaires de révision et des surlignages aux PDF partagés
  • Créer des formulaires PDF remplissables pour la collecte de données
  • Aplatir les formulaires soumis avant l’archivage
  • Préremplir et verrouiller les champs de formulaire de façon programmatique

Ouvrir un PDF, Extraire le texte et Rendre une page

Ajoutez la bibliothèque en tant que sous-répertoire CMake, puis ouvrez un document, comptez ses pages, extrayez le texte avec TextAbsorber et rendez la page 1 en PNG à 150 DPI.

add_subdirectory(aspose.pdf-foss-for-cpp)
target_link_libraries(your_app PRIVATE aspose_pdf_foss)
#include <aspose/pdf/document.hpp>
#include <aspose/pdf/page_collection.hpp>
#include <aspose/pdf/text_absorber.hpp>
#include <aspose/pdf/png_device.hpp>
#include <aspose/pdf/resolution.hpp>
#include <fstream>
#include <iostream>

int main() {
    Aspose::Pdf::Document doc("input.pdf");
    std::cout << "Pages: " << doc.Pages().Count() << "\n";

    Aspose::Pdf::Text::TextAbsorber absorber;
    absorber.Visit(doc);
    std::cout << absorber.Text() << "\n";

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

Chiffrer un document avec AES-256

Ouvrez un document et protégez-le avec un mot de passe utilisateur et un mot de passe propriétaire en utilisant le chiffrement AES-256.

#include <aspose/pdf/document.hpp>
int main() {
    Aspose::Pdf::Document doc("input.pdf");
    doc.Encrypt("user-password", "owner-password",
                Aspose::Pdf::Permissions(),
                Aspose::Pdf::CryptoAlgorithm::AESx256);
    doc.Save("encrypted.pdf");
}

Lire et mettre à jour les métadonnées du document

Lire les entrées /Info existantes et mettre à jour le titre du document via DocumentInfo.

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

int main() {
    Aspose::Pdf::Document doc("input.pdf");
    auto& info = doc.Info();
    std::cout << "Title: " << info.Title() << "\n";
    std::cout << "Author: " << info.Author() << "\n";

    doc.SetTitle("Updated Report Title");
    doc.Save("output.pdf");
}

Foire aux questions

Quel est le modèle de licence pour Aspose.PDF FOSS for C++ ?

Il est sous licence MIT et gratuit à utiliser dans les produits commerciaux et non commerciaux, sans clé d’activation ni limites d’appels API.

Quelles versions du compilateur et de CMake sont requises ?

Un compilateur C++20 (clang 16+, gcc 13+, ou MSVC 2022 17.5+) et CMake 3.22 ou version ultérieure. Python 3 est requis uniquement au moment de la construction.

La bibliothèque a-t-elle des dépendances d’exécution ?

Non. Il ne dépend que de la bibliothèque standard C++ — aucune dépendance tierce en PDF, image ou compression n’est requise à l’exécution.

Quels formats peut-il lire et exporter ?

Il lit et enregistre les documents PDF natifs, et exporte les pages rendues vers Bmp, Jpeg et Tiff, ainsi que du texte brut. Le contenu SVG peut être importé.

Comment chiffrer un document PDF ?

Appelez Document.Encrypt() avec un mot de passe utilisateur, un mot de passe propriétaire et un CryptoAlgorithm (RC4x40, RC4x128, AESx128 ou AESx256).

Existe-t-il des limitations connues dans la version actuelle ?

Oui — quelques assistants de vérification de type XmpValue (IsDateTime, IsField et similaires) sont des stubs qui renvoient toujours false ; utilisez IsString/IsInteger/IsDouble/IsArray à la place.

  

Ressources de support et d'apprentissage

 Français