Einleitung

document.py, das Modul, das Aspose.PDF FOSS für die Document-Klasse von Python definiert, beschreibt es als eine Klasse, die „die native PDF-Engine einhüllt.“ Konkret ist diese Engine aspose_pdf.engine.simple_pdf.SimplePdf: Document.load_from erstellt eine SimplePdf-Instanz, und jede dokumentenbezogene Operation — Speichern, Optimieren, Reparieren, Verschlüsseln — delegiert an sie. Das Gleiche gilt für das Rendern: Page.render und Document.render_page rufen beide aspose_pdf.engine.rasterizer auf.

Der meiste Anwendungscode muss nie über Document und Page hinausblicken. Aber aspose_pdf.engine ist ein gewöhnliches, importierbares Python-Paket, und mehrere der darunter liegenden Komponenten sind für sich nützlich: der Rasterizer, der eine Seite in Pixel umwandelt, die Stream-Filter-Codecs, die PDF-Inhaltsströme komprimieren und dekomprimieren, und die Verschlüsselungs-Utilities, die die AES-CBC- und RC4-Algorithmen implementieren, auf die PDF-Sicherheits-Handler angewiesen sind. Im Gegensatz zum Hauptpaket werden die Untermodule von aspose_pdf.engine nicht aus dem Top-Level-aspose_pdf erneut exportiert – die einzige Ausnahme ist RasterizedPage, über aspose_pdf.visualization angebunden – sodass alles darunter über seinen vollständigen Punktpfad importiert wird, zum Beispiel from aspose_pdf.engine.filters import StreamDecoder.

Aspose.PDF FOSS für Python ist ein Python-Paket, aspose-pdf-foss-for-python, veröffentlicht unter der MIT-Lizenz, das Python3.11 oder neuer erfordert. Sein Top-Level-Modulname ist aspose_pdf. Das Kernpaket hängt nur von cryptography und asn1crypto ab; optionale Extras fügen Pillow-basierte Bilddekodierung, Brotli-basierte WOFF2-Schriftunterstützung und HarfBuzz-basierte komplexe Textlayout-Funktionalität hinzu.


Hauptfunktionen

Seiten rendern mit der Rasterisierungs-Engine

Document.render_page(page_index, dpi=..., scale=..., background=..., antialias=...) und sein Page.render-Gegenstück geben beide ein RasterizedPage zurück – ein gepacktes RGB-Raster, das vom Rasterizer der Engine erzeugt wird. RasterizedPage stellt width, height und rohe pixels-Bytes bereit, plus get_pixel() für einen Einzelpixel-Lookup, to_png() / to_tiff() für im Speicher kodierte Bytes und save(), um eine .png- oder .tif/.tiff-Datei direkt zu schreiben. Das Arbeiten mit dem Objekt im Speicher – anstatt es nur auf die Festplatte zu speichern – ist nützlich, wenn ein Aufrufer die Pixel inspizieren oder transformieren möchte, bevor er entscheidet, ob er sie behalten soll.

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

Die Stream-Filter-Engine

PDF-Inhalte und Objekt-Streams werden mit benannten Filtern wie FlateDecode und LZWDecode komprimiert. aspose_pdf.engine.filters.StreamEncoder.encode(data, filters, decode_parms=None) und StreamDecoder.decode(data, filters, decode_parms, *, limits=None, max_output_bytes=None) implementieren die Encode- und Decode-Seiten dieser Filterkette – dieselben Codecs, die die Engine intern verwendet, wenn sie die Streams eines Dokuments schreibt und liest. Beide akzeptieren einen einzelnen Filternamen oder eine Liste für verkettete Filter, und StreamDecoder.decode() wirft PdfValidationException bei einem nicht erkannten Filternamen, anstatt stillschweigend falsche Bytes zurückzugeben.

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

Die Verschlüsselungs-Engine

aspose_pdf.engine.encryption.EncryptionUtils ist die Utility-Klasse mit statischen Methoden, die SimplePdf für jede verschlüsselungsbezogene Operation aufruft: Document.encrypt, decrypt() und change_passwords() werden intern alle zu EncryptionUtils-Aufrufen aufgelöst. Ihre Methoden implementieren AES-CBC und RC4-Verschlüsselung direkt (encrypt_aes_cbc, decrypt_aes_cbc, encrypt_rc4, decrypt_rc4), die Schlüsselableitung für die PDF-Standard-Security-Handler-Revisionen (compute_owner_key_v4, compute_user_key_v4, compute_user_owner_keys_v6) und generate_file_id() für die zufällige 16-Byte-ID, die neue Dokumente benötigen.

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

Schnellstart

Installieren Sie das Paket und rendern Sie dann eine Seite direkt aus der Engine-Ebene in einem einzigen Skript.

asposefoss/pdf is not yet published — build from source until it ships. See the project README for build instructions.
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")

Unterstützte Formate

FormatErweiterungLesenSchreiben
PDFpdfJaJa
TIFFtiff-Ja

PDF-Lesen und -Schreiben ist Aspose.PDF FOSS für die Kernfunktion von Python — das Document/SimplePdf-Engine-Paar lädt und schreibt PDF-Dokumente in jedem Codepfad dieses Beitrags. Document.render_page, Page.render und RasterizedPage.to_png() / to_tiff() erzeugen zusätzlich PNG- und TIFF-Rasterausgaben; dies sind Seitenrasterisierungsausgaben und keine Dokumenten-Ladeformate.


Open Source & Lizenzierung

Aspose.PDF FOSS für Python wird unter der MIT-Lizenz veröffentlicht: keine Nutzungsbeschränkungen, keine Laufzeitgebühren und keine Registrierungsanforderungen für kommerzielle oder private Nutzung. Der Quellcode ist gehostet bei github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python, und das Paket wird auf PyPI als aspose-pdf-foss-for-python veröffentlicht.


Erste Schritte

Verwandte Ressourcen