Introduktion
Aspose.PDF FOSS för Python inkluderar ett aspose_pdf.generated underpaket med fyra moduler: document.py, forms.py, pdfa.py och security.py. Ingen av dem återexporteras från det översta aspose_pdf-paketet, så varje klass i den här guiden importeras via sin fullständiga punktseparerade sökväg — from aspose_pdf.generated.document import Document, inte from aspose_pdf import Document.
De fyra modulerna använder två olika tillvägagångssätt. generated.document, generated.forms och generated.pdfa definierar var och en sina egna klasser: oberoende implementationer som speglar strukturen i huvudpaketets Document, UnsignedContent/UnsignedContentAbsorber och PdfAValidateOptions/PdfAValidationResult — användbara för kod som skrivits mot den speglade namnrymdsstrukturen, men en verklig, separat uppsättning klasser snarare än alias. generated.security å andra sidan gör ingen omimplementation alls: den importerar CompromiseCheckResult, SignaturesCompromiseDetector och validerings-enumarna direkt från aspose_pdf.security och aspose_pdf.validation och återexporterar dem, så båda importvägarna löser upp till samma klassobjekt.
Denna guide täcker alla fyra och är tydlig med var en generated-klass beter sig annorlunda än sin motsvarighet i huvudpaketet med samma namn — Document och UnsignedContentAbsorber finns båda på två ställen med två olika implementationer, vilket är precis den typ av sak som lätt kan bli fel när man importerar enbart efter namn.
Aspose.PDF FOSS för Python är ett Python-paket, aspose-pdf-foss-for-python, släppt under MIT-licensen, och kräver Python 3.11 eller senare. Dess top-nivåmodulnamn är aspose_pdf; se avsnittet Snabbstart nedan för installation. Kärnpaketet beror endast på cryptography och asn1crypto; valfria tillägg lägger till bildavkodning baserad på Pillow, WOFF2-teckensnittsstöd baserat på Brotli och HarfBuzz-baserad komplex textlayout.
Viktiga funktioner
En andra dokumentimplementering
aspose_pdf.generated.document.Document implementerar samma kärnlivscykel som huvud-aspose_pdf.Document — load_from(), save(), encrypt()/decrypt()/change_passwords(), optimize()/optimize_resources(), repair(), flatten() och validate()/check() — ovanpå samma aspose_pdf.engine.simple_pdf.SimplePdf-motor. Den speglar en delmängd av huvud-Document: den har ingen pages.add()-stil sidförfattning, ingen form/outlines/attachments, och ingen render_page(). Eftersom klassnamnet kolliderar med huvudpaketets Document, importera den under ett alias när båda behövs i samma modul.
from aspose_pdf import Document
from aspose_pdf.generated.document import Document as CompatDocument
with Document() as document:
document.pages.add()
document.save("source.pdf")
compat = CompatDocument()
compat.load_from("source.pdf")
print(compat.page_count, compat.is_encrypted)
compat.optimize(compress_images=True)
compat.save("optimized.pdf", overwrite=True)
compat.dispose()
Paketering av osignerat innehåll
aspose_pdf.generated.forms.UnsignedContentAbsorber och UnsignedContent tillhandahåller en behållare för osignerade formulärfält, sidor och annotationer. Detta skiljer sig från den överordnade aspose_pdf.UnsignedContentAbsorber(document), som tar ett riktigt Document och filtrerar dess form_fields/annotations för objekt vars is_signed/signed-attribut är falskt. generated.forms-versionen tar ingen dokument över huvud taget — extract() paketerar helt enkelt vad som helst pages, form_fields och annotations du skickar som nyckelordsargument in i en UnsignedContent-instans, vilket är användbart när de osignerade objekten redan har samlats in någon annanstans och bara behöver den delade behållaren och dess add_page()/remove_page()-stil mutatorer.
from aspose_pdf.generated.forms import UnsignedContentAbsorber
absorber = UnsignedContentAbsorber()
content = absorber.extract(
form_fields=["signature_field", "initials_field"],
annotations=["review_stamp"],
)
print(absorber.has_extracted(), content.form_fields, content.annotations)
content.add_page("page-1")
absorber.reset()
print(absorber.get_extracted())
PDF/A Valideringsalternativ och resultat
aspose_pdf.generated.pdfa.PdfAValidateOptions samlar in valideringsinställningar och inmatningskällor; PdfAValidationResult samlar in resultatet. PdfAValidateOptions.add_input() kontrollerar en strängväg med Path.exists() innan den accepterar den och kastar PdfIOException om filen saknas, så att en anropar får reda på en felaktig inmatningsväg omedelbart i stället för vid valideringstid.
from aspose_pdf import Document
from aspose_pdf.exceptions import PdfIOException
from aspose_pdf.generated.pdfa import PdfAValidateOptions, PdfAValidationResult
with Document() as document:
document.pages.add()
document.save("candidate.pdf")
options = PdfAValidateOptions()
options.set_option("pdfa_version", "PDF/A-2b")
options.add_input("candidate.pdf")
print(options.get_options(), options.inputs)
try:
options.add_input("missing.pdf")
except PdfIOException as error:
print(f"rejected: {error}")
result = PdfAValidationResult()
result.add_error("Missing /OutputIntent for PDF/A-2b")
print(result.is_valid, result.to_dict())
Återexporterade säkerhets- och valideringstyper
aspose_pdf.generated.security importerar CompromiseCheckResult och SignaturesCompromiseDetector direkt från aspose_pdf.security, och CertificationLevel, RevocationStatus, TrustStatus, ValidationMethod, ValidationMode, ValidationOptions, ValidationResult och ValidationStatus från aspose_pdf.validation. Till skillnad från Document och UnsignedContentAbsorber finns det ingen oberoende återimplementation här — båda importvägarna returnerar samma objekt.
from aspose_pdf.generated.security import SignaturesCompromiseDetector
from aspose_pdf.security import SignaturesCompromiseDetector as CanonicalDetector
assert SignaturesCompromiseDetector is CanonicalDetector
detector = SignaturesCompromiseDetector(document=None)
result = detector.check()
print(result.compromised, result.reasons)
Snabbstart
Installera paketet, bygg sedan ett dokument med huvud Document, spara det och kör det genom generated.pdfa-alternativen och resultatobjekten.
git clone https://github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python.git
cd Aspose-PDF-FOSS-for-Python
pip install -e .from aspose_pdf import Document
from aspose_pdf.generated.pdfa import PdfAValidateOptions, PdfAValidationResult
with Document() as document:
page = document.pages.add()
page.add_text("PDF/A candidate", x=72, y=740, font_size=20)
document.save("candidate.pdf")
options = PdfAValidateOptions()
options.set_option("pdfa_version", "PDF/A-2b")
options.add_input("candidate.pdf")
result = PdfAValidationResult()
if not options.inputs:
result.add_error("No inputs registered")
print(result.to_dict())
Stödda format
| Format | Filändelse | Läs | Skriv |
|---|---|---|---|
| Ja | Ja |
PDF-läsning och -skrivning är Aspose.PDF FOSS för Python s kärnfunktion. Varje klass i den här guiden — huvud Document, generated.document.Document-spegeln och PDF/A-hjälparna — arbetar med PDF-indata och -utdata via den delade SimplePdf-motorn; aspose_pdf.generated ändrar vilken klass du importerar, inte vilket filformat som behandlas.
Öppen källkod & licensiering
Aspose.PDF FOSS för Python släpps under MIT-licensen: inga användningsrestriktioner, inga körningsavgifter och inga registreringskrav för kommersiell eller personlig användning. Källkoden finns på github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python, och paketet publiceras på PyPI som aspose-pdf-foss-for-python.