はじめに

document.py は、Python の Document クラス用に Aspose.PDF FOSS を定義するモジュールで、“ネイティブ PDF エンジンをラップする” クラスとして説明されています。具体的には、そのエンジンは aspose_pdf.engine.simple_pdf.SimplePdf です: Document.load_from は SimplePdf インスタンスを生成し、保存、最適化、修復、暗号化といったすべてのドキュメントレベルの操作はそれに委譲されます。レンダリングについても同様で、Page.render と Document.render_page は両方とも aspose_pdf.engine.rasterizer を呼び出します。

ほとんどのアプリケーションコードは Document や Page を超えて見る必要はありません。しかし、aspose_pdf.engine は普通のインポート可能な Python パッケージで、ファサードの下にあるいくつかのコンポーネントは単体でも有用です: ページをピクセルに変換するラスタライザ、PDF コンテンツストリームを圧縮・解凍するストリームフィルタコーデック、そして PDF セキュリティハンドラが使用する AES-CBC と RC4 アルゴリズムを実装する暗号化ユーティリティです。メインパッケージとは異なり、aspose_pdf.engine のサブモジュールはトップレベルの aspose_pdf から再エクスポートされません — ただし例外として RasterizedPage が aspose_pdf.visualization を介してブリッジされています — したがって以下のものはすべて完全なドットパスでインポートされます。例: from aspose_pdf.engine.filters import StreamDecoder。

Python 用の Aspose.PDF FOSS は Python パッケージである aspose-pdf-foss-for-python で、MIT ライセンスの下でリリースされ、Python 3.11 以降が必要です。トップレベルモジュール名は aspose_pdf です。コアパッケージは cryptography と asn1crypto のみが依存関係で、オプションのエクストラとして Pillow ベースの画像デコード、Brotli ベースの WOFF2 フォントサポート、そして HarfBuzz ベースの複雑なテキストレイアウトが追加されます。


主な機能

ラスタリゼーションエンジンによるページのレンダリング

Document.render_page(page_index, dpi=..., scale=..., background=..., antialias=...) とその Page.render 対応物はどちらも RasterizedPage を返します — エンジンのラスタライザが生成したパックされた RGB ラスターです。RasterizedPage は width、height、および生の pixels バイトを公開し、さらに単一ピクセルのルックアップ用に get_pixel()、メモリ上のエンコード済みバイト用に to_png() / to_tiff()、そして .png または .tif/.tiff ファイルを直接書き込むための save() を提供します。オブジェクトをメモリ内で扱うこと(ディスクに保存するだけでなく)は、呼び出し側がピクセルを検査または変換したい場合に、保持するかどうかを決める前に有用です。

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

ストリーム フィルタ エンジン

PDF のコンテンツおよびオブジェクトストリームは、FlateDecode や LZWDecode といった名前付きフィルタで圧縮されます。aspose_pdf.engine.filters.StreamEncoder.encode(data, filters, decode_parms=None) と StreamDecoder.decode(data, filters, decode_parms, *, limits=None, max_output_bytes=None) はそのフィルタチェーンのエンコード側とデコード側を実装しており、エンジンがドキュメントのストリームを書き込んだり読み取ったりするときに内部で使用するのと同じコーデックです。両方とも単一のフィルタ名またはチェーン用のリストを受け付け、StreamDecoder.decode() は認識できないフィルタ名が指定された場合に PdfValidationException をスローし、サイレントに間違ったバイトを返すことはありません。

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

暗号化エンジン

aspose_pdf.engine.encryption.EncryptionUtils は、SimplePdf がすべての暗号化関連操作のために呼び出す静的メソッドユーティリティクラスです。Document.encrypt、decrypt()、change_passwords() はすべて内部で EncryptionUtils 呼び出しに解決されます。そのメソッドは AES-CBC と RC4 暗号化を直接実装し(encrypt_aes_cbc、decrypt_aes_cbc、encrypt_rc4、decrypt_rc4)、PDF 標準セキュリティハンドラのリビジョン用の鍵導出(compute_owner_key_v4、compute_user_key_v4、compute_user_owner_keys_v6)および新規ドキュメントが必要とするランダムな 16 バイト ID のための generate_file_id() を提供します。

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

クイックスタート

パッケージをインストールし、単一のスクリプトでエンジン層から直接ページをレンダリングします。

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

サポートされている形式

形式拡張子読み取り書き込み
PDFpdfはいはい
TIFFtiff-翻訳したいテキストを提供

PDF の読み書きは Aspose.PDF FOSS であり、Python のコア機能です — Document/SimplePdf エンジンペアはこの投稿のすべてのコードパスで PDF ドキュメントをロードおよび書き込みます。Document.render_page、Page.render、および RasterizedPage.to_png() / to_tiff() はさらに PNG と TIFF のラスタ出力も生成します;これらはドキュメントロード形式ではなく、ページラスタライズ出力です。


オープンソースとライセンス

Aspose.PDF FOSS for Python は MIT ライセンスの下でリリースされています:使用制限なし、実行時料金なし、商用または個人利用における登録要件なし。ソースコードは github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python にホストされており、パッケージは PyPI で aspose-pdf-foss-for-python として公開されています。


開始手順

関連リソース