Javaを使用して2つのPDFファイルをマージする方法
ドキュメント管理パイプラインでは、PDFドキュメントを単一ファイルにマージすることが頻繁に要求されます。 月次報告書の統合、複数の引数からなるフォームの組み立て、請求書の束ねなどは、すべて一般的なシナリオです。 IronPDF for Java は、その操作を単一のメソッド呼び出し PdfDocument.merge() に簡略化します。 2つ以上の読み込まれたドキュメントを渡すと、すべての書式、フォント、埋め込み画像がそのまま保持された1つの結合されたPDFが返されます。
このガイドでは、動的に生成されたPDFを結合する、ディスクから既存のファイルをマージする、リストベースのアプローチで大規模なバッチを処理する、最終ドキュメントのページ順序を制御する、という4つの最も実用的なマージシナリオを説明します。
クイックスタート: Java で PDF を結合する
- IronPDF 依存性をあなたの Maven
pom.xmlに追加します。 com.ironsoftware.ironpdf.PdfDocumentをインポートしますPdfDocument.fromFile()を使用してソースファイルを読み込みますPdfDocument.merge(pdf1, pdf2)を呼び出して、結合されたドキュメントを生成しますmerged.saveAs()で結果を保存します
```java {title="クイックスタート: 基本的なPDFマージ"} //:path=/static-assets/pdf/content-code-examples/how-to/how-to-merge-two-pdf-files-java-tutorial/quickstart-merge.java インポート com.ironsoftware.ironPdf.PdfDocument; インポート java.nio.file.Paths;
// ディスクから2つの既存のPDFドキュメントを読み込みます PdfDocument pdf1 = PdfDocument.fromFile(Paths.get("document1.pdf")); PdfDocument pdf2 = PdfDocument.fromFile(Paths.get("document2.pdf"));
// 単一のドキュメントにマージします; 書式設定や画像が保持されます PdfDocument merged = PdfDocument.merge(pdf1, pdf2);
// 結合されたPDFをディスクに書き込みます merged.saveAs(Paths.get("merged-output.pdf"));
<div class="hsg-featured-snippet">
<h3>最小限のワークフロー(5ステップ)</h3>
1. MavenまたはGradle依存関係としてIronPDFを追加します
2. `com.ironsoftware.ironpdf.PdfDocument` をインポートします
3. 各PDFを `PdfDocument.fromFile(Paths.get("file.pdf"))` で読み込みます
4. `PdfDocument.merge(pdf1, pdf2)` を呼び出すか、バッチ処理のために `PdfDocument[]` 配列を渡します
5. 結合した結果を `merged.saveAs(Paths.get("output.pdf"))` で保存します
</div>
## JavaでPDFをマージするための前提条件は何ですか?
コードを書く前に、次の4つの要件が揃っていることを確認してください:
1. **Java 8 またはそれ以上** がインストールされ、`JAVA_HOME` 環境変数が設定されています。 プラットフォーム固有の手順については、[Javaダウンロードおよびインストールガイド](https://www.java.com/en/download/help/download_options.html#windows)を参照してください。
2. **Java IDE** (このガイドでは[JetBrains IntelliJ IDEA](https://www.jetbrains.com/idea/download/#section=windows) を使用しますが、[Eclipse](https://www.eclipse.org/downloads/)も同様に使用できます)。
3. **MavenまたはGradle** がIDEに設定されている。Mavenに不慣れな場合、[JetBrains Maven インストールガイド](https://www.jetbrains.com/idea/guide/tutorials/marco-codes-maven/installing-maven/)がIntelliJでのセットアップをカバーしています。
4. **IronPDFライブラリ** がプロジェクト依存関係として追加されています。 [IronPDF for Java インストールガイド](https://ironpdf.com/java/docs/)は、MavenとGradleの両方のアプローチを説明しています。
ご注意IronPDF for JavaはJava 8以降をサポートしています。 新しいJDKにプロジェクトをアップデートする必要はなく、すぐに使用できます。)]}
## Java版IronPDFをインストールするには?
IronPDF for Javaは[Maven Central](https://search.maven.org)から配布されているため、プロジェクトに追加するのに数行の設定だけで済みます。 手動でJARファイルをダウンロードする必要はありません。
IntelliJ IDEAを開き、**File -> New -> Project**から新しいMavenプロジェクトを作成し、ビルドシステムとしてMavenを選択します。

プロジェクトに名前を付け、**Finish**をクリックします。 プロジェクト構造が生成されると IntelliJ は `pom.xml` を自動的に開きます。

`<dependencies>` セクション内に次の依存性ブロックを追加してください。 [Maven Centralで最新のIronPDFリリースを常にチェック](https://central.sonatype.com/artifact/com.ironsoftware/ironpdf)して、バージョン文字列を最新のものに置き換えます。
```xml {title="pom.xml: IronPDF Dependency"}
//:path=/static-assets/pdf/content-code-examples/how-to/how-to-merge-two-pdf-files-java-tutorial/pom-dependency.xml
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf</artifactId>
<version>2024.9.1</version>
</dependency>

pom.xml を保存すると、エディタの右上に小さな同期アイコンが表示されます。 それをクリックしてMaven依存関係のダウンロードを開始します。 接続速度に応じて、IronPDFと必要なすべての伝達依存関係のダウンロードには15秒から数分かかります。

implementation 'com.ironsoftware:ironpdf:2024.9.1' を build.gradle 依存関係ブロックに追加することもできます。 同じMaven Centralアーティファクトは、両方のビルドシステムで機能します。)]}新しいPDFドキュメントを作成して結合するにはどうすればよいですか?
ソースコンテンツが実行時に生成されるとき (HTMLテンプレート、データベースのレコード、またはユーザー入力から)、ワークフローは最初に個々のピースを PdfDocument としてレンダリングし、それから結合することです。
PdfDocument.renderHtmlAsPdf() は HTML 文字列をメモリ内の PDF に変換します。 各呼び出しは、独立したドキュメントオブジェクトを生成し、ディスクに中間ファイルを書き込むことなく merge() に直接渡すことができます。
マージ前にHTMLセクションをレンダリングする
以下の例では、2つの別々のHTML文字列をメモリ内でレンダリングし、それらを1つのドキュメントに結合します。 このパターンは、レポートジェネレーター、請求書ビルダー、テンプレートやデータベース行からプログラムでコンテンツを組み立てるシステムに最適です。
```java {title="動的に生成されたPDFを結合する"} //:path=/static-assets/pdf/content-code-examples/how-to/how-to-merge-two-pdf-files-java-tutorial/merge-html-pdfs.java インポート com.ironsoftware.ironPdf.PdfDocument; インポート java.io.IOException; インポート java.nio.file.Paths;
public class Main { public static void main(String[] args) throws IOException { {. // 各ドキュメントセクションのHTMLコンテンツ String htmlA = "
レポートの最初の部分。
"; String htmlB = "レポートの2番目の部分。
";// 各HTML文字列をメモリ内でPDFにレンダリング -- ディスクへの書き込み不要 PdfDocument pdfA = PdfDocument.renderHtmlAsPdf(htmlA); PdfDocument pdfB = PdfDocument.renderHtmlAsPdf(htmlB);
// 両方のドキュメントを1つの結合されたPDFにマージ PdfDocument merged = PdfDocument.merge(pdfA, pdfB);
// マージされた結果を保存 merged.saveAs(Paths.get("assets/merged.pdf")); } }
結合された出力は引数の順序でページを連結します:`pdfA` ページが `pdfB` ページの前に現れます。 HTMLレンダリングエンジンの完全なウォークスルーについては、[IronPDF HTML to PDF チュートリアル for Java](https://ironpdf.com/java/tutorials/html-to-pdf/) を参照してください。

`renderHtmlAsPdf()` 呼び出しはChromiumベースのレンダリングエンジンを使用します。完全なCSS、Webフォント、インライン画像がすべてサポートされており、出力はブラウザに表示されるものと一致します。
## 既存のPDFファイルを結合するにはどうすればよいですか?
ディスクからPDFを読み込んで結合する場合は、同じパターンに従い、それぞれのファイルをメモリに読み込んでからオブジェクトを `merge()` に渡すために `PdfDocument.fromFile()` を使用します。
この方法は、ソースドキュメントがすでに存在する ワークフローに適しています -- スキャンされた請求書、エクスポートされたレポート、外部システムから受け取ったファイルなど。 IronPDFはPDF構造を読み込み、オリジナルのソースファイルを変更せずにページをマージします。
### ディスクからファイルを読み込んで結合する
```java {title="既存のPDFファイルをディスクからマージする"}
//:path=/static-assets/pdf/content-code-examples/how-to/how-to-merge-two-pdf-files-java-tutorial/merge-existing-files.java
インポート com.ironsoftware.ironPdf.PdfDocument;
インポート java.io.IOException;
インポート java.nio.file.Paths;
public class Main {
public static void main(String[] args) throws IOException { {.
// ディスクから2つの既存のPDFファイルを読み込みます
PdfDocument pdfA = PdfDocument.fromFile(Paths.get("assets/invoice-january.pdf"));
PdfDocument pdfB = PdfDocument.fromFile(Paths.get("assets/invoice-february.pdf"));
// 1つのドキュメントに結合
PdfDocument merged = PdfDocument.merge(pdfA, pdfB);
// マージされた出力を書き込み -- オリジナルは変更されません
merged.saveAs(Paths.get("assets/invoices-q1.pdf"));
}
}
merge() 呼び出しは新しい PdfDocument オブジェクトを生成します; pdfA と pdfB のどちらも変更されません。 操作を元に戻す -- ページを元に戻すには、Java用PDF分割例を参照してください。

fromFile() はどのファイル形式を受け入れますか?
PdfDocument.fromFile() は標準の .pdf ファイルを受け入れます。 マージ前に変換が必要なドキュメント (HTMLファイル、画像ファイル、その他のフォーマットなど) の場合、PdfDocument を生成するために最初に適切なレンダリングメソッド (renderHtmlAsPdf(), renderUrlAsPdf()) を使用し、そのオブジェクトを merge() に渡します。
fromFile() に渡されたパスは絶対パスでも作業ディレクトリに対する相対パスでもかまいません。 クロスプラットフォームの互換性のために Paths.get() (java.nio.file から) を使用することが推奨されています。2つ以上の PDF ファイルをマージするにはどうすればよいですか?
PdfDocument.merge() は可変長の引数リストを受け入れるため、3つまたは4つのドキュメントを結合することは、2つを結合することと文法的に何ら変わりはありません。 実行時に PDF の数が決定される動的サイズのコレクションに対しては、PdfDocument[] 配列を渡すことがよりクリーンなアプローチです。
Varargsとリストベースのパターン
以下の2つのパターンは同一の結果を生成します。 ファイル数が固定されている場合は直接varargs呼び出しを選択し、コレクションをプログラム的に構築する場合はリストから配列へのパターンを使用します:
```java {title="4つのPDFを結合する -- Varargs と Listのアプローチ"} //:path=/static-assets/pdf/content-code-examples/how-to/how-to-merge-two-pdf-files-java-tutorial/merge-multiple-files.java インポート com.ironsoftware.ironPdf.PdfDocument; インポート java.io.IOException; インポート java.nio.file.Paths; import java.util.ArrayList; import java.util.List;
public class Main { public static void main(String[] args) throws IOException { {. // 4つの既存のPDFファイルをロード PdfDocument pdfA = PdfDocument.fromFile(Paths.get("assets/chapter-1.pdf")); PdfDocument pdfB = PdfDocument.fromFile(Paths.get("assets/chapter-2.pdf")); PdfDocument pdfC = PdfDocument.fromFile(Paths.get("assets/chapter-3.pdf")); PdfDocument pdfD = PdfDocument.fromFile(Paths.get("assets/chapter-4.pdf"));
// パターン1: 直接varargs呼び出し -- ファイル数が固定されている場合に最適 PdfDocument merged = PdfDocument.merge(pdfA, pdfB, pdfC, pdfD); merged.saveAs(Paths.get("assets/full-document.pdf"));
// パターン2: 先にリストを構築 -- ファイル数が動的な場合に推奨
List
PdfDocument mergedFromList = PdfDocument.merge( pdfList.toArray(new PdfDocument[0]) ); mergedFromList.saveAs(Paths.get("assets/full-document-v2.pdf")); } }
重要出力のページ順序は引数の順序と完全に一致します。 ドキュメントの順序が重要である場合 -- 例えば、本の章や順序付けされたフォームセクションの場合 --、`merge()` を呼び出す前にリストをソートしてください。
### ディレクトリをスキャンしてすべてのPDFをマージするにはどうすればよいですか?
コンパイル時には入力ファイルセットが不明な場合、ディレクトリからファイルパスを読み取るのはリストパターンの自然な拡張です。 以下のスニペットはすべての `.pdf` ファイルをフォルダーから収集し、ファイル名でソートして順番にマージします。
```java {title="ディレクトリをスキャンしてすべてのPDFファイルをマージする"}
//:path=/static-assets/pdf/content-code-examples/how-to/how-to-merge-two-pdf-files-java-tutorial/merge-directory-pdfs.java
インポート com.ironsoftware.ironPdf.PdfDocument;
インポート java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
インポート java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) throws IOException { {.
Path inputDir = Paths.get("assets/monthly-reports");
// ディレクトリからすべてのPDFファイルを収集し、ファイル名でソート
List<Path> pdfPaths = Files.list(inputDir)
.filter(p -> p.toString().endsWith(".pdf"))
.sorted(Comparator.comparing(Path::getFileName))
.collect(Collectors.toList());
// 各ファイルをPdfDocumentにロード
List<PdfDocument> documents = new ArrayList<>();
for (Path path : pdfPaths) {
documents.add(PdfDocument.fromFile(path));
}
// すべてのドキュメントをマージして結果を保存
PdfDocument combined = PdfDocument.merge(
documents.toArray(new PdfDocument[0])
);
combined.saveAs(Paths.get("assets/annual-report.pdf"));
}
}
このパターンはフォルダの任意のサイズに対応します。大規模なバッチ(50以上のファイル)には、すべてのファイルを同時に読み込むのではなく、メモリ使用量のピークを制限するためにチャンクごとに読み込みとマージを検討してください。
2024-01.pdf, 2024-02.pdf) に従うファイルの場合、カスタム Comparator を使用して pdfPaths をソートします。 ゼロパディングされた月番号でアルファベット順ソートが自然に機能します。マージ後、結合されたドキュメントをさらに洗練したいかもしれません。 IronPDF for Javaはカスタムヘッダーとフッターの追加、透かしの適用、ファイルサイズを縮小するための最終出力の圧縮をサポートしています。
JavaでのPDFマージの次のステップは何ですか?
このガイドでは、IronPDF for Javaを使用した4つのマージパターンを扱いました:HTMLコンテンツをPDFにレンダリングしてからマージする、ディスクから既存のファイルをロードして組み合わせる、リストで可変長のドキュメントバッチを処理する、自動的にPDFをマージするためにディレクトリをスキャンする。 すべての場合において、PdfDocument.merge() はソースのフォーマットを保持します -- フォント、画像、およびページレイアウトは、出力に追加の設定を必要とせずに引き継がれます。
IronPDF for Javaができることをさらに探求するには、Java マージ PDF チュートリアルで追加のパターンを確認するか、JavaでPDFにデジタル署名を追加する方法を確認して、結合された出力に署名を追加してください。 ページレベルの操作 -- 再注文、削除、個々のページの抽出 -- については、特定ページを削除する例を参照してください。
自分のプロジェクトで試してみますか? 無料トライアルを開始 -- クレジットカードは必要ありません。 展開の準備ができたら、チームやエンタープライズ用途のライセンスオプションを確認してください。
よくある質問
JavaでPDFファイルをマージする最も簡単な方法は何ですか?
最も簡単な方法はIronPDF for JavaのPdfDocument.merge(pdf1, pdf2)です。PdfDocument.fromFile(Paths.get("file.pdf"))で各ファイルを読み込み、両方をmerge()に渡し、結果をmerged.saveAs()で保存します。
JavaでIronPDFを使用してPDFをマージするための前提条件は何ですか?
Java 8以上が必要で、JAVA_HOMEが設定され、IntelliJ IDEAやEclipseなど for Java IDEがあり、MavenまたはGradleが構成され、プロジェクトのpom.xmlまたはbuild.gradleファイルにIronPDF依存関係が追加されています。
Javaで一度に2つ以上のPDFファイルをマージできますか?
はい。PdfDocument.merge()は、可変長の引数リストを受け入れるので、3つ以上のPdfDocumentオブジェクトを直接渡すことができます。動的コレクションの場合、list.toArray(new PdfDocument[0])を使用してList<PdfDocument>を配列に変換し、それをmerge()に渡します。
JavaでPDFをマージする際にページ順序を制御するにはどうすればよいですか?
出力のページはmerge()に渡された引数と同じ順序で表示されます。リストを動的にビルドしている場合は、merge()を呼び出す前に、それをソートしてください。たとえば、ファイル名やドキュメントメタデータ内の日付フィールドでソートします。
JavaでHTMLから生成されたPDFをマージするにはどうすればよいですか?
PdfDocument.renderHtmlAsPdf(htmlString)を各HTMLセクションに対して呼び出して、メモリ内のPdfDocumentを生成し、これらのオブジェクトをPdfDocument.merge()に渡します。中間ファイルはディスクに書き込まれません。
Javaでマージ後に実行できる追加のPDF操作は何ですか?
マージ後、IronPDF for Javaは、ヘッダーとフッターの追加、カスタム透かしの適用、ファイルサイズを削減するための出力の圧縮、デジタル署名の追加、個々のページの抽出や削除、フォームフィールドの記入をサポートしています。


