Arbeiten mit der generierten Kompatibilität API
Arbeiten mit der generierten Kompatibilität API
Aspose.PDF FOSS für Python liefert eine zweite, kleinere API-Oberfläche unter dem aspose_pdf.generated-Unterpaket: generated.document.Document, generated.forms.UnsignedContent und UnsignedContentAbsorber, sowie generated.pdfa.PdfAValidateOptions und PdfAValidationResult. Jede dieser Klassen teilt ihren Namen mit einer Klasse in der primären API der Bibliothek (aspose_pdf.Document, aspose_pdf.UnsignedContent usw.), ist jedoch eine separate, eigenständig definierte Klasse mit einer reduzierten Methodenschnittstelle. Sie existieren als eigenständige Kompatibilitätsschicht – importieren Sie sie immer über ihren vollständigen aspose_pdf.generated.*-Pfad, damit Sie wissen, welche Sie aufrufen.
Dokumentenlebenszyklus über das generierte Dokument
generated.document.Document unterstützt den Kern des Dokumentenlebenszyklus: Laden, Speichern, grundlegende Optimierung, Verschlüsselung und Validierung. Die meisten seiner Eigenschaften sind als Any typisiert, anstatt der reichhaltigeren Typen, die in der primären Document-Klasse bereitgestellt werden.
from aspose_pdf.generated.document import Document
doc = Document()
doc.load_from("input.pdf")
doc.optimize(compress_images=True)
doc.optimize_resources(remove_unused=True)
if doc.validate():
doc.save("output.pdf")
doc.dispose()Verschlüsselung und Passwortänderungen verwenden ein Ein-Passwort-Formular anstelle der separaten Benutzer-/Eigentümerpasswörter der primären Document.encrypt:
from aspose_pdf.generated.document import Document
doc = Document()
doc.load_from("input.pdf")
doc.encrypt("secret")
doc.change_passwords("secret", "new-secret")
doc.save("protected.pdf")Extrahieren von nicht signiertem Inhalt
generated.forms.UnsignedContentAbsorber extrahiert die Seiten, Formularfelder und Anmerkungen eines Dokuments, die noch nicht signiert wurden, in einen UnsignedContent-Container. Rufen Sie extract() auf, um die Extraktion auszuführen, und dann get_extracted() oder has_extracted(), um das Ergebnis zu prüfen, ohne es erneut auszuführen.
from aspose_pdf.generated.document import Document
from aspose_pdf.generated.forms import UnsignedContentAbsorber
doc = Document()
doc.load_from("input.pdf")
absorber = UnsignedContentAbsorber()
extracted = absorber.extract()
print(len(extracted.pages), len(extracted.form_fields), extracted.annotations)
if absorber.has_extracted():
same_result = absorber.get_extracted()
absorber.reset()UnsignedContent kann auch direkt gebaut und befüllt werden, unabhängig von einem Absorber:
from aspose_pdf.generated.forms import UnsignedContent
bundle = UnsignedContent()
bundle.add_page(some_page)
bundle.add_form_field(some_field)
bundle.add_annotation(some_annotation)
bundle.remove_page(some_page)
bundle.reset()PDF/A Validierungsoptionen und -ergebnisse
generated.pdfa.PdfAValidateOptions und PdfAValidationResult sind ein eigenständiges Optionen/Ergebnis-Paar für PDF/A-basierte Validierungs-Workflows. Sie sind nicht die Klassen, die vom primären API s Document.validate_pdfa() zurückgegeben oder von PdfAValidator.process() konsumiert werden — diese verwenden ihre eigenen, separat definierten Klassen PdfAValidateOptions und PdfAValidationResult mit einer reichhaltigeren Oberfläche (level, warnings, is_heuristic und einem font_lookup_directory).
from aspose_pdf.generated.pdfa import PdfAValidateOptions, PdfAValidationResult
options = PdfAValidateOptions()
options.add_input()
options.set_option("level", "1b")
stored_options = options.get_options()
result = PdfAValidationResult()
result.add_error("Font not embedded: Arial")
summary = result.to_dict()
is_valid = result.is_validTipps und bewährte Vorgehensweisen
- Importiere jede
generated-Klasse über ihren vollständigen Submodul-Pfad (from aspose_pdf.generated.document import Documentund analog fürgenerated.formsundgenerated.pdfa) — gehe niemals davon aus, dass ein bloßerDocument- oderUnsignedContent-Import zur Kompatibilitätsversion aufgelöst wird. - Gib der importierten Klasse einen unterscheidenden lokalen Namen, wenn eine Datei im selben Modul auch das primäre API verwendet, damit die beiden Oberflächen an jedem Aufrufort sichtbar getrennt bleiben.
- Betrachte
generated.pdfa.PdfAValidateOptions/PdfAValidationResultals ein eigenständiges Paar: erstelle die Optionen, führe deine eigene Validierungslogik aus und protokolliere die Ergebnisse selbst mitadd_error()— sie werden nicht automatisch vonDocument.validate_pdfa()befüllt. - Überprüfe
UnsignedContentAbsorber.has_extracted(), bevor duget_extracted()aufrufst, falls du nicht sicher bist, dassextract()bereits ausgeführt wurde. - Verwenden Sie bevorzugt das primäre
aspose_pdf.DocumentAPI für neuen Code, es sei denn, Sie benötigen speziell die reduzierte, generierte Kompatibilitätsoberfläche.
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
Falsche Document-Methoden verfügbar (fehlende pages, form, xmp_metadata und ähnliche) | Importierte generated.document.Document anstelle des primären aspose_pdf.Document | Importiere die primäre Klasse (import aspose_pdf; aspose_pdf.Document()), es sei denn, die reduzierte Oberfläche ist beabsichtigt |
PdfAValidateOptions/PdfAValidationResult aus generated.pdfa funktionieren nicht mit PdfAValidator.process() | Die primäre API s PdfAValidator erwartet ihre eigenen PdfAValidateOptions/PdfAValidationResult-Klassen, nicht die generated.pdfa-Versionen | Verwenden Sie die PdfAValidateOptions/PdfAValidationResult Klassen, die von aspose_pdf exportiert werden, für PdfAValidator Workflows |
get_extracted() gibt None zurück | extract() wurde nie auf dieser UnsignedContentAbsorber-Instanz aufgerufen | Rufen Sie extract() vor get_extracted() auf, oder prüfen Sie zuerst has_extracted() |
Eigenschaften von generated.document.Document sind vom Typ Any und bieten keine Autovervollständigung | Die generierte Oberfläche tauscht statische Typisierung gegen ein kleineres, einfacheres API aus | Casten Sie den erwarteten Typ am Aufrufort oder dokumentieren Sie ihn, oder wechseln Sie zur primären Document-Klasse für umfangreichere Typisierung |
FAQ
Ist aspose_pdf.generated ein Stub oder ein Platzhalter?
Nein. Es ist ein echtes, importierbares Unterpaket mit funktionierenden Klassen — Document, UnsignedContent, UnsignedContentAbsorber, PdfAValidateOptions und PdfAValidationResult — es ist lediglich eine kleinere, eigenständige Oberfläche als das primäre API der Bibliothek.
Warum hat generated.document.Document denselben Namen wie aspose_pdf.Document?
Es handelt sich um zwei unabhängig definierte Klassen, die zufällig denselben Namen haben. Das Importieren aus aspose_pdf.generated.document liefert die Kompatibilitätsversion; das Importieren von aspose_pdf.Document (oder from aspose_pdf import Document) liefert die primäre Version.
Kann ich ein generated.pdfa.PdfAValidateOptions an PdfAValidator.process() übergeben?
Nein. PdfAValidator.process() ist Teil des primären API und erwartet die eigene PdfAValidateOptions-Klasse des primären API, die eine andere Methodensignatur hat (add_input(source) anstelle einer argumentlosen add_input()).
Benötigt UnsignedContentAbsorber.extract() ein Document-Argument?
Nein. extract() nimmt keine Argumente in der erzeugten Kompatibilitätsebene; konstruieren Sie den Absorber und rufen Sie extract() direkt auf.
API Reference Zusammenfassung
| Klasse / Methode | Beschreibung |
|---|---|
Document.load_from | Lädt ein Dokument aus einem Dateipfad, Bytes oder Stream |
Document.save | Speichert das Dokument an einem Ziel |
Document.optimize | Führt allgemeine Optimierung durch, optional mit Bildkompression |
Document.optimize_resources | Optimiert gemeinsam genutzte Ressourcen wie Schriftarten und Bilder |
Document.encrypt | Verschlüsselt das Dokument mit einem einzigen Passwort |
Document.change_passwords | Ändert das Passwort des Dokuments |
Document.validate | Gibt zurück, ob das Dokument strukturell gültig ist |
Document.dispose | Gibt Ressourcen frei, die mit dem Dokument verbunden sind |
UnsignedContent.add_page / remove_page | Fügt einer unsigned-content bundle eine Seite hinzu oder entfernt sie |
UnsignedContent.add_form_field / remove_form_field | Fügt einer unsigned-content bundle ein Formularfeld hinzu oder entfernt es |
UnsignedContent.add_annotation / remove_annotation | Fügt einer unsigned-content bundle eine Annotation hinzu oder entfernt sie |
UnsignedContentAbsorber.extract | Extrahiert unsignierten Inhalt in eine UnsignedContent-Instanz |
UnsignedContentAbsorber.get_extracted | Gibt das zuletzt extrahierte UnsignedContent zurück, falls vorhanden |
UnsignedContentAbsorber.has_extracted | Meldet, ob eine Extraktion durchgeführt wurde |
PdfAValidateOptions.add_input | Registriert eine Eingabequelle zur Validierung |
PdfAValidateOptions.set_option / get_options | Setzt oder liest Validierungsoptionswerte |
PdfAValidationResult.add_error | Fügt eine Fehlermeldung hinzu und markiert das Ergebnis als ungültig |
PdfAValidationResult.to_dict | Gibt eine Dictionary-Darstellung des Validierungsergebnisses zurück. |