Introducere

Aspose.PDF FOSS pentru Python include un subpachet aspose_pdf.generated cu patru module: document.py, forms.py, pdfa.py și security.py. Niciunul dintre ele nu este reexportat din pachetul de nivel superior aspose_pdf, astfel încât fiecare clasă din acest ghid este importată prin calea sa completă cu puncte — from aspose_pdf.generated.document import Document, nu from aspose_pdf import Document.

Cele patru module adoptă două abordări diferite. generated.document, generated.forms și generated.pdfa definesc fiecare propriile clase: implementări independente care reflectă structura Document, UnsignedContent/UnsignedContentAbsorber și PdfAValidateOptions/PdfAValidationResult din pachetul principal — utile pentru cod scris împotriva acelei ierarhii de namespace oglindite, dar constituie un set real și separat de clase, nu aliasuri. generated.security, pe de altă parte, nu realizează nicio reimplementare: importă CompromiseCheckResult, SignaturesCompromiseDetector și enumerările de validare direct din aspose_pdf.security și aspose_pdf.validation și le reexportă, astfel încât ambele căi de import se rezolvă la același obiect de clasă.

Acest ghid acoperă toate cele patru și este explicit în privința locului în care o clasă generated se comportă diferit față de omologul său din pachetul principal cu același nume — Document și UnsignedContentAbsorber există în două locuri cu două implementări diferite, ceea ce este exact tipul de situație ușor de greșit atunci când se importă doar pe bază de nume.

Aspose.PDF FOSS pentru Python este un pachet Python, aspose-pdf-foss-for-python, lansat sub licența MIT, necesitând Python 3.11 sau o versiune ulterioară. Numele modulului său de nivel superior este aspose_pdf; consultați secțiunea Începe rapid de mai jos pentru instalare. Pachetul de bază depinde doar de cryptography și asn1crypto; suplimentele opționale adaugă decodare de imagini bazată pe Pillow, suport pentru fonturi WOFF2 bazat pe Brotli și aranjament complex de text bazat pe HarfBuzz.


Funcționalități cheie

Implementarea unui al doilea document

aspose_pdf.generated.document.Document implementează același ciclu de viață de bază ca și principalul aspose_pdf.Documentload_from(), save(), encrypt()/decrypt()/change_passwords(), optimize()/optimize_resources(), repair(), flatten(), și validate()/check() — pe deasupra aceluiași motor aspose_pdf.engine.simple_pdf.SimplePdf. Reflectă un subset al principalului Document: nu are autorare de pagini în stil pages.add(), nu are form/outlines/attachments, și nu are render_page(). Deoarece numele clasei intră în conflict cu Document din pachetul principal, importați-l sub un alias când ambele sunt necesare în același 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()

Împachetarea conținutului nesemnat

aspose_pdf.generated.forms.UnsignedContentAbsorber și UnsignedContent oferă un container pentru câmpuri de formular, pagini și adnotări nesemnate. Aceasta este diferită de aspose_pdf.UnsignedContentAbsorber(document) de nivel superior, care primește un Document real și filtrează form_fields/annotations sale pentru elemente ale căror atribut is_signed/signed este fals. Versiunea generated.forms nu primește niciun document — extract() pur și simplu împachetează orice pages, form_fields și annotations îi transmiteți ca argumente cu nume într-o instanță UnsignedContent, ceea ce este util când elementele nesemnate au fost deja colectate în altă parte și au nevoie doar de containerul partajat și de mutatoarele sale în stil add_page()/remove_page().

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 Opțiuni de validare și rezultate

aspose_pdf.generated.pdfa.PdfAValidateOptions colectează setările de validare și sursele de intrare; PdfAValidationResult colectează rezultatul. PdfAValidateOptions.add_input() verifică un șir de cale cu Path.exists() înainte de a-l accepta și aruncă PdfIOException dacă fișierul lipsește, astfel încât un apelant să afle imediat despre o cale de intrare incorectă, în loc să afle la momentul validării.

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

Tipuri de securitate și validare reexportate

aspose_pdf.generated.security importă CompromiseCheckResult și SignaturesCompromiseDetector direct din aspose_pdf.security, și CertificationLevel, RevocationStatus, TrustStatus, ValidationMethod, ValidationMode, ValidationOptions, ValidationResult și ValidationStatus din aspose_pdf.validation. Spre deosebire de Document și UnsignedContentAbsorber, nu există o reimplementare independentă aici — ambele căi de import returnează același obiect.

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)

Începe rapid

Instalați pachetul, apoi construiți un document cu Document principal, salvați-l și rulați-l prin opțiunile și obiectele de rezultat generated.pdfa.

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

Formate suportate

FormatExtensieCiteșteScrie
PDFpdfDaDa

Citirea și scrierea PDF este Aspose.PDF FOSS pentru funcția de bază a Python. Fiecare clasă din acest ghid — principalul Document, oglinda generated.document.Document și ajutoarele PDF/A — operează pe intrarea și ieșirea PDF prin motorul SimplePdf partajat; aspose_pdf.generated schimbă clasa pe care o importați, nu formatul de fișier procesat.


Open Source & Licențiere

Aspose.PDF FOSS pentru Python este lansat sub licența MIT: fără restricții de utilizare, fără taxe de rulare și fără cerințe de înregistrare pentru utilizare comercială sau personală. Codul sursă este găzduit la github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python, iar pachetul este publicat pe PyPI ca aspose-pdf-foss-for-python.


Începere

Resurse conexe