Python で PDF ページをトリミングする方法

ページプロパティを取得

PDF ファイルの各ページには、幅、高さ、ブリードボックス、クロップボックス、トリムボックスなど、さまざまなプロパティがあります。Python 用 Aspose.PDF ではこれらのプロパティにアクセスできます。

このページは、表示されるページ領域を減らす必要がある場合、印刷ワークフロー用にファイルを準備する必要がある場合、またはPDF文書内のページボックスの形状を調べる必要がある場合に使用します。

  • media_box: メディアボックスは最大のページボックスです。これは、文書を PostScript または PDF に印刷したときに選択されたページサイズ (A4、A5、米国レターなど) に対応します。つまり、メディアボックスは PDF ドキュメントを表示または印刷するメディアの物理サイズを決定します。
  • bleed_box: 文書にブリードがある場合、PDF にもブリードボックスが表示されます。ブリードとは、ページの端からはみ出した色 (またはアートワーク) の量です。これは、文書を印刷してサイズに合わせてカット (「トリミング」) したときに、インクがページの端まで行き渡るようにするために使用されます。ページが誤ってトリミングされても(トリムマークを少し切り取って)、ページ上に白いエッジは表示されません。
  • trim_box: トリムボックスは、印刷およびトリミング後のドキュメントの最終サイズを示します。
  • art_box: アートボックスは、ドキュメント内のページの実際の内容の周りに描かれたボックスです。このページボックスは、PDF ドキュメントを他のアプリケーションに取り込むときに使用されます。
  • crop_box: クロップボックスとは、Adobe Acrobat で PDF ドキュメントが表示される「ページ」サイズです。標準表示では、クロップボックスの内容だけが Adobe Acrobat に表示されます。これらのプロパティの詳細については、Adobe.Pdf 仕様、特に 10.10.1 ページ境界を参照してください。

最初にトリミングする Page Python 用の Aspose.PDF を使用して PDF を特定の長方形の領域に変換します。この関数は複数のページボックスを調整します。crop_box, trim_box, art_box、および bleed_box—一貫した視覚的結果を確保するため。トリミングは、不要な余白を削除したり、ページの特定の領域に焦点を当てたりする場合に便利です。

  1. PDF をとして読み込む Document (使用 ap.Document()).
  2. 以下を使用してトリミング矩形を定義します Rectangle 目的の座標 (ポイント単位) を使用します。
  3. を設定 Pagecrop_box, trim_box, art_box、および bleed_box 定義した長方形に。
  4. 変更を保存する Document 新しい出力ファイルへ
import sys
import aspose.pdf as ap
from os import path

def crop_page(input_file_name, output_file_name):
    document = ap.Document(input_file_name)

    new_box = ap.Rectangle(200, 220, 2170, 1520, True)
    document.pages[1].crop_box = new_box
    document.pages[1].trim_box = new_box
    document.pages[1].art_box = new_box
    document.pages[1].bleed_box = new_box

    document.save(output_file_name)

この例では、サンプルファイルを使用しました。 ここに。最初は、ページは図 1 のようになります。 フィギュア 1.トリミングされたページ

変更後、ページは図 2 のようになります。 フィギュア 2.トリミングされたページ

最初の画像コンテンツに基づいてPDFページを切り抜く

最初にトリミングする Page ページ上で最初に見つかった画像の境界に基づいて動的に処理されます。を使うことで ImagePlacementAbsorber、スクリプトは最初の画像を識別し、ページを調整します crop_box 画像のサイズに合わせてください。この方法は、あらかじめ定義された座標ではなく、特定のビジュアルコンテンツに焦点を当てたい場合に便利です。

  1. PDF をとして読み込む Document.
  2. を使用して最初のページの画像を検索する ImagePlacementAbsorber.
  3. 画像が存在するかどうかを確認してください: -見つかった場合は、以下を設定します Page crop_box 最初の画像に合わせて Rectangle. -そうでない場合は、ページを変更せずにユーザーに通知してください。
  4. 変更を保存する Document 指定された出力ファイルへ。
import sys
import aspose.pdf as ap
from os import path

def crop_page_by_content(input_file_name, output_file_name):
    document = ap.Document(input_file_name)
    # Find first image on first page using ImagePlacementAbsorber
    absorber = ap.ImagePlacementAbsorber()
    document.pages[1].accept(absorber)

    if len(absorber.image_placements) > 0:
        first_image = absorber.image_placements[1]
        document.pages[1].crop_box = first_image.rectangle
    else:
        print("No images found on the first page")
    document.save(output_file_name)

関連ページトピック