Introduktion
Aspose.PDF FOSS för Python är ett nytt open-source-bibliotek för att arbeta med PDF-dokument från Python-kod. Det är släppt under MIT-licensen och implementerat helt i Python — PDF-parseren, skrivaren, sidrasterisatorn och krypteringsrutinerna är en del av paketet självt, med nödvändiga beroenden begränsade till cryptography och asn1crypto. Valfria tillägg lägger till Pillow-baserat bildstöd, Brotli-baserad WOFF2-teckensnittsdekodning och HarfBuzz-baserad komplex textformning.
Biblioteket är organiserat kring klassen Document, som läser in en PDF från en sökväg, byte-sekvens eller en binär ström och exponerar dess sidor via document.pages, en PageCollection som stödjer iteration, indexering och skivning. Därefter täcker API att lägga till text och bilder på sidor, läsa och modifiera annotationer, skapa och fylla AcroForm-fält, kryptera och dekryptera dokument samt extrahera text och bilagor — de operationer som behövs för att bygga nya PDF-filer eller arbeta med befintliga.
Denna version är för utvecklare som behöver PDF-behandling i en Python-kodbas utan kommersiell licens: generering av rapporter och fakturor, dokument-ingestions-pipelines, automatisering av formulärifyllning och tjänster som behöver rendera PDF-sidor till bilder eller extrahera text för efterföljande indexering. Projektet är för närvarande i alfa, så APIs och funktionsomfattning kan förändras innan den första stabila releasen. Python 3.11 eller senare krävs.
Vad som ingår
Dokumentskapande och inläsning
PdfDocument() skapar en tom PDF; PdfDocument(source, password=..., limits=...) laddar en befintlig från en sökväg, råa byte eller en binär ström, och är ekvivalent med att anropa PdfDocument().load_from(source, ...). Båda kastar ett undantag vid saknad fil, icke‑PDF‑data eller saknat lösenord istället för att returnera ett tomt dokument. PdfDocument är en context manager, så resurser frigörs automatiskt när with-blocket avslutas.
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}")
Lägga till text och bilder
Page.add_text placerar Standard‑14 eller inbäddad Unicode-text på en x/y-position med en given font_size; font-argumentet kan vara en FontDescriptor, råa teckensnittsbitar eller en sökväg till ett TrueType/OpenType-teckensnitt för Unicode utanför Standard‑14-kodningarna. Page.add_image placerar ett rått, JPEG- eller PNG‑bild‑XObject på sidan på en specificerad position och storlek.
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")
Anmärkningar
Varje Page exponerar sina anmärkningar via page.annotations, en AnnotationCollection. add(subtype, rect, contents, title, appearance_normal, properties) skapar och infogar en anmärkning av en standardundertyp såsom Square, Circle, Line, Highlight eller FreeText, och returnerar en Annotation. Att anropa generate_appearance() på den returnerade anmärkningen syntetiserar ett utseendeström från dess geometri och egenskaper.
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")
Formulärfält
document.form returnerar dokumentets Form, som skapar AcroForm fält direkt: add_text_field(), add_checkbox(), add_radio_group(), add_list_box(), add_combo_box() och add_push_button() accepterar var och en ett fältnamn, ett Page eller sidindex, och en placeringsrektangel, och returnerar en Field. Att sätta field.value uppdaterar fältets värde, och form.flatten() bakar in varje fälts utseende i statiskt sidinnehåll.
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")
Kryptering
Document.encrypt(user_password, owner_password, permissions) skyddar ett dokument med ett användarlösenord, ett ägarlösenord och en behörighetsbitmask, och returnerar samma Document för kedjning. Document.decrypt(password) vänder operationen, och is_encrypted-egenskapen rapporterar det aktuella tillståndet. Att ladda ett krypterat dokument igen kräver att password= skickas till konstruktorn eller till 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}")
Textextraktion
PdfExtractor binder till en källa med bind_pdf(), sedan extract_text() går igenom dokumentets sidor. get_text() returnerar all extraherad text på en gång, medan has_next_page_text() och get_next_page_text() itererar resultatet sida för sida. PdfExtractor är också en kontext-hanterare.
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())
Snabbstart
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}")
Stödda format
| Format | Filändelse | Läsa | Skriva |
|---|---|---|---|
| ✓ | ✓ | ||
| PNG | .png | — | ✓ |
| TIFF | .tiff | — | ✓ |
PDF är bibliotekets huvudsakliga in- och utmatningsformat, läses via Document/load_from() och skrivs via Document.save. PNG och TIFF är sidrenderingsutdata som produceras av Page.render, Page.save_as_image och Document.save_page_as_image.
Öppen källkod & licensiering
Aspose.PDF FOSS för Python distribueras under MIT-licensen, med hela källkoden tillgänglig på github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python. Licensen tillåter kommersiell användning, modifiering och vidaredistribution utan separat avtal.