Introductie
document.py, de module die Aspose.PDF FOSS definieert voor de Document-klasse van Python, beschrijft het als een klasse die “de native PDF-engine omsluit”. Concreet is die engine aspose_pdf.engine.simple_pdf.SimplePdf: Document.load_from bouwt een SimplePdf-instantie, en elke documentniveau-operatie — opslaan, optimaliseren, repareren, encrypten — draagt die uit. Hetzelfde geldt voor rendering: Page.render en Document.render_page roepen beiden aspose_pdf.engine.rasterizer aan.
De meeste toepassingscode hoeft nooit verder te kijken dan Document en Page. Maar aspose_pdf.engine is een gewoon, importeerbaar Python-pakket, en verschillende van de onderdelen onder de façade zijn op zichzelf nuttig: de rasterizer die een pagina naar pixels omzet, de stream-filter-codecs die PDF-inhoudsstromen comprimeren en decomprimeren, en de encryptie-hulpmiddelen die de AES-CBC- en RC4-algoritmen implementeren waarop PDF-beveiligingshandlers vertrouwen. In tegenstelling tot het hoofd-pakket worden de submodules van aspose_pdf.engine niet opnieuw geëxporteerd vanuit de top-level aspose_pdf — de enige uitzondering is RasterizedPage, overbrugd via aspose_pdf.visualization — zodat alles eronder wordt geïmporteerd via het volledige punt-gescheiden pad, bijvoorbeeld from aspose_pdf.engine.filters import StreamDecoder.
Aspose.PDF FOSS voor Python is een Python-pakket, aspose-pdf-foss-for-python, uitgebracht onder de MIT-licentie, en vereist Python 3.11 of later. De naam van het top-level module is aspose_pdf. Het core-pakket hangt alleen af van cryptography en asn1crypto; optionele extra’s voegen Pillow-gebaseerde afbeeldingsdecode, Brotli-gebaseerde WOFF2-lettertype-ondersteuning, en HarfBuzz-gebaseerde complexe tekstlay-out toe.
Belangrijkste kenmerken
Paginas renderen met de rasterisatie-engine
Document.render_page(page_index, dpi=..., scale=..., background=..., antialias=...) en zijn Page.render tegenhanger retourneren beide een RasterizedPage — een verpakt RGB-raster geproduceerd door de rasterizer van de engine. RasterizedPage exposeert width, height, en ruwe pixels-bytes, plus get_pixel() voor een enkel-pixel-opzoeking, to_png() / to_tiff() voor in-memory gecodeerde bytes, en save() om direct een .png of .tif/.tiff-bestand te schrijven. Werken met het object in het geheugen — in plaats van alleen op schijf op te slaan — is handig wanneer een aanroeper de pixels wil inspecteren of transformeren voordat hij beslist ze te behouden.
from aspose_pdf import Document
with Document() as document:
page = document.pages.add()
page.add_text("Rendered by the engine", x=72, y=700, font_size=18)
raster = document.render_page(0, dpi=150)
print(raster.width, raster.height)
corner = raster.get_pixel(0, 0)
print("top-left pixel:", corner)
with open("page-0.png", "wb") as handle:
handle.write(raster.to_png())
raster.save("page-0.tiff")
De Stream Filter Engine
PDF-inhoud en objectstreams worden gecomprimeerd met benoemde filters zoals FlateDecode en LZWDecode. aspose_pdf.engine.filters.StreamEncoder.encode(data, filters, decode_parms=None) en StreamDecoder.decode(data, filters, decode_parms, *, limits=None, max_output_bytes=None) implementeren de encode- en decode-kant van die filterketen — dezelfde codecs die de engine intern gebruikt wanneer hij de streams van een document schrijft en leest. Beide accepteren een enkele filternaam of een lijst voor gekoppelde filters, en StreamDecoder.decode() werpt PdfValidationException bij een niet-herkende filternaam in plaats van stilzwijgend onjuiste bytes terug te geven.
from aspose_pdf.engine.filters import StreamDecoder, StreamEncoder
raw = b"Sample content-stream payload.\n" * 40
compressed = StreamEncoder.encode(raw, "FlateDecode")
restored = StreamDecoder.decode(compressed, "FlateDecode", None)
assert restored == raw
print(f"{len(raw)} bytes -> {len(compressed)} bytes with FlateDecode")
De Encryptie-engine
aspose_pdf.engine.encryption.EncryptionUtils is de static-method utility-klasse waar SimplePdf voor elke versleuteling-gerelateerde bewerking naar verwijst: Document.encrypt, decrypt() en change_passwords() leiden allemaal tot EncryptionUtils-aanroepen onder de motorkap. Zijn methoden implementeren AES-CBC en RC4-versleuteling direct (encrypt_aes_cbc, decrypt_aes_cbc, encrypt_rc4, decrypt_rc4), sleutelafleiding voor de PDF-standaardbeveiligingshandler-revisies (compute_owner_key_v4, compute_user_key_v4, compute_user_owner_keys_v6), en generate_file_id() voor de willekeurige 16-byte-ID die nieuwe documenten nodig hebben.
from aspose_pdf.engine.encryption import EncryptionUtils
key = b"0123456789ABCDEF" # 16 bytes -> AES-128
ciphertext = EncryptionUtils.encrypt_aes_cbc(key, b"Reviewer notes: approved")
plaintext = EncryptionUtils.decrypt_aes_cbc(key, ciphertext)
assert plaintext == b"Reviewer notes: approved"
file_id = EncryptionUtils.generate_file_id()
print(file_id.hex())
Snelstart
Installeer het pakket en render vervolgens een pagina rechtstreeks vanuit de engine-laag in een enkel script.
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("Engine-rendered page", x=72, y=740, font_size=20)
raster = document.render_page(0, dpi=150)
raster.save("engine-render.png")
document.save("engine-quickstart.pdf")
print("Saved engine-quickstart.pdf and engine-render.png")
Ondersteunde formaten
| Formaat | Extensie | Lezen | Schrijven |
|---|---|---|---|
| Ja | Ja | ||
| TIFF | tiff | - | Ja |
PDF lezen en schrijven is Aspose.PDF FOSS voor de kernfunctie van Python — het Document/SimplePdf engine-paar laadt en schrijft PDF-documenten op elk codepad in dit bericht. Document.render_page, Page.render en RasterizedPage.to_png()/to_tiff() produceren daarnaast PNG- en TIFF-rasteroutput; dit zijn pagina-rasterisatie-uitvoer in plaats van document-laadformaten.
Open source & licenties
Aspose.PDF FOSS voor Python wordt uitgebracht onder de MIT-licentie: geen gebruiksbeperkingen, geen runtime-kosten, en geen registratievereisten voor commercieel of persoonlijk gebruik. De broncode wordt gehost op github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python, en het pakket wordt gepubliceerd op PyPI als aspose-pdf-foss-for-python.