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
| Formaat | Extensie | Lezen | Schrijven |
|---|---|---|---|
| ✓ | ✓ | ||
| 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.