Bevezetés
Aspose.PDF FOSS a Python számára a Document osztályra épül, amely pages, form, outlines, tagged_content és attachments -t teszi elérhetővé a strukturális, dokumentumszintű szerkesztés belépési pontjaiként. Az oldaltartalom hozzáadása mellett a könyvtár lefedi azokat a műveleteket, amelyek egy PDF-et teljes, terjeszthető műtárggá teszik: interaktív űrlapmezők, amelyek strukturált adatokat gyűjtenek és tesznek elérhetővé, dokumentumszintű fájlcsatolások, betűtípus-felfedezés és beágyazás szövegíráshoz, valamint egy könyvjelző-fa a navigációhoz. Ezeknek a területeknek mindegyike hibákat dob egyetlen kivételhierarchián keresztül, amelynek gyökere a AsposePdfException, így a hívók a csomagspecifikus hibákat el tudják kapni anélkül, hogy modulról modulra kellene találgatniuk a kivételtípusokat.
Ez az útmutató azt mutatja, hogyan kell dolgozni ezzel a dokumentum-kezelő felület: megragadni és megkülönböztetni AsposePdfException alosztályokat, létrehozni és olvasni AcroForm mezők a Form és Field, beépíteni és helyreállítani mellékletek keresztül FileSpecification , oldani betűtípusok aFontRepository vagy FontRegistry segítségével, és építeni egy könyvjelző fa a OutlineCollection illetve OutlineItem. Minden szakasz csak a jelenlegi csomagban található osztályokat és módszereket használja.
Aspose.PDF FOSS a Python egy Python csomag, aspose-pdf-foss-for-python, kiadott alatt a MIT licenc, amely igényel PyThon 3.11 vagy újabb. A felső szintű modul neve aspose_pdf. Az alapcsomag csak függ a cryptography és asn1crypto; opcionális kiegészítők hozzáadása Pillow-alapú kép dekódolás, Brotli- alapú WOFF2 betűtípus támogatás, és a HarfBuzz- alapján összetett szöveges elrendezés.
kulcsfontosságú jellemzők
Kivételes kezelés AsposePdfException
Minden csomag-specifikus hiba a(z) Aspose.PDF FOSS-ban a(z) Python számára a AsposePdfException-ból származik. A legtöbb dokumentumfeldolgozási hiba az PdfException alosztályába tartozik, amely továbbá a PdfParseException (hibás bemenet), a PdfSecurityException (titkosítási és jelszóhibák, beleértve a InvalidPasswordException) és a PdfValidationException (strukturális vagy megfelelőségi hibák) alapja. A AsposePdfException utolsóként, a specifikusabb alosztályok után történő elkapása lehetővé teszi, hogy a hívó másként reagáljon egy rossz jelszóra, mint egy sérült fájlra, miközben továbbra is egyetlen tartalékmegoldással rendelkezik minden egyéb esetben, amelyet a csomag kiválthat.
from aspose_pdf import Document
from aspose_pdf.exceptions import (
AsposePdfException,
InvalidPasswordException,
PdfParseException,
)
def open_document(path, password=None):
try:
document = Document()
document.load_from(path, password=password)
return document
except InvalidPasswordException:
print(f"{path}: a correct password is required")
except PdfParseException as error:
print(f"{path}: not a valid PDF ({error})")
except AsposePdfException as error:
# Catches every other aspose_pdf-specific error not handled above.
print(f"{path}: PDF operation failed ({error})")
return None
Interaktív formaterületek
Document.form egy Form felületet biztosít a dokumentum AcroForm mezői felett. Form.add_text_field(), add_checkbox() és add_radio_group() új terminális mezőket hoznak létre, amelyek egy oldalhoz és egy widget téglalaphoz vannak kötve, mindegyik egy Field értéket ad vissza. Field elérhetővé teszi a name, value és field_type elemeket, hogy a meglévő mezőket név szerint ellenőrizhessük és frissíthessük, és a Field.remove() teljesen törli a mezőt.
from aspose_pdf import Document
with Document() as document:
page = document.pages.add()
document.form.add_text_field("customer_name", page, (72, 700, 300, 720))
document.form.add_checkbox("subscribe", page, (72, 670, 90, 688), on_value="Yes")
document.form.add_radio_group(
"plan",
page,
{"Basic": (72, 630, 90, 648), "Pro": (72, 600, 90, 618)},
value="Basic",
)
for field in document.form.fields:
print(field.name, field.field_type, field.value)
for field in document.form.fields:
if field.name == "customer_name":
field.value = "Jane Doe"
document.form.generate_appearances()
document.save("form.pdf")
Beépített fájlok és csatlakozások
Document.add_attachment beágyazza a bájtokat dokumentumszintű fájlcsatolásként, a PDF /Names /EmbeddedFiles névfa struktúrájába mentéskor, opcionális MIME-típussal, leírással és létrehozási/módosítási dátumokkal együtt. Document.embedded_files minden csatolmányt visszaolvas típusos FileSpecificationként (name, contents, mime_type, description, size), és Document.get_embedded_file egyet név szerint keres. FileSpecification.save() a visszaszerzett bájtokat leírja a lemezen.
from aspose_pdf import Document
with Document() as document:
document.pages.add()
document.add_attachment(
"notes.txt",
b"Reviewed and approved.",
mime="text/plain",
description="Reviewer notes",
)
document.save("with-attachment.pdf")
with Document() as document:
document.load_from("with-attachment.pdf")
for spec in document.embedded_files:
print(spec.name, spec.mime_type, spec.size)
notes = document.get_embedded_file("notes.txt")
if notes is not None:
notes.save("notes-recovered.txt")
Font felfedezés és beépítés
FontRepository összegyűjti a betűtípus forrásokat, és a dokumentumban név szerint oldja fel a betűtípusokat. FontRepository.add_source() regisztrál egy FontSource-t, például FolderFontSource-t (katalógust vizsgál, opcionálisan rekurzívan); FontRepository.find_font() és search() ezután a betűtípust család, teljes vagy PostScript név alapján oldják fel, visszaesve a standard betűtípus regisztrációba. Minden egyezés egy FontDescriptor, amely közvetlenül átadható a Page.add_text-nek a betűtípus beágyazásához és részhalmazához. FontRegistry a gyakori nem szabványos neveket (Arial, Times New Roman és hasonlókat) a legközelebbi Standard-14 megfelelőjére térképezi a search_font_by_name() segítségével.
from aspose_pdf import Document, FolderFontSource, FontRepository
from aspose_pdf.font_registry import FontRegistry
FontRepository.add_source(FolderFontSource("./fonts", scan_subdirectories=True))
descriptor = FontRepository.find_font("Open Sans")
if descriptor is None:
# Fall back to the closest Standard-14 match for a common font name.
descriptor = FontRegistry().search_font_by_name("Arial")
with Document() as document:
page = document.pages.add()
page.add_text(
"Rendered with a resolved font",
x=72,
y=700,
font_size=14,
font=descriptor,
)
document.save("font-sample.pdf")
Dokumentumok és könyvjelzők
Document.outlines egy OutlineCollection-t ad vissza, amely a PDF könyvjelzőfájának felső szintű tárolója. OutlineCollection.add egy felső szintű OutlineItem-t fűz hozzá; OutlineItem.add() egy gyermekkönyvjelzőt ágyaz be egy meglévő alá. Minden OutlineItem tartalmaz egy title-t, egy cél page_index-t, valamint is_bold / is_italic megjelenítési jelzőket, és kijelzi saját children listáját.
from aspose_pdf import Document
from aspose_pdf.outlines import OutlineItem
with Document() as document:
document.pages.add()
document.pages.add()
chapter = OutlineItem("Chapter 1: Overview", page_index=0)
document.outlines.add(chapter)
chapter.add(OutlineItem("Section 1.1", page_index=0, is_italic=True))
document.outlines.add(OutlineItem("Chapter 2: Details", page_index=1, is_bold=True))
document.save("bookmarked.pdf")
Gyors indulás
Telepítse a csomagot, majd építsen egy dokumentumot egy könyvjelzőt, dokumentuma metadatait és mellékletet egyesítő egyetlen forgatókönyvben.
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.outlines import OutlineItem
with Document() as document:
page = document.pages.add()
page.add_text("Quarterly Report", x=72, y=740, font_size=20)
document.outlines.add(OutlineItem("Quarterly Report", page_index=0))
document.info = {"Title": "Quarterly Report"}
document.add_attachment(
"source-data.csv", b"quarter,total\nQ1,1000\n", mime="text/csv"
)
document.save("report.pdf")
with Document() as reopened:
reopened.load_from("report.pdf")
print(reopened.page_count, "page(s),", reopened.info.get("Title"))
print([spec.name for spec in reopened.embedded_files])
Támogatott formátumok
| formátum | kiterjesztés | Olvasd el | Írj |
|---|---|---|---|
| Igen | Igen | ||
| TIFF | Tifó | - | Igen |
Page.render, Page.save_as_image és Document.save_page_as_image szintén PNG raster-kibocsátást termel TIFF mellett.
Ezek a lap-resterizációs kimenetek, nem pedig dokumentum töltő formátumok.
Nyílt forrás és licenc
Aspose.PDF FOSS a Python számára MIT licenc alatt kerül kiadásra: nincsenek használati korlátozások, nincs futásidejű díj, é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 érhető el, és a csomag a PyPI oldalon kerül közzétételre aspose-pdf-foss-for-python néven.