Introducere

Aspose.PDF FOSS pentru Python este o bibliotecă nouă open-source pentru lucrul cu documente PDF din cod Python. Este lansată sub licența MIT și implementată integral în Python — parserul PDF, scriitorul, rasterizatorul de pagini și rutinele de criptare fac parte din pachetul în sine, cu dependențe necesare limitate la cryptography și asn1crypto. Extensiile opționale adaugă suport pentru imagini bazat pe Pillow, decodare de fonturi WOFF2 bazată pe Brotli și modelare complexă a textului bazată pe HarfBuzz.

Biblioteca este organizată în jurul clasei Document, care încarcă un PDF dintr-o cale, din octeți sau dintr-un flux binar și expune paginile prin document.pages, un PageCollection care suportă iterarea, indexarea și segmentarea. De acolo, API acoperă adăugarea de text și imagini pe pagini, citirea și modificarea adnotărilor, crearea și completarea câmpurilor AcroForm, criptarea și decriptarea documentelor și extragerea textului și a atașamentelor — operațiile necesare pentru a construi PDF-uri noi sau pentru a lucra cu cele existente.

Această versiune este destinată dezvoltatorilor care au nevoie de procesare PDF în cadrul unui cod Python fără o licență comercială: generarea de rapoarte și facturi, conductele de ingestie a documentelor, automatizarea completării formularelor și serviciile care trebuie să redea paginile PDF în imagini sau să extragă text pentru indexare ulterioară. Proiectul este în prezent în stadiul alpha, astfel încât API-urile și acoperirea funcționalităților pot evolua înainte de prima versiune stabilă. Este necesar Python 3.11 sau o versiune ulterioară.

Ce este inclus

Crearea și încărcarea documentelor

PdfDocument() creează un PDF gol; PdfDocument(source, password=..., limits=...) încarcă unul existent dintr-o cale, din octeți brute sau dintr-un flux binar și este echivalent cu apelarea PdfDocument().load_from(source, ...). Ambele generează o eroare în caz de fișier lipsă, date care nu sunt PDF sau parolă lipsă, în loc să returneze un document gol. PdfDocument este un manager de context, astfel încât resursele sunt eliberate automat când blocul with se încheie.

from aspose_pdf import Document

with Document() as document:
    page = document.pages.add()
    page.add_text("Generated by Aspose.PDF FOSS", x=72, y=720, font_size=14)
    document.save("report.pdf")

with Document("report.pdf") as document:
    print(f"Pages: {document.page_count}")
    print(f"PDF version: {document.version}")

Adăugarea textului și a imaginilor

Page.add_text plasează text Standard‑14 sau Unicode încorporat la o poziție x/y cu un font_size dat; argumentul font poate fi un FontDescriptor, octeți brut de font, sau o cale către un font TrueType/OpenType pentru Unicode în afara codărilor Standard‑14. Page.add_image plasează un XObject de imagine brut, JPEG sau PNG pe pagină la o poziție și dimensiune specificate.

from aspose_pdf import Document

with Document() as document:
    page = document.pages.add()
    page.add_text(
        "Quarterly Summary",
        x=72,
        y=740,
        font_size=16,
    )
    page.add_image(
        "chart.png",
        x=72,
        y=420,
        width=300,
        height=200,
    )
    document.save("summary.pdf")

Anotări

Fiecare Page expune anotările sale prin page.annotations, un AnnotationCollection. add(subtype, rect, contents, title, appearance_normal, properties) creează și inserează o anotare de tip standard, cum ar fi Square, Circle, Line, Highlight sau FreeText, returnând un Annotation. Apelarea lui generate_appearance() pe anotarea returnată sintetizează un flux de apariție din geometria și proprietățile sale.

from aspose_pdf import Document

with Document() as document:
    page = document.pages.add()
    annotation = page.annotations.add(
        "Square",
        (100, 600, 300, 680),
        "Needs review",
        properties={"C": [1, 0, 0]},
    )
    annotation.generate_appearance()
    document.save("annotated.pdf")

Câmpuri de formular

document.form returnează Form documentului, care creează direct câmpuri AcroForm: add_text_field(), add_checkbox(), add_radio_group(), add_list_box(), add_combo_box() și add_push_button() acceptă fiecare un nume de câmp, un Page sau indice de pagină și un dreptunghi de plasare, returnând un Field. Setarea lui field.value actualizează valoarea câmpului, iar form.flatten() încorporează aspectul fiecărui câmp în conținutul static al paginii.

from aspose_pdf import Document

with Document() as document:
    page = document.pages.add()
    form = document.form
    field = form.add_text_field(
        "customer_name",
        page,
        (72, 700, 300, 720),
    )
    field.value = "Jane Doe"
    form.flatten()
    document.save("form.pdf")

Criptare

Document.encrypt(user_password, owner_password, permissions) protejează un document cu o parolă de utilizator, o parolă de proprietar și o mască de permisiuni, returnând același Document pentru concatenare. Document.decrypt(password) inversează operația, iar proprietatea is_encrypted raportează starea curentă. Încărcarea din nou a unui document criptat necesită transmiterea password= la constructor sau la load_from().

from aspose_pdf import Document

with Document("report.pdf") as document:
    document.encrypt(user_password="user-pass", owner_password="owner-pass", permissions=0)
    document.save("encrypted.pdf")

with Document("encrypted.pdf", password="user-pass") as document:
    print(f"Encrypted: {document.is_encrypted}")

Extracție de text

PdfExtractor se leagă de o sursă cu bind_pdf(), apoi extract_text() parcurge paginile documentului. get_text() returnează tot textul extras dintr-o dată, în timp ce has_next_page_text() și get_next_page_text() iterează rezultatul pagină cu pagină. PdfExtractor este, de asemenea, un manager de context.

from aspose_pdf import PdfExtractor

with PdfExtractor() as extractor:
    extractor.bind_pdf("report.pdf")
    extractor.extract_text()
    while extractor.has_next_page_text():
        print(extractor.get_next_page_text())

Începe rapid

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

with Document() as document:
    page = document.pages.add()
    page.add_text(
        "Hello from Aspose.PDF FOSS!",
        x=72,
        y=720,
        font_size=18,
    )
    document.save("hello.pdf")

with Document("hello.pdf") as document:
    print(f"Pages: {document.page_count}")
    print(f"PDF version: {document.version}")

Formate acceptate

FormatExtensieCiteșteScrie
PDF.pdf✓✓
PNG.png—✓
TIFF.tiff—✓

PDF este formatul principal de intrare și ieșire al bibliotecii, citit prin Document/load_from() și scris prin Document.save. PNG și TIFF sunt ieșiri de redare a paginilor produse de Page.render, Page.save_as_image și Document.save_page_as_image.


Open Source și Licențiere

Aspose.PDF FOSS pentru Python este distribuit sub licența MIT, cu sursa completă disponibilă la github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python. Licența permite utilizarea comercială, modificarea și redistribuirea fără un acord separat.


Începeți

Resurse conexe