
はじめに
PDF はデジタル情報を保存や共有するために広く利用されています。PDF は情報の共有を容易にするだけでなく、使用するハードウェアやソフトウェアに関わらず、情報を確実に表示します。
PDF は優れたファイル形式ですが、数百ページにも及ぶ大きな PDF ファイルを扱う際に、実際にはごく一部のページだけが必要な時や、複数の PDF ファイルを 1 つのファイルに結合する必要がある時など、いくつかの課題も存在します。こうした課題に対処するには、xodo.com、Xodo PDF Studio、Apryse WebViewer などのアプリベースの PDF エディタを使用できます。ただし、プロセスの一部は依然として手動で行う必要があります。
より自動化されたアプローチとして、 Apryse SDK を使用することで、 PDF を複数のページに分割したり、複数の PDF を 1 つに結合したりするなど、様々な方法で PDF を操作できます。以下の例では Java を使用しますが、SDK は C++、.NET、Python、Node.js などの他の言語やフレームワークでも利用可能です。
始め方
始めるのはかなり簡単です。
- Apryse Server SDK をダウンロードします。今回は Java PDF ライブラリを選択します。
- .zip ファイルからフォルダーを抽出します。
- 無料トライアルキーを入手してください。
- 以下のサンプル タスクを処理するために必要な完全なコードについては、ドキュメントをご覧ください。各タスクの具体的なコードのサンプルも添付しています。
準備が整ったので、実際に何ができるかいくつか例を挙げて見ていきましょう。このブログでは、以下の方法をご紹介します。
- PDF を複数のページに分割する
- 複数の PDF を 1 つに結合する
- 2 ページごとに削除
PDF を複数のページに分割
PDF を複数のページに分割する必要がある場合があります。例えば、従業員のレポートを分割して、従業員ごとに個別のファイルを作成する場合などです。
そのために次のコードを使用します。
// Sample 1 - Split a PDF document into multiple pages
System.out.println("_______________________________________________");
System.out.println("Sample 1 - Split a PDF document into multiple pages...");
System.out.println("Opening the input pdf...");
try (PDFDoc in_doc = new PDFDoc(input_path + "newsletter.pdf")) {
in_doc.initSecurityHandler();
int page_num = in_doc.getPageCount();
for (int i = 1; i <= page_num; ++i) {
try (PDFDoc new_doc = new PDFDoc()) {
new_doc.insertPages(0, in_doc, i, i, PDFDoc.InsertBookmarkMode.NONE, null);
String fname = "newsletter_split_page_" + i + ".pdf";
new_doc.save(output_path + fname, SDFDoc.SaveMode.REMOVE_UNUSED, null);
// output PDF new_doc
System.out.println("Done. Result saved in newsletter_split_page_" + i + ".pdf");
}
}
} catch (Exception e2) {
System.out.println(e2);
}
複数の PDF を 1 つに結合
では、前の例を逆に考えてみましょう。従業員ごとに別々の PDF があり、それをマネージャー向けの 1 つのレポートに統合する必要があります。
次のコードを使用してこれらの PDF を結合してみましょう。
// Sample 2 - Merge several PDF documents into one
System.out.println("_______________________________________________");
System.out.println("Sample 2 - Merge several PDF documents into one...");
try (PDFDoc new_doc = new PDFDoc()) {
new_doc.initSecurityHandler();
int page_num = 15;
for (int i = 1; i <= page_num; ++i) {
System.out.println("Opening newsletter_split_page_" + i + ".pdf");
String fname = "newsletter_split_page_" + i + ".pdf";
try (PDFDoc in_doc = new PDFDoc(output_path + fname)) {
new_doc.insertPages(i, in_doc, 1, in_doc.getPageCount(), PDFDoc.InsertBookmarkMode.NONE, null);
}
}
new_doc.save(output_path + "newsletter_merge_pages.pdf", SDFDoc.SaveMode.REMOVE_UNUSED, null);
System.out.println("Done. Result saved in newsletter_merge_pages.pdf");
} catch (Exception e2) {
System.out.println(e2);
}
2 ページごとに削除
なぜこんなことをする必要があるのか、と疑問に思うかもしれません。では、レポートの例をもう一度見てみましょう。マージされたレポートは、従業員ごとに個別のセクションで構成されています。各セクションには 2 つのページがあり、1 つは従業員の統計情報、もう 1 つは目標と進捗状況です。必要なのは各従業員の統計情報のページだけなので、次のコードを使って 2 ページごとにページを削除し、レポート作成に必要なページだけを残します。
// Sample 3 - Delete every second page
System.out.println("_______________________________________________");
System.out.println("Sample 3 - Delete every second page...");
System.out.println("Opening the input pdf...");
try (PDFDoc in_doc = new PDFDoc(input_path + "newsletter.pdf")) {
in_doc.initSecurityHandler();
int page_num = in_doc.getPageCount();
while (page_num >= 1) {
PageIterator itr = in_doc.getPageIterator(page_num);
in_doc.pageRemove(itr);
page_num -= 2;
}
in_doc.save(output_path + "newsletter_page_remove.pdf", SDFDoc.SaveMode.NO_FLAGS, null);
System.out.println("Done. Result saved in newsletter_page_remove.pdf...");
} catch (Exception e2) {
System.out.println(e2);
}
その他の例
PDF ページの削除やページの切り取りなどの実行可能な操作の詳細な例については、ドキュメントを参照してください。
まとめ
Apryse PDF SDK を使って PDF を操作する様々な方法のうち、いくつかをご紹介しました。これらの例のコードを拡張することで、例えば、ページの分割、追加、削除、切り取り、並べ替え、あるいは PDF 内の単一ページまたは複数ページの回転など、PDF を操作するためのより複雑なソリューションを作成できます。
Apryse では無償トライアルを提供しています。是非お試しください。
Apryse 製品の詳細は、弊社 Web サイトをご確認ください。
記事参照:
© 2025 Apryse
「How to Merge, Split, and Reorder PDFs Using Java」