PDF ドキュメント操作(Java)

Aspose.PDF FOSS for Java は、既存の PDF ドキュメントを操作するための豊富な API を提供します — 分割、結合、ページ抽出、ページ範囲の挿入、ページ内コンテンツのリサイズなどです。これらの機能は PdfFileEditor およびその関連クラス ContentsResizeParametersContentsResizeValue に集約されています。

PdfFileEditor: コアページ操作

PdfFileEditor クラスは、高レベルの PDF ファイル操作の中心的な機能です。複数の PDF ファイルを結合したり、ページのサブセットを抽出したり、ドキュメントを個々のページに分割したり、あるドキュメントから別のドキュメントへ特定の位置にページを挿入したりするメソッドを提供します。

PdfFileEditor editor = new PdfFileEditor();
// Concatenate two documents into one
editor.concatenate("first.pdf", "second.pdf", "combined.pdf");
// Extract pages 2 through 5 to a new file
editor.extract("source.pdf", 2, 5, "extracted.pdf");

主なメソッドは次のとおりです:

  • concatenate(inputFiles, outputFile) — 複数のドキュメントを順番に結合します
  • extract(inputFile, startPage, endPage, outputFile) — 連続した範囲をエクスポートします
  • extract(inputFile, pageNumbers, outputFile) — 非連続セットをエクスポートします
  • splitToPages(inputFile) — ページごとに1つのByteArrayOutputStreamに分割します
  • insert(inputFile, insertPosition, portFile, startPage, endPage, outputFile) — 範囲を挿入します
  • delete(inputFile, pageNumbers, outputFile) — 特定のページを削除します
  • append(inputFile, portFile, startPage, endPage, outputFile) — ページ範囲を追加します

大きなファイルの場合、setUseDiskBuffer(true) は内部ストレージをヒープからディスクに切り替えます。

ContentsResizeParameters を使用したコンテンツリサイズ

PdfFileEditor.resizeContents() は既存のページ境界内でコンテンツを調整します。各余白 — 左、右、上、下 — とコンテンツの幅と高さは、ContentsResizeValue インスタンスとして指定され、ファクトリメソッド ContentsResizeValue.percents(value) または ContentsResizeValue.units(value) により構築されます。

try (Document doc = new Document("input.pdf")) {
    PdfFileEditor editor = new PdfFileEditor();
    ContentsResizeParameters params = new ContentsResizeParameters(
        ContentsResizeValue.percents(10),   // left margin
        ContentsResizeValue.percents(80),   // content width
        ContentsResizeValue.percents(10),   // right margin
        ContentsResizeValue.percents(10),   // top margin
        ContentsResizeValue.percents(80),   // content height
        ContentsResizeValue.percents(10)    // bottom margin
    );
    editor.resizeContents(doc, params);
    doc.save("resized.pdf");
}

ContentsResizeParameters の6引数コンストラクタは、leftMargin、contentsWidth、rightMargin、topMargin、contentsHeight、bottomMargin の順で値を受け取ります。パーセンテージベースの値を使用する場合、6つすべての合計は100%でなければならず、絶対ポイント値を使用する場合はページサイズと一致する必要があります。

特定ページのサイズ変更

ページの一部だけサイズ変更が必要な場合、ページ番号の整数配列を受け取るオーバーロードは、そのページのみを対象とし、残りは変更しません:

PdfFileEditor editor = new PdfFileEditor();
ContentsResizeParameters params = new ContentsResizeParameters(
    ContentsResizeValue.units(28),   // left margin in points
    ContentsResizeValue.units(540),  // content width
    ContentsResizeValue.units(28),   // right margin
    ContentsResizeValue.units(28),   // top margin
    ContentsResizeValue.units(786),  // content height
    ContentsResizeValue.units(28)    // bottom margin
);
// Only resize pages 1 and 3
editor.resizeContents(doc, new int[]{1, 3}, params);

ContentsResizeValue.getValue()isPercent() は、格納された値を検査し、それがパーセンテージか絶対ポイント数かを判定することができます。

ブックレットと N-Up レイアウト

PdfFileEditor には、両面ブックレット順にページを配置するための makeBooklet() と、1枚の用紙に複数ページをタイル配置するための makeNUp() が含まれています。両方のメソッドはファイルパスまたはストリームを受け取ります:

PdfFileEditor editor = new PdfFileEditor();
// Print as a folded booklet
editor.makeBooklet("input.pdf", "booklet.pdf");
// Tile 2 columns × 3 rows per sheet
editor.makeNUp("input.pdf", "nup.pdf", 2, 3);

PdfPageEditor: ページ単位のズーム制御

PdfPageEditor はズームレベルなど、個々のページプロパティを対象とします。setZoom() は、ビューアでドキュメントを開いたときの初期拡大率を制御する浮動小数点の乗数を受け取ります:

PdfPageEditor pageEditor = new PdfPageEditor();
pageEditor.bindPdf("input.pdf");
pageEditor.setZoom(1.5f);
pageEditor.save("zoomed.pdf");

0.0 の値が負または負の数である場合は拒否されます — そのような場合、getZoom()1.0 を返します。これにより、PdfPageEditor はアクセシビリティやキオスク表示のユースケースで、特定の拡大率で開く必要がある文書を作成するのに適しています。

はじめに

Maven の依存関係を追加し、facades パッケージをインポートしてください:

<dependency>
  <groupId>org.aspose</groupId>
  <artifactId>aspose-pdf-foss</artifactId>
  <version>26.8.0</version>
</dependency>
import org.aspose.pdf.*;
import org.aspose.pdf.facades.*;

Aspose.PDF FOSS for Java は MIT ライセンスで、https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Java で入手可能です。

関連リソース