Introductie

Aspose.PDF FOSS voor Python is een nieuwe open-source bibliotheek voor het werken met PDF-documenten vanuit Python-code. Het wordt uitgebracht onder de MIT-licentie en volledig geïmplementeerd in Python — de PDF-parser, schrijver, pagina-rasterizer en encryptieroutines maken deel uit van het pakket zelf, met vereiste afhankelijkheden beperkt tot cryptography en asn1crypto. Optionele extra’s voegen Pillow-gebaseerde afbeeldingondersteuning toe, Brotli-gebaseerde WOFF2-lettertype-decodering, en HarfBuzz-gebaseerde complexe tekstvormgeving.

De bibliotheek is georganiseerd rond de Document-klasse, die een PDF laadt vanaf een pad, bytes of een binaire stream en haar pagina’s beschikbaar maakt via document.pages, een PageCollection die iteratie, indexering en slicing ondersteunt. Vanaf daar behandelt de API het toevoegen van tekst en afbeeldingen aan pagina’s, het lezen en wijzigen van annotaties, het maken en invullen van AcroForm-velden, het versleutelen en ontsleutelen van documenten, en het extraheren van tekst en bijlagen — de bewerkingen die nodig zijn om nieuwe PDF’s te bouwen of met bestaande te werken.

Deze release is bedoeld voor ontwikkelaars die PDF-verwerking nodig hebben binnen een Python-codebase zonder commerciële licentie: het genereren van rapporten en facturen, document-ingestiepijplijnen, formulier-invulautomatisering, en services die PDF-pagina’s moeten renderen naar afbeeldingen of tekst moeten extraheren voor downstream-indexering. Het project bevindt zich momenteel in alfa, dus APIs en functionaliteitsdekking kunnen evolueren vóór de eerste stabiele release. Python 3.11 of nieuwer is vereist.

Wat is inbegrepen

Documentcreatie en laden

PdfDocument() maakt een lege PDF; PdfDocument(source, password=..., limits=...) laadt een bestaande vanuit een pad, ruwe bytes of een binaire stream, en is equivalent aan het aanroepen van PdfDocument().load_from(source, ...). Beide geven een fout bij een ontbrekend bestand, niet‑PDF‑data, of een ontbrekend wachtwoord in plaats van een leeg document terug te geven. PdfDocument is een contextmanager, zodat bronnen automatisch worden vrijgegeven wanneer het with‑blok wordt verlaten.

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}")

Tekst en afbeeldingen toevoegen

Page.add_text plaatst Standard‑14 of ingesloten Unicode‑tekst op een x/y positie met een gegeven font_size; het font argument kan een FontDescriptor, ruwe fontbytes, of een pad naar een TrueType/OpenType font voor Unicode buiten de Standard‑14‑coderingen zijn. Page.add_image plaatst een ruwe, JPEG‑ of PNG‑afbeeldings‑XObject op de pagina op een opgegeven positie en grootte.

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")

Annotaties

Elke Page maakt zijn annotaties beschikbaar via page.annotations, een AnnotationCollection. add(subtype, rect, contents, title, appearance_normal, properties) maakt en voegt een annotatie van een standaard subtype toe, zoals Square, Circle, Line, Highlight of FreeText, en retourneert een Annotation. Het aanroepen van generate_appearance() op de geretourneerde annotatie genereert een weergave-stroom uit zijn geometrie en eigenschappen.

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")

Formuliervelden

document.form retourneert de Form van het document, die AcroForm velden direct creëert: add_text_field(), add_checkbox(), add_radio_group(), add_list_box(), add_combo_box() en add_push_button() accepteren elk een veldnaam, een Page of pagina-index, en een plaatsingsrechthoek, en retourneren een Field. Het instellen van field.value werkt de waarde van het veld bij, en form.flatten() zet het uiterlijk van elk veld om in statische paginainhoud.

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")

Versleuteling

Document.encrypt(user_password, owner_password, permissions) beschermt een document met een gebruikerswachtwoord, een eigenarenwachtwoord en een permissie-bitmasker, en retourneert dezelfde Document voor chaining. Document.decrypt(password) keert de bewerking om, en de is_encrypted eigenschap geeft de huidige staat weer. Het laden van een versleuteld document vereist opnieuw het doorgeven van password= aan de constructor of aan 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}")

Tekstextractie

PdfExtractor bindt aan een bron met bind_pdf(), vervolgens extract_text() loopt door de pagina’s van het document. get_text() retourneert alle geëxtraheerde tekst in één keer, terwijl has_next_page_text() en get_next_page_text() het resultaat pagina voor pagina itereren. PdfExtractor is ook een contextmanager.

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())

Snelstart

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}")

Ondersteunde formaten

FormaatExtensieLezenSchrijven
PDF.pdf✓✓
PNG.png—✓
TIFF.tiff—✓

PDF is het kerninvoer- en uitvoerformaat van de bibliotheek, gelezen via Document/load_from() en geschreven via Document.save. PNG en TIFF zijn pagina-rendering-uitvoer die worden geproduceerd door Page.render, Page.save_as_image en Document.save_page_as_image.


Open source & licenties

Aspose.PDF FOSS voor Python wordt gedistribueerd onder de MIT-licentie, met de volledige broncode beschikbaar op github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python. De licentie staat commercieel gebruik, wijziging en herdistributie toe zonder een aparte overeenkomst.


Aan de slag

Gerelateerde bronnen