Inleiding

Aspose.PDF FOSS voor Python bevat een aspose_pdf.generated subpakket met vier modules: document.py, forms.py, pdfa.py en security.py. Geen van hen wordt opnieuw geëxporteerd vanuit het top-level aspose_pdf pakket, dus elke klasse in deze gids wordt geïmporteerd via zijn volledige puntnotatie — from aspose_pdf.generated.document import Document, niet from aspose_pdf import Document.

De vier modules hanteren twee verschillende benaderingen. generated.document, generated.forms en generated.pdfa definiëren elk hun eigen klassen: onafhankelijke implementaties die de vorm van het hoofd-pakket’s Document, UnsignedContent/UnsignedContentAbsorber en PdfAValidateOptions/PdfAValidationResult weerspiegelen — nuttig voor code die tegen die gespiegeld namespace-structuur is geschreven, maar het is een echte, afzonderlijke set klassen in plaats van aliassen. generated.security daarentegen voert helemaal geen herimplementatie uit: het importeert CompromiseCheckResult, SignaturesCompromiseDetector en de validatie-enums rechtstreeks van aspose_pdf.security en aspose_pdf.validation en exporteert ze opnieuw, zodat beide importpaden naar hetzelfde klasse-object verwijzen.

Deze gids behandelt alle vier, en is expliciet over waar een generated klasse zich anders gedraagt dan de tegenhanger in het hoofd-pakket met dezelfde naam — Document en UnsignedContentAbsorber bestaan beide op twee plaatsen met twee verschillende implementaties, wat precies het soort situatie is dat gemakkelijk verkeerd kan gaan bij importeren uitsluitend op naam.

Aspose.PDF FOSS voor Python is een Python pakket, aspose-pdf-foss-for-python, uitgebracht onder de MIT-licentie, met als vereiste Python 3.11 of hoger. De top-level modulenaam is aspose_pdf; zie de sectie Snelstart hieronder voor installatie. Het kernpakket hangt alleen af van cryptography en asn1crypto; optionele extra’s voegen Pillow-gebaseerde afbeeldingdecode, Brotli-gebaseerde WOFF2-lettertypeondersteuning en HarfBuzz-gebaseerde complexe tekstlay-out toe.


Belangrijkste kenmerken

Een tweede documentimplementatie

aspose_pdf.generated.document.Document implementeert dezelfde kernlevenscyclus als de hoofd-aspose_pdf.Documentload_from(), save(), encrypt()/decrypt()/change_passwords(), optimize()/optimize_resources(), repair(), flatten(), en validate()/check() — bovenop dezelfde aspose_pdf.engine.simple_pdf.SimplePdf engine. Het spiegelt een subset van de hoofd-Document: het heeft geen pages.add()-achtige paginacreatie, geen form/outlines/attachments, en geen render_page(). Omdat de klassenaam conflicteert met de Document van het hoofdpakket, importeer het onder een alias wanneer beide in dezelfde module nodig zijn.

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()

Ongetekende inhoud verpakken

aspose_pdf.generated.forms.UnsignedContentAbsorber en UnsignedContent bieden een container voor ongetekende formuliervelden, pagina’s en annotaties. Dit verschilt van de bovenliggende aspose_pdf.UnsignedContentAbsorber(document), die een echte Document neemt en zijn form_fields/annotations filtert op items waarvan het is_signed/signed-attribuut onwaar is. De generated.forms-versie neemt helemaal geen document — extract() verpakt eenvoudigweg alles wat pages, form_fields en annotations je als sleutelwoordargumenten doorgeeft in een UnsignedContent-instantie, wat handig is wanneer de ongetekende items al ergens anders zijn verzameld en alleen de gedeelde container en zijn add_page()/remove_page()-achtige mutatoren nodig hebben.

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 Validatieopties en -resultaten

aspose_pdf.generated.pdfa.PdfAValidateOptions verzamelt validatie-instellingen en invoerbronnen; PdfAValidationResult verzamelt het resultaat. PdfAValidateOptions.add_input() controleert een stringpad met Path.exists() voordat het wordt geaccepteerd en werpt PdfIOException als het bestand ontbreekt, zodat een aanroeper direct op de hoogte wordt van een onjuiste invoerpad in plaats van pas tijdens de validatie.

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())

Herëxporteerde beveiligings- en validatietypen

aspose_pdf.generated.security importeert CompromiseCheckResult en SignaturesCompromiseDetector rechtstreeks vanuit aspose_pdf.security, en CertificationLevel, RevocationStatus, TrustStatus, ValidationMethod, ValidationMode, ValidationOptions, ValidationResult en ValidationStatus vanuit aspose_pdf.validation. In tegenstelling tot Document en UnsignedContentAbsorber is er hier geen onafhankelijke herimplementatie — beide importpaden geven hetzelfde object terug.

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)

Snelstart

Installeer het pakket, bouw vervolgens een document met de hoofd Document, sla het op, en voer het uit met de generated.pdfa opties en resultaatobjecten.

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())

Ondersteunde formaten

FormaatExtensieLezenSchrijven
PDFpdfJaJa

PDF lezen en schrijven is Aspose.PDF FOSS voor de kernfunctie van Python. Elke klasse in deze gids — de hoofd Document, de generated.document.Document spiegel, en de PDF/A helpers — werkt met PDF-invoer en -uitvoer via de gedeelde SimplePdf engine; aspose_pdf.generated verandert welke klasse je importeert, niet welk bestandsformaat wordt verwerkt.


Open source & licenties

Aspose.PDF FOSS voor Python is uitgebracht onder de MIT-licentie: geen gebruiksbeperkingen, geen runtime-kosten, en geen registratievereisten voor commercieel of persoonlijk gebruik. De broncode wordt gehost op github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python, en het pakket wordt gepubliceerd op PyPI als aspose-pdf-foss-for-python.


Aan de slag

Gerelateerde bronnen