Hogyan hozhatunk létre dokumentumokat a generált kompatibilitási modul segítségével a Python rendszerben
Aspose.PDF FOSS a Python számára egy generated kompatibilitási alcsomagot (aspose_pdf.generated) szállít, amely tükrözi a fő API felület stabil részhalmazát — egy Document osztályt a fő életciklus műveletekkel, valamint UnsignedContent/UnsignedContentAbsorber és PdfAValidateOptions/PdfAValidationResult. Az a hívók számára létezik, akik ezt a szűkebb felületet szeretnék kifejezetten a teljes funkcionalitású felső szintű osztályok helyett, és osztályait a import aspose_pdf nem importálja automatikusan — őket közvetlenül a aspose_pdf.generated.*-ből importálod. A csomag tisztán Python, és az alábbi parancs segítségével telepíthető.
Lépésről lépésre útmutató
1. lépés: A csomag telepítése
Telepítsd a Aspose.PDF FOSS csomagot:
git clone https://github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python.git
cd Aspose-PDF-FOSS-for-Python
pip install -e .Ellenőrizd a telepítést a generált Document importálásával és egy megerősítő üzenet kiírásával:
import aspose_pdf
from aspose_pdf.generated.document import Document
print("aspose-pdf-foss-for-python is ready.")2. lépés: A szükséges osztályok importálása
A generated kompatibilitási osztályok a aspose_pdf.generated.document, aspose_pdf.generated.forms és aspose_pdf.generated.pdfa helyen találhatók — importáld őket explicit módon almodul szerint:
import aspose_pdf
from aspose_pdf.generated.document import Document
from aspose_pdf.generated.forms import UnsignedContent, UnsignedContentAbsorber
from aspose_pdf.generated.pdfa import PdfAValidateOptions, PdfAValidationResult3. lépés: Dokumentum létrehozása és betöltése
Document(source) azonnal betöltődik, ha forrás kerül megadásra; a Document() argumentum nélküli meghívása egy üres példányt hoz létre, amelyet később a load_from segítségével tölthetsz be. Mindkettő elfogad fájl elérési utat, bytes, vagy bináris adatfolyamot:
from aspose_pdf.generated.document import Document
document = Document("report.pdf")
print(f"Loaded {len(document.pages)} page(s)")
empty_doc = Document()
empty_doc.load_from("report.pdf")7. lépés: Aláíratlan űrlaptartalom kinyerése
UnsignedContentAbsorber kinyeri azokat az oldalakat, űrlapmezőket és annotációkat, amelyek nem részei digitális aláírásnak. Hívd meg a extract() függvényt a kinyerés végrehajtásához, a has_extracted() ellenőrzéséhez, hogy lefutott-e, és a get_extracted() segítségével újra lekérheted az eredményt anélkül, hogy újra kinyernéd:
from aspose_pdf.generated.forms import UnsignedContentAbsorber
absorber = UnsignedContentAbsorber()
unsigned = absorber.extract()
print(f"Unsigned pages: {len(unsigned.pages)}")
print(f"Unsigned form fields: {len(unsigned.form_fields)}")
if absorber.has_extracted():
same_result = absorber.get_extracted()8. lépés: UnsignedContent tároló manuális felépítése
UnsignedContent egy egyszerű tároló is, amelyet saját magad tölthetsz fel a add_page, add_form_field és add_annotation segítségével — mindegyikhez tartozik egy megfelelő remove_* metódus, és a reset() egyszerre törli mindhárom gyűjteményt:
from aspose_pdf.generated.forms import UnsignedContent
content = UnsignedContent()
content.add_page("page-1")
content.add_annotation("signature-placeholder")
print(content) # UnsignedContent(pages=1, form_fields=0, annotations=1)
content.remove_annotation("signature-placeholder")
content.reset()9. lépés: PDF/A érvényesítés konfigurálása és futtatása
PdfAValidateOptions összegyűjti a bemeneteket és a beállításokat egy érvényesítési futáshoz. add_input(source) regisztrál egy bemenetet, set_option(key, value) tárol egy névvel ellátott opciót, és get_options() visszaadja a tárolt opciók másolatát. PdfAValidationResult tartalmazza az eredményt — add_error(message) érvénytelennek jelöli az eredményt és hozzáfűzi a errors-hez, és to_dict() megjeleníti a is_valid és errors egyszerű szótárként:
from aspose_pdf.generated.pdfa import PdfAValidateOptions, PdfAValidationResult
options = PdfAValidateOptions()
options.add_input("report.pdf")
options.set_option("pdfa_version", "1b")
print(options.get_options())
result = PdfAValidationResult()
result.add_error("Font 'Arial' is not embedded")
print(result.is_valid) # False
print(result.to_dict())Gyakori problémák és megoldások
ImportError or AttributeError hozzáféréskor aspose_pdf.generated
A generated alcsomag nincs újraexportálva a import aspose_pdf által — importálja az egyes osztályokat a saját almoduljukból, például a from aspose_pdf.generated.document import Document használatával, ahelyett, hogy a aspose_pdf.generated.Document-ra számítana egy egyszerű import aspose_pdf után.
A generáltak összezavarása Document a fővel aspose_pdf.Document
aspose_pdf.Document (a import aspose_pdf által újraexportált felső szintű osztály) nagyobb felületet biztosít — olyan metódusokat ad hozzá, mint a validate_pdfa, a iter_pages és a redact_text, amelyeket a aspose_pdf.generated.document.Document nem valósít meg. Ha egy metódus hiányzik a generált Document-ban, ellenőrizze, hogy nem a felső szintű Document osztályhoz tartozik-e.
save() raises AsposePdfException: Cannot save a disposed document
close()/dispose() véglegesen elengedi a dokumentum belső állapotát — egy eldobott Document nem menthető, optimalizálható vagy javítható később. Végezze el az összes hátralévő műveletet a close() meghívása előtt, vagy töltse újra a forrásból egy friss Document(...) hívással.
change_passwords raises PdfSecurityException: Document is not encrypted
change_passwords csak egy már titkosított dokumentum jelszavát forgatja. Hívja először a encrypt(password) függvényt, vagy ellenőrizze a document.is_encrypted értéket, mielőtt megpróbálná megváltoztatni a jelszót.
PdfAValidationResult.add_error raises TypeError
add_error egy str argumentumot igényel. Konvertálja a kivételobjektumokat vagy egyéb hiba részleteket karakterlánccá (str(error)) mielőtt átadná őket a add_error számára.
Gyakran Ismételt Kérdések
Miért létezik a aspose_pdf.generated a fő aspose_pdf.Document mellett?
Tükrözi a Aspose.PDF API szűkebb, stabil részhalmazát azon kód számára, amely a csökkent felület ellen van írva. Az új kód, amelynek nem kifejezetten szüksége van erre a kompatibilitási részhalmazra, általában a felső szintű aspose_pdf.Document-t kellene használni, amely több műveletet támogat (PDF/A átalakítás, oldal iteráció, szöveg redigálás és egyebek).
Elfogadja a UnsignedContentAbsorber.extract() egy Document-t a beolvasáshoz?
extract() pozíciós és kulcsszavas argumentumokat fogad, amelyek a visszaadott UnsignedContent pages, form_fields és annotations gyűjteményeit töltik fel – add meg a kívánt gyűjteményeket kulcsszavas argumentumokként (pages=, form_fields=, annotations=).
Mi történik, ha a reset()-t meghívom a UnsignedContentAbsorber-n, mielőtt bármit kinyernék?
Törli az esetleg korábban kinyert eredményt. Ezután a get_extracted() visszaadja a None-t, és a has_extracted() visszaadja a False-t, amíg a extract() újra nem hívódik.
Lehet a PdfAValidateOptions.add_input-t többször meghívni?
Igen — minden hívás egy új bejegyzést fűz a inputs listához, és visszaadja a self-t, így a hívások láncolhatók: options.add_input("a.pdf").add_input("b.pdf").
Különbözik a close() a dispose()-től a generált Document-ban?
Nem — close() egy közvetlen álnév, amely meghívja a dispose()-t ugyanazokkal az argumentumokkal; bármelyik név felszabadítja a dokumentum erőforrásait.