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.
DocumentDocument.Pages() (PageCollection)PageCollection.Add()/Insert()/Delete()DocumentInfo (Document.Info())Document.Optimize()/OptimizeResources()Aspose::Pdf::Text::TextAbsorberTextAbsorber.Visit()TextAbsorber.Text()TextFragmentAbsorber.TextFragments()PngDeviceJpegDevice, BmpDevice, TiffDeviceResolution{Device}.Process()Document.Encrypt() en utilisant un mot de passe utilisateur et propriétaireCryptoAlgorithmPermissionsDocument.Decrypt()Annotation et AnnotationCollectionFormForm.Add()/Form.Delete()Form.Flatten()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);
}
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 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");
}
Il est sous licence MIT et gratuit à utiliser dans les produits commerciaux et non commerciaux, sans clé d’activation ni limites d’appels API.
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.
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.
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é.
Appelez Document.Encrypt() avec un mot de passe utilisateur, un mot de passe propriétaire et un CryptoAlgorithm (RC4x40, RC4x128, AESx128 ou AESx256).
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.