はじめに

Python 用の Aspose.PDF FOSS には、aspose_pdf.generated サブパッケージが含まれ、4 つのモジュール document.pyforms.pypdfa.pysecurity.py が存在します。これらは上位レベルの aspose_pdf パッケージから再エクスポートされないため、本ガイドのすべてのクラスは完全なドット表記のパスでインポートされます — from aspose_pdf.generated.document import Documentfrom aspose_pdf import Document ではありません。

4 つのモジュールは 2 つの異なるアプローチを取ります。generated.documentgenerated.formsgenerated.pdfa はそれぞれ独自のクラスを定義します:メインパッケージの DocumentUnsignedContent/UnsignedContentAbsorber、および PdfAValidateOptions/PdfAValidationResult の形状を鏡像化した独立した実装で、鏡像化された名前空間レイアウトに対して書かれたコードには便利ですが、エイリアスではなく実際の別個のクラス群です。一方、generated.security は全く再実装を行わず、CompromiseCheckResultSignaturesCompromiseDetector、および検証列挙型を直接 aspose_pdf.securityaspose_pdf.validation からインポートし、再エクスポートします。そのため、両方のインポートパスは同一のクラスオブジェクトに解決されます。

本ガイドは 4 つすべてをカバーし、generated クラスが同名のメインパッケージの対応クラスと異なる振る舞いをする場所を明示しています — DocumentUnsignedContentAbsorber は 2 か所に存在し、実装が異なるため、名前だけでインポートすると間違えやすい典型的なケースです。

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


主な機能

第2の文書実装

aspose_pdf.generated.document.Document は、メインの aspose_pdf.Document と同じコアライフサイクルを実装します — load_from()save()encrypt()/decrypt()/change_passwords()optimize()/optimize_resources()repair()flatten()、および validate()/check() — 同じ aspose_pdf.engine.simple_pdf.SimplePdf エンジンの上に構築されています。メインの Document のサブセットを鏡像化しており、pages.add() スタイルのページ作成機能がなく、form/outlines/attachments もなく、render_page() もありません。クラス名がメインパッケージの Document と衝突するため、同じモジュールで両方が必要な場合はエイリアスでインポートしてください。

from aspose_pdf import Document
from aspose_pdf.generated.document import Document as CompatDocument

with Document() as document:
    document.pages.add()
    document.save("source.pdf")

compat = CompatDocument()
compat.load_from("source.pdf")
print(compat.page_count, compat.is_encrypted)

compat.optimize(compress_images=True)
compat.save("optimized.pdf", overwrite=True)
compat.dispose()

署名されていないコンテンツのパッケージ化

aspose_pdf.generated.forms.UnsignedContentAbsorberUnsignedContent は、署名されていないフォームフィールド、ページ、アノテーション用のコンテナを提供します。これは、実際の Document を受け取り、その form_fields/annotationsis_signed/signed 属性が falsy(偽)である項目でフィルタリングするトップレベルの aspose_pdf.UnsignedContentAbsorber(document) とは異なります。generated.forms バージョンはドキュメントを一切受け取らず、extract() はキーワード引数として渡された pagesform_fieldsannotations をそのまま UnsignedContent インスタンスにパッケージ化します。これは、署名されていない項目がすでに別の場所で収集されており、共有コンテナとその add_page()/remove_page() スタイルのミューテータが必要な場合に便利です。

from aspose_pdf.generated.forms import UnsignedContentAbsorber

absorber = UnsignedContentAbsorber()
content = absorber.extract(
    form_fields=["signature_field", "initials_field"],
    annotations=["review_stamp"],
)
print(absorber.has_extracted(), content.form_fields, content.annotations)

content.add_page("page-1")
absorber.reset()
print(absorber.get_extracted())

PDF/A バリデーションオプションと結果

aspose_pdf.generated.pdfa.PdfAValidateOptions はバリデーション設定と入力ソースを収集し、PdfAValidationResult は結果を収集します。PdfAValidateOptions.add_input() は受け入れる前に Path.exists() を使って文字列パスをチェックし、ファイルが存在しない場合は PdfIOException を発生させます。そのため、呼び出し元はバリデーション時ではなく、すぐに不正な入力パスを知ることができます。

from aspose_pdf import Document
from aspose_pdf.exceptions import PdfIOException
from aspose_pdf.generated.pdfa import PdfAValidateOptions, PdfAValidationResult

with Document() as document:
    document.pages.add()
    document.save("candidate.pdf")

options = PdfAValidateOptions()
options.set_option("pdfa_version", "PDF/A-2b")
options.add_input("candidate.pdf")
print(options.get_options(), options.inputs)

try:
    options.add_input("missing.pdf")
except PdfIOException as error:
    print(f"rejected: {error}")

result = PdfAValidationResult()
result.add_error("Missing /OutputIntent for PDF/A-2b")
print(result.is_valid, result.to_dict())

再エクスポートされたセキュリティおよびバリデーション型

aspose_pdf.generated.securityCompromiseCheckResultSignaturesCompromiseDetectoraspose_pdf.security から直接インポートし、CertificationLevelRevocationStatusTrustStatusValidationMethodValidationModeValidationOptionsValidationResult、および ValidationStatusaspose_pdf.validation からインポートします。DocumentUnsignedContentAbsorber とは異なり、ここでは独立した再実装はなく、両方のインポートパスは同じオブジェクトを返します。

from aspose_pdf.generated.security import SignaturesCompromiseDetector
from aspose_pdf.security import SignaturesCompromiseDetector as CanonicalDetector

assert SignaturesCompromiseDetector is CanonicalDetector

detector = SignaturesCompromiseDetector(document=None)
result = detector.check()
print(result.compromised, result.reasons)

クイックスタート

パッケージをインストールし、次にメインの Document でドキュメントを作成し、保存し、generated.pdfa のオプションと結果オブジェクトに通します。

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
from aspose_pdf.generated.pdfa import PdfAValidateOptions, PdfAValidationResult

with Document() as document:
    page = document.pages.add()
    page.add_text("PDF/A candidate", x=72, y=740, font_size=20)
    document.save("candidate.pdf")

options = PdfAValidateOptions()
options.set_option("pdfa_version", "PDF/A-2b")
options.add_input("candidate.pdf")

result = PdfAValidationResult()
if not options.inputs:
    result.add_error("No inputs registered")

print(result.to_dict())

サポートされているフォーマット

形式拡張子読む書く
PDFpdfはいはい

PDF の読み書きは Aspose.PDF FOSS であり、Python のコア機能です。このガイドのすべてのクラス — メインの Documentgenerated.document.Document ミラー、および PDF/A ヘルパー — は、共有された SimplePdf エンジンを通じて PDF の入力と出力を操作します。aspose_pdf.generated はインポートするクラスを変更するだけで、処理されるファイル形式は変わりません。


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

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


スタートガイド

関連リソース