Bevezetés
Aspose.PDF FOSS a Python számára egy aspose_pdf.generated alcsomagot tartalmaz négy modullal: document.py, forms.py, pdfa.py és security.py. Ezek egyike sem kerül újraexportálásra a felső szintű aspose_pdf csomagból, ezért ebben az útmutatóban minden osztályt a teljes pontozott útvonala szerint importálunk — from aspose_pdf.generated.document import Document, nem pedig from aspose_pdf import Document.
A négy modul két különböző megközelítést alkalmaz. generated.document, generated.forms és generated.pdfa mindegyike saját osztályokat definiál: független implementációk, amelyek tükrözik a fő csomag Document, UnsignedContent/UnsignedContentAbsorber és PdfAValidateOptions/PdfAValidationResult struktúráját — hasznosak a tükrözött névtér-elrendezés ellen írt kód számára, de valós, különálló osztálykészletet jelentenek aliasok helyett. Ezzel szemben generated.security egyáltalán nem végez újraimplementációt: importálja a CompromiseCheckResult, SignaturesCompromiseDetector és a validációs enumokat közvetlenül a aspose_pdf.security és aspose_pdf.validation modulokból, majd újraexportálja őket, így mindkét importút ugyanarra az osztályobjektumra mutat.
Ez az útmutató mind a négyet lefedi, és egyértelműen jelzi, hogy hol viselkedik a generated osztály eltérően a főcsomag azonos nevű megfelelőjétől — a Document és a UnsignedContentAbsorber is két helyen létezik két különböző implementációval, ami pontosan az a típusú dolog, amely könnyen félreérthető, ha csak név alapján importálunk.
Aspose.PDF FOSS a Python számára egy Python csomag, aspose-pdf-foss-for-python, MIT licenc alatt kiadva, amely a Python 3.11 vagy újabb verzióját igényli. A felső szintű modul neve aspose_pdf; a telepítéshez lásd az alábbi Gyors kezdés szakaszt. A magcsomag csak a cryptography és asn1crypto csomagokra támaszkodik; opcionális kiegészítők adnak Pillow-alapú képkódolást, Brotli-alapú WOFF2 betűtípus támogatást, és HarfBuzz-alapú összetett szövegelrendezést.
Főbb jellemzők
Második dokumentum implementáció
aspose_pdf.generated.document.Document megvalósítja ugyanazt a magfutásciklust, mint a fő aspose_pdf.Document — load_from(), save(), encrypt()/decrypt()/change_passwords(), optimize()/optimize_resources(), repair(), flatten() és validate()/check() — ugyanazon aspose_pdf.engine.simple_pdf.SimplePdf motorra építve. Egy részhalmazát tükrözi a fő Document-nek: nincs pages.add()-stílusú oldalkészítés, nincs form/outlines/attachments, és nincs render_page(). Mivel az osztály neve ütközik a fő csomag Document nevével, importáld alias néven, ha mindkettőre szükség van ugyanabban a modulban.
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()
Aláíratlan tartalom csomagolása
aspose_pdf.generated.forms.UnsignedContentAbsorber és UnsignedContent egy tárolót biztosít aláíratlan űrlapmezőkhöz, oldalakhoz és annotációkhoz. Ez különbözik a felső szintű aspose_pdf.UnsignedContentAbsorber(document)-től, amely egy valódi Document-t vesz, és a form_fields/annotations-jét szűri azokért az elemekért, amelyeknek a is_signed/signed attribútuma hamis. A generated.forms verzió egyáltalán nem vesz dokumentumot — a extract() egyszerűen azt csomagolja, amit pages, form_fields és annotations kulcsszó-argumentumként adsz át neki egy UnsignedContent példányba, ami akkor hasznos, ha az aláíratlan elemek már máshol összegyűltek, és csak a közös tárolóra és annak add_page()/remove_page()-stílusú mutátoraira van szükség.
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 érvényesítési beállítások és eredmények
aspose_pdf.generated.pdfa.PdfAValidateOptions összegyűjti az érvényesítési beállításokat és a bemeneti forrásokat; PdfAValidationResult összegyűjti az eredményt. PdfAValidateOptions.add_input() ellenőrzi a karakterlánc útvonalat a Path.exists() segítségével, mielőtt elfogadná, és PdfIOException kivételt dob, ha a fájl hiányzik, így a hívó azonnal értesül a hibás bemeneti útvonalról, nem pedig az érvényesítéskor.
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())
Újraexportált biztonsági és érvényesítési típusok
aspose_pdf.generated.security importálja a CompromiseCheckResult és SignaturesCompromiseDetector elemeket közvetlenül a aspose_pdf.security-ból, valamint a CertificationLevel, RevocationStatus, TrustStatus, ValidationMethod, ValidationMode, ValidationOptions, ValidationResult és ValidationStatus elemeket a aspose_pdf.validation-ból. A Document és a UnsignedContentAbsorber különböző, itt nincs önálló újraimplementáció — mindkét import útvonal ugyanazt az objektumot adja vissza.
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)
Gyors kezdés
Telepítse a csomagot, majd építsen egy dokumentumot a fő Document segítségével, mentse el, és futtassa le a generated.pdfa beállítások és eredményobjektumok segítségével.
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())
Támogatott formátumok
| Formátum | Kiterjesztés | Olvasás | Írás |
|---|---|---|---|
| Igen | Igen |
A PDF olvasás és írás Aspose.PDF FOSS a Python alapfunkciójához. Az útmutató minden osztálya — a fő Document, a generated.document.Document tükör, és a PDF/A segédeszközök — a megosztott SimplePdf motoron keresztül dolgozik PDF bemenettel és kimenettel; a aspose_pdf.generated azt módosítja, hogy melyik osztályt importálja, nem pedig a feldolgozott fájlformátumot.
Nyílt forráskód és licencelés
Aspose.PDF FOSS a Python számára az MIT licenc alatt kerül kiadásra: nincs felhasználási korlátozás, nincsenek futtatási díjak, és nincs regisztrációs követelmény kereskedelmi vagy személyes használathoz. A forráskód a github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python címen van tárolva, és a csomag a PyPI felületen kerül közzétételre aspose-pdf-foss-for-python néven.