Aspose.PDF FOSS for C++ ist eine Open-Source-Bibliothek in modernem C++20 zum Arbeiten mit PDF-Dokumenten — Öffnen und Speichern von PDFs, Extrahieren von Text, Rasterisieren von Seiten in Bildformate und Erstellen von Dokumenten von Grund auf (Text, Bilder, Tabellen, Vektorgrafiken, Annotationen, AcroForm-Felder und Lesezeichen). Die Bibliothek bindet nur an die C++-Standardbibliothek: Jeder Primitive, einschließlich der TIFF-, JPEG- und PNG-Codecs sowie des Seiten-Rasterisierers, wird von Grund auf implementiert, ohne Abhängigkeit von einem kommerziellen PDF-Stack.
Der Kern von API ist um die Document-Klasse und ihre Pages()-Sammlung herum aufgebaut. Text wird mit Aspose::Pdf::Text::TextAbsorber extrahiert, Seiten werden über Geräteklassen wie PngDevice, JpegDevice, BmpDevice und TiffDevice zu Rasterbildern gerendert, und Dokumente können mit Document.Encrypt() unter Verwendung von RC4-40, RC4-128, AES-128 oder AES-256 Algorithmen gesichert werden, die über das CryptoAlgorithm-Enum ausgewählt werden. Interaktive Formularfelder werden über die Form-Klasse verwaltet, und Annotationen — Textnotizen, Hervorhebungen, Formen und Stempel — werden über die Klassenhierarchie Annotation hinzugefügt und modifiziert.
Aspose.PDF FOSS for C++ wird unter der MIT-Lizenz veröffentlicht, ohne Laufzeitgebühren oder Nutzungsbeschränkungen. Es wird als statische Bibliothek via CMake gebaut — fügen Sie es als Unterverzeichnis Ihres Builds hinzu oder installieren Sie es eigenständig — und erfordert einen C++20-Compiler ohne weitere Laufzeitabhängigkeiten. Für Unternehmensfunktionen und Support siehe Aspose.PDF for C++ — Enterprise Product.
DocumentDocument.Pages() (PageCollection) auf Seiten zu und iterieren Sie siePageCollection.Add()/Insert()/Delete()DocumentInfo (Document.Info())Document.Optimize()/OptimizeResources()Aspose::Pdf::Text::TextAbsorberTextAbsorber.Visit()TextAbsorber.Text() abTextFragmentAbsorber.TextFragments()PngDeviceJpegDevice, BmpDevice, TiffDeviceResolution-Klasse{Device}.Process()Document.Encrypt() unter Verwendung eines Benutzer- und Eigentümerkennworts verschlüsselnCryptoAlgorithm Enum auswählenPermissions Typ steuernDocument.Decrypt() entschlüsselnAnnotation und AnnotationCollectionForm verwaltenForm.Add()/Form.Delete() hinzufügen und entfernenForm.Flatten() in statischen Inhalt flachlegenFügen Sie die Bibliothek als CMake-Unterverzeichnis hinzu, öffnen Sie dann ein Dokument, zählen Sie dessen Seiten, extrahieren Sie Text mit TextAbsorber und rendern Sie Seite 1 zu PNG bei 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);
}
Öffnen Sie ein Dokument und schützen Sie es mit einem Benutzer- und Eigentümerpasswort unter Verwendung der AES-256-Verschlüsselung.
#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");
}
Lese vorhandene /Info-Einträge und aktualisiere den Dokumenttitel über 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");
}
Es ist MIT-lizenziert und kostenlos in kommerziellen und nichtkommerziellen Produkten verwendbar, ohne Aktivierungsschlüssel oder API-Aufrufbeschränkungen.
Ein C++20-Compiler (clang 16+, gcc 13+ oder MSVC 2022 17.5+) und CMake 3.22 oder höher. Python 3 ist nur zur Buildzeit erforderlich.
Nein. Es verlinkt nur mit der C++-Standardbibliothek — zur Laufzeit ist keine Drittanbieter-PDF-, Bild- oder Komprimierungsabhängigkeit erforderlich.
Es liest und speichert native PDF-Dokumente und exportiert gerenderte Seiten zu Bmp, Jpeg und Tiff sowie als Klartext. SVG-Inhalte können importiert werden.
Rufen Sie Document.Encrypt() mit einem Benutzerkennwort, einem Eigentümerkennwort und einem CryptoAlgorithm (RC4x40, RC4x128, AESx128 oder AESx256) auf.
Ja — einige XmpValue-Typprüfungs-Hilfen (IsDateTime, IsField und ähnliche) sind Stubs, die immer false zurückgeben; verwenden Sie stattdessen IsString/IsInteger/IsDouble/IsArray.