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

Aspose.PDF FOSS für C++

Open-Source C++ Bibliothek zum Erstellen, Bearbeiten, Rendern und Sichern von PDF-Dokumenten ohne Laufzeitabhängigkeiten.

Aspose.PDF FOSS — Open-Source C++ PDF-Bibliothek

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.

Dokumentenladen und Seitenverwaltung

  • Öffnen Sie vorhandene PDF-Dateien und speichern Sie Änderungen mit Document
  • Greifen Sie über Document.Pages() (PageCollection) auf Seiten zu und iterieren Sie sie
  • Fügen Sie Seiten hinzu, fügen Sie sie ein und löschen Sie Seiten mit PageCollection.Add()/Insert()/Delete()
  • Lesen und setzen Sie Dokumentmetadaten über DocumentInfo (Document.Info())
  • Optimieren Sie die Dokumentgröße mit Document.Optimize()/OptimizeResources()

Typische Anwendungsfälle

  • Erstellen Sie PDF-Generierungspipelines für Berichte und Rechnungen
  • Zusammenführen, Aufteilen und Neuorganisieren vorhandener PDF-Dokumente
  • Programmatisch Dokumenten-Metadaten prüfen und aktualisieren
  • PDF-Dateigröße vor Archivierung oder Verteilung reduzieren

Textextraktion

  • Extrahieren Sie reinen Text aus einem gesamten Dokument mit Aspose::Pdf::Text::TextAbsorber
  • Besuchen Sie eine einzelne Seite oder das gesamte Dokument über TextAbsorber.Visit()
  • Rufen Sie den extrahierten Text über TextAbsorber.Text() ab
  • Finden Sie einzelne Textfragmente mit TextFragmentAbsorber.TextFragments()

Typische Anwendungsfälle

  • PDF-Inhalte für die Suche indexieren
  • Daten aus Rechnungen und strukturierten Dokumenten extrahieren
  • Text-Mining- oder Inhaltsanalyse-Pipelines erstellen
  • Dokumentinhalt in automatisierten Testsuiten überprüfen

Rendern zu Rasterbildern

  • Rendern Sie Seiten zu PNG mit PngDevice
  • Rendern Sie Seiten zu JPEG, BMP oder TIFF mit JpegDevice, BmpDevice, TiffDevice
  • Steuern Sie die Ausgabeauflösung mit der Resolution-Klasse
  • Verarbeiten Sie eine einzelne Seite über {Device}.Process()

Typische Anwendungsfälle

  • Seiten-Thumbnails für einen Dokumentenbetrachter erzeugen
  • Druckfertige Rasterausgabe aus Vektor-PDFs erzeugen
  • PDF-zu-Bild-Konvertierungsdienste erstellen
  • Visuelle Regressions-Baselines für erzeugte PDFs erstellen

Verschlüsselung und Sicherheit

  • Dokumente mit Document.Encrypt() unter Verwendung eines Benutzer- und Eigentümerkennworts verschlüsseln
  • RC4-40, RC4-128, AES-128 oder AES-256 über das CryptoAlgorithm Enum auswählen
  • Gewährte Berechtigungen mit dem Permissions Typ steuern
  • Passwortgeschützte Dokumente mit Document.Decrypt() entschlüsseln

Typische Anwendungsfälle

  • Vertrauliche PDF-Berichte vor der Verteilung schützen
  • Druck-/Kopier-/Bearbeitungsbeschränkungen für freigegebene Dokumente durchsetzen
  • Passwortschutz zu erzeugten Rechnungen und Kontoauszügen hinzufügen
  • Dokumente stapelweise verschlüsseln als Teil einer Dokumentpipeline

Anmerkungen und interaktive Formulare

  • Anmerkungen hinzufügen, ändern und flachlegen über Annotation und AnnotationCollection
  • AcroForm-Felder über die Klasse Form verwalten
  • Felder mit Form.Add()/Form.Delete() hinzufügen und entfernen
  • Interaktive Formulare mit Form.Flatten() in statischen Inhalt flachlegen

Typische Anwendungsfälle

  • Kommentare und Markierungen zu geteilten PDFs hinzufügen
  • Ausfüllbare PDF-Formulare zur Datenerfassung erstellen
  • Eingereichte Formulare vor der Archivierung flachlegen
  • Formularfelder programmgesteuert vorausfüllen und sperren

Ein PDF öffnen, Text extrahieren und eine Seite rendern

Fü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);
}

Ein Dokument mit AES-256 verschlüsseln

Ö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");
}

Dokumentmetadaten lesen und aktualisieren

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");
}

Häufig gestellte Fragen

Wie ist das Lizenzmodell für Aspose.PDF FOSS for C++?

Es ist MIT-lizenziert und kostenlos in kommerziellen und nichtkommerziellen Produkten verwendbar, ohne Aktivierungsschlüssel oder API-Aufrufbeschränkungen.

Welche Compiler- und CMake-Versionen werden benötigt?

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.

Hat die Bibliothek irgendwelche Laufzeitabhängigkeiten?

Nein. Es verlinkt nur mit der C++-Standardbibliothek — zur Laufzeit ist keine Drittanbieter-PDF-, Bild- oder Komprimierungsabhängigkeit erforderlich.

Welche Formate kann es lesen und exportieren?

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.

Wie verschlüssele ich ein PDF-Dokument?

Rufen Sie Document.Encrypt() mit einem Benutzerkennwort, einem Eigentümerkennwort und einem CryptoAlgorithm (RC4x40, RC4x128, AESx128 oder AESx256) auf.

Gibt es bekannte Einschränkungen in der aktuellen Version?

Ja — einige XmpValue-Typprüfungs-Hilfen (IsDateTime, IsField und ähnliche) sind Stubs, die immer false zurückgeben; verwenden Sie stattdessen IsString/IsInteger/IsDouble/IsArray.

  

Support und Lernressourcen

 Deutsch