Aspose.PDF FOSS for Python の機能
Aspose.PDF Python 用 FOSS の機能
Aspose.PDF FOSS for Python は、PDF ドキュメントの作成、オープン、修正、保存のための pure-Python ライブラリです。このページでは主要な機能領域とそれらへのエントリーポイントとなるクラスを概観します。各領域はそれぞれの開発者ガイドページで詳細に解説されています。
ドキュメントとページの管理
Document はすべての操作のルートオブジェクトです。引数なしで構築すると新しい空のドキュメントが開始され、load_from() を呼び出すとパス、バイト列、またはストリームから既存のドキュメントを読み取ります。document.pages は可変の PageCollection を公開し、Page.add_text はページ上に位置指定テキストを配置します。
from aspose_pdf import Document
document = Document()
page = document.pages.add()
page.add_text("Hello from Aspose.PDF FOSS!", x=72, y=720, font_size=18)
document.save("hello.pdf")テキスト抽出と検索
PdfExtractor はドキュメントにバインドし、ページごとにテキストを抽出します。bind_pdf() がソースを開き、extract_text() が抽出を実行し、get_text() が蓄積された結果を返します。
from aspose_pdf import PdfExtractor
extractor = PdfExtractor()
extractor.bind_pdf("hello.pdf")
extractor.extract_text()
print(extractor.get_text())
extractor.close()位置指定されたフラグメント単位の検索と置換のために、TextFragmentAbsorber は一致した TextFragment オブジェクトを公開し、text_search_options が大文字小文字の区別や正規表現マッチングを制御します。
ページの画像へのレンダリング
Document.save_page_as_image は、単一ページを設定可能な DPI で PNG または TIFF ファイルに直接レンダリングします。低レベルのアクセスの場合、Page.render は get_pixel() と pixels を通じて、生のピクセルデータを含む RasterizedPage を返します。
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
document.save_page_as_image(0, "page-1.png", dpi=150)フォームとインタラクティブフィールド
AcroForm フィールドは、Document.form を介して管理され、Form ファサードです。Form.add_text_field()(チェックボックス、ラジオ、リスト、コンボボックスの同等物も含む)は、ページとウィジェット矩形に紐付いた新しいフィールドを作成し、Field を返します。Form.fields は、ドキュメント上に現在存在するすべてのフィールドを一覧表示します。
from aspose_pdf import Document
document = Document()
page = document.pages.add()
document.form.add_text_field("customer_name", page, (72, 700, 300, 720))
for field in document.form.fields:
print(field.name, field.field_type)
document.save("form.pdf")セキュリティ、暗号化、署名
Document.encrypt は、ユーザーパスワード(開くために必要)とオーナーパスワード(権限変更に必要)でドキュメントを保護します;decrypt() と change_passwords() は、すでに開かれているドキュメントの保護を管理します。is_encrypted は現在の状態を報告します。
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
document.encrypt(user_password="secret", owner_password="owner-secret")
document.save("encrypted.pdf")デジタル署名の検証は PdfSignature.validate が処理し、信頼性と失効状態を記述した ValidationResult を返します。また、SigningUtils は証明書および PKCS#7/CAdES 署名ヘルパーを提供します。
PDF/A と PDF/UA のコンプライアンス
Document.validate_pdfaはヒューリスティックなPDF/Aコンプライアンスチェックを実行し、PdfAValidationResultを返します;convert_to_pdfa()はそのレベルに向けて文書を修正しようとします。validate_pdfua()とauto_tag()は、PDF/UAに対して同等のアクセシビリティチェックと自動構造ツリータグ付けを提供します。
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
result = document.validate_pdfa("1b")
if not result.is_valid:
document.convert_to_pdfa("1b")
document.auto_tag()
document.save("compliant.pdf")ヒントとベストプラクティス
document.pages、page.annotations、またはdocument.formが直接返すオブジェクトを変更してください — ページやフィールドの別コピーに対して行った編集は、save()を呼び出したときには反映されません。PageCollectionはこのPythonバインディングでゼロインデックスです(document.pages[0]が最初のページです)。- 信頼できない入力に対して
load_from()を呼び出す際、より広範なAsposePdfExceptionの前にInvalidPasswordExceptionとPdfParseExceptionを捕捉してください。これにより、破損したファイルと不正なパスワードを別々に処理できます。 - 大幅に編集された文書では、ファイルサイズを削減し未使用リソースを除去するために、
save()の前にdocument.optimize()またはcompress_streams()を呼び出してください。 - 信頼できないソースからのPDFを処理する際、パース中のメモリ使用量とオブジェクト数を上限付けするために、
PdfLoadLimitsを制限付きでload_from()に渡してください。
一般的な問題
| 問題 | 原因 | 修正 |
|---|---|---|
save() は編集が変更されていないファイルを生成します | 編集は document.pages、annotations、または form から取得したオブジェクトではなく、ページ、注釈、またはフィールドのコピーに対して行われました | それらのコレクションが直接返すオブジェクトを変更してください |
InvalidPasswordException(load_from() 上) | この文書はパスワードで保護されており、パスワードが提供されていないか、間違ったものが提供されました | 正しいパスワードを入力してください: document.load_from(path, password="...") |
validate_pdfa() は convert_to_pdfa() 後もフォントエラーを報告します | 指定された font_lookup_directory に一致するフォントファイルが見つかりませんでした | 変換前に、欠落しているフォントを検索ディレクトリに追加するか、FontRepository に登録してください |
| レンダリングされた画像が空のように見えます | save_page_as_image() または render() に渡されたページインデックスが間違っています | pages はゼロベースです — インデックスを確認し、PdfExtractor がそのページのテキストを返すかどうかを確認してください |
Form.add_text_field() で追加されたフィールドがページに表示されません | ウィジェット矩形がページのmedia_boxの外にあります | 矩形座標がPage.media_box内にあることを確認してください |
FAQ
Aspose.PDF の Python 用 FOSS は商用 PDF エンジンに依存しますか?
いいえ。これはゼロから作られた、純粋なPython PDFエンジンで、MITライセンスの下でリリースされています。実行時の唯一の依存関係はcryptographyとasn1cryptoで、暗号化と署名検証に使用されます。
既存の PDF を開く代わりに、ゼロから PDF を作成できますか?
はい。引数なしでDocument()を呼び出すと、空のインメモリ文書が作成されます。保存する前にページを追加するには、document.pages.add()を呼び出してください。
ページをレンダリングできるラスターフォーマットはどれですか?
Page.render と Document.save_page_as_image は PNG または TIFF のラスタ出力を生成します。返される RasterizedPage は、get_pixel() と pixels プロパティを通じて生のピクセルデータも提供します。
パッケージ固有のエラーに対してはどの例外を捕捉すべきですか?
AsposePdfException を捕捉してください。パッケージ固有のすべてのエラー—パース(PdfParseException)、パスワードおよび暗号化(PdfSecurityException、InvalidPasswordException)、検証(PdfValidationException)の失敗を含む—はすべてそれに由来します。
次はどこへ行けばいいですか?
Getting Started では、インストール、ライセンス、そして最初の実装例をカバーしています。この開発者ガイドは、フォーム、埋め込みファイル添付、フォント検出、そしてアウトライン/ブックマーク作成といった文書管理のトピックを引き続き取り上げます。
API Reference 概要
| クラス/メソッド | 説明 |
|---|---|
Document | ルートオブジェクト — PDF を作成、読み込み、保存、管理する |
Document.pages | ドキュメントの可変 PageCollection |
Document.load_from / Document.save | パス、バイト、またはストリームから読み取りまたは書き込み |
Document.encrypt / Document.decrypt | パスワードで保護するまたは保護を解除する |
Document.validate_pdfa / Document.convert_to_pdfa | ヒューリスティック PDF/A 準拠チェックおよび変換 |
Document.validate_pdfua() / Document.auto_tag | PDF/UA アクセシビリティチェックと構造自動タグ付け |
Page.add_text | ページに配置されたテキストを追加する |
Page.render | ページを RasterizedPage にレンダリングする |
PdfExtractor | ページのテキストと埋め込み添付ファイルを抽出する |
PdfFileEditor | ファイル間でページを結合、分割、挿入、削除する |
Form / Field | AcroForm コンテナと個々のフォームフィールド |
PdfSignature / SigningUtils | デジタル署名の検証および作成 |
AsposePdfException | 各パッケージ固有例外の基底クラス |