Aspose.PDF FOSS for C++ Funktionen

Aspose.PDF FOSS for C++ Funktionen

Aspose.PDF FOSS für C++-Features

Aspose.PDF FOSS für C++ ist eine C++20-Bibliothek zum Erstellen, Öffnen, Ändern und Speichern von PDF-Dokumenten. Diese Seite gibt einen Überblick über die wichtigsten Funktionsbereiche und die Klassen, die als Einstiegspunkte dienen. Jeder Bereich wird in seiner eigenen Entwicklerleitfaden-Seite ausführlich behandelt.


Dokumentenverwaltung

Aspose::Pdf::Document ist das Root-Objekt für jede Operation. Es öffnet eine vorhandene Datei aus einem Pfad, stellt die Seitensammlung über Pages() bereit und speichert Änderungen mit Save(). Optimize() und OptimizeResources() verkleinern die Dateigröße, indem sie ungenutzte oder duplizierte Ressourcen entfernen.

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

Textextraktion

Aspose::Pdf::Text::TextAbsorber durchläuft ein Dokument oder eine einzelne Seite und sammelt Klartext, der mit Text() nach dem Aufruf von Visit() abgerufen wird. TextFragmentAbsorber führt denselben Durchlauf aus, gibt jedoch einzelne TextFragment-Objekte über TextFragments() zurück, wodurch Zugriff auf die Position und den Textstatus jedes Fragments ermöglicht wird.

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

Rendering zu Rasterbildern

Page-Rendering-Geräte konvertieren ein Page in ein Rasterbild. BmpDevice, PngDevice, JpegDevice und TiffDevice teilen dieselbe Process(page, output)-Signatur und werden mit einem Resolution konstruiert, das die Ausgabe-DPI festlegt.

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

Verschlüsselung

Document::Encrypt() schützt ein Dokument mit einem Benutzerpasswort (zum Öffnen erforderlich) und einem Besitzerpasswort (zum Ändern von Berechtigungen erforderlich), wobei ein Algorithmus verwendet wird, der aus dem CryptoAlgorithm-Enum ausgewählt wird: RC4x40, RC4x128, AESx128 oder AESx256. IsEncrypted() gibt den aktuellen Zustand zurück und Decrypt() entfernt den Schutz von einem bereits geöffneten Dokument.

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

Annotationen

Annotationen fügen einer Seite sichtbare Notizen, Formen und Markierungen hinzu. Jeder Annotationstyp leitet sich von Annotation ab und wird mit dem Ziel-Page und einer Platzierungs-Rectangle konstruiert, dann über Annotationen() (ein AnnotationCollection) zur Seite hinzugefügt.

#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

AcroForm-Felder werden über Aspose::Pdf::Forms::Form verwaltet, erreichbar über Document::Form(). Feldtypen wie TextBoxField werden wie Annotationen konstruiert — mit einem Page und einem Rectangle — und bei Form::Add() registriert.

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

Tipps und bewährte Verfahren

  • Öffnen Sie Eingabedateien über den Pfad mit dem Document-Konstruktor; rufen Sie Save() mit einem expliziten Ausgabepfad auf, anstatt die Quelle zu überschreiben, während andere Handles noch geöffnet sein können.
  • Rufen Sie Optimize() vor Save() auf, wenn ein Dokument stark bearbeitet wurde — es entfernt Ressourcen, die von keiner Seite mehr referenziert werden.
  • Erzeugen Sie Rastergeräte (BmpDevice, PngDevice, JpegDevice, TiffDevice) einmal pro Auflösung und verwenden Sie sie über mehrere Seiten hinweg wieder, anstatt für jede Seite ein Gerät neu zu erstellen.
  • Setzen Sie sowohl ein Benutzerpasswort als auch ein Besitzerpasswort, wenn Sie Encrypt() aufrufen — ein leeres Benutzerpasswort lässt jeden Betrachter die Datei öffnen, während das Besitzerpasswort Änderungen der Berechtigungen steuert.
  • Halten Sie Anmerkungs- und Feldobjekte (TextAnnotation, TextBoxField und ähnliche) am Leben, bis nach der Rückkehr von Save(), da das Dokument Referenzen auf den Seiteninhalt enthält, zu dem sie hinzugefügt wurden.

Häufige Probleme

ProblemUrsacheLösung
Save() erzeugt eine Datei mit unverändertem InhaltEs wurden Änderungen an einer Kopie einer Seite oder Annotation vorgenommen, anstatt am Objekt, das von doc.Pages() erhalten wurdeModifizieren Sie das Objekt, das direkt von Pages(), Annotations() oder Form() zurückgegeben wird
Das gerenderte Bild ist leer oder leerFalscher Seitenindex an Process() übergebenPageCollection ist 1-indexiert — Seite 1 ist doc.Pages()[1], nicht [0]
Encrypt() erzeugt eine Datei, die immer noch ohne Passwort geöffnet werden kannBenutzerpasswort bleibt leerÜbergeben Sie einen nicht-leeren String als userPassword-Argument
Extrahierter Text ist bei einem gescannten PDF leerDie Seite enthält nur Raster-Bildinhalt, keine TextoperatorenTextAbsorber liest Textoperatoren; bild-nur Seiten haben keine zum Extrahieren
Feld, das mit Form::Add() hinzugefügt wurde, erscheint nicht auf der SeiteDer Rectangle des Feldes liegt außerhalb des MediaBox der SeiteBestätigen Sie, dass die Rechteckkoordinaten innerhalb der Page::MediaBox()-Grenzen liegen

FAQ

Hängt Aspose.PDF FOSS für C++ von einer kommerziellen PDF-Bibliothek ab?

Nein. Es ist eine von Grund auf neu erstellte C++20-Implementierung ohne Abhängigkeit von einem kommerziellen PDF-Stack, veröffentlicht unter der MIT-Lizenz.

Kann ich ein neues PDF von Grund auf neu erstellen, anstatt ein bestehendes zu öffnen?

Ja. Document hat einen Standardkonstruktor, der ein leeres Dokument erstellt; rufen Sie Pages().Add() auf, um Seiten hinzuzufügen, bevor Sie speichern.

In welche Rasterformate kann ich rendern?

BmpDevice, PngDevice, JpegDevice und TiffDevice rendern einzelne Seiten zu BMP, PNG, JPEG bzw. TIFF.

Welche Verschlüsselungsalgorithmen werden unterstützt?

CryptoAlgorithm bietet RC4x40, RC4x128, AESx128 und AESx256 an, die an Document::Encrypt() übergeben werden.

Wohin gehe ich als Nächstes?

Der Entwicklerleitfaden enthält spezielle Seiten für Dokumenten- und Seitenverwaltung, PDF-native Grafiken und Formen, Anmerkungen und interaktive Formulare sowie die höherstufigen Fassadenklassen, die gängige Dateioperationen kapseln.


API Reference Zusammenfassung

Klasse/MethodeBeschreibung
DocumentRoot-Objekt — PDF öffnen, erstellen, speichern und optimieren
Document.Pages()Gibt das PageCollection des Dokuments zurück
Document.Encrypt() / Decrypt()Ein Dokument mit einem Passwort schützen oder den Schutz entfernen
Document.Form()Gibt den AcroForm-Container des Dokuments zurück
TextAbsorberExtrahiert Klartext aus einem Dokument oder einer Seite
TextFragmentAbsorberExtrahiert positionierte Textfragmente
BmpDevice / PngDevice / JpegDevice / TiffDeviceEine Seite in ein Rasterbildformat rendern
ResolutionAusgabe-DPI, das an ein Rendering-Gerät übergeben wird
CryptoAlgorithmAuswahl des Verschlüsselungsalgorithmus: RC4 oder AES, 40–256 Bit
PermissionsZugriffskontroll-Flags, die an Encrypt() übergeben werden
Annotation / AnnotationCollectionBasistyp und Container für Seitenannotationen
TextAnnotationTextnotiz-Annotation
FormAcroForm Feldcontainer erreicht über Document.Form()
TextBoxFieldEinzeilen-/Mehrzeilen-Text-Formularfeld

Siehe auch

 Deutsch