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átumkiterjesztésOlvasd elÍrj
PDFPDFIgenIgen
TIFFTifó-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.


Kezdődik a

kapcsolódó források