テキストと比較して、画像は通常、意味を伝えやすく、PDFドキュメントをより魅力的なものにすることができます。画像はPDFにおいて重要な役割を果たすため、PDFへの画像を挿入、置換、削除、抽出する方法を知っておくことは、すべての開発者にとって真の利益となり得ます。この記事では、Free Spire.PDF for Javaを使用して、PDF内の画像関連の操作を処理する方法を紹介します。
【依存関係の追加】
この方法は、無料のFree Spire.PDF for Javaが必要ですので、先にjarファイルをインポートしてください。
1. Maven
Maven を使用している場合、プロジェクトの pom.xml ファイルに以下のコードを追加することで、簡単にアプリケーションに JAR ファイルをインポートすることができます。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf.free</artifactId>
<version>5.1.0</version>
</dependency>
</dependencies>
2. 公式サイトよりJarファイルをダウンロード
まず、Free Spire.PDF for Java の公式サイトよりzipファイルをダウンロードします。zipファイルを解凍し、libフォルダの下にあるSpire.Pdf.jarファイルを依存関係としてプロジェクトにインポートしてください。
PDFに画像を指定した位置に挿入する
drawImage() メソッドは、指定した幅と高さの画像を、PDFページ上の指定した位置に描画するために使用されます。したがって、描画の前にあらかじめ画像のサイズを変更する必要はありません。
以下は、Javaで新しいPDFドキュメントに画像を挿入するための主な手順です。
- PdfDocument クラスのオブジェクトを作成します。
- PdfDocument.getPages().add() メソッドを使用して、PDFにページを追加します。
- PdfImage.fromFile() メソッドを使用して画像を読み込みます。
- 画像のサイズとページ内の位置を指定します。
- PdfPageBase.getCanvas.drawImage() メソッドを使用して、ページ上に画像を描画します。
- PDFドキュメントを保存し ます。
Java
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.PdfImage;
public class insertImage {
public static void main(String[] args) {
//PdfDocumentクラスのオブジェクトを作成する
PdfDocument doc = new PdfDocument();
//ページの余白を設定する
doc.getPageSettings().setMargins(30);
//ページを追加する
PdfPageBase page = doc.getPages().add();
//画像を読み込む
PdfImage image = PdfImage.fromFile("C:/Sample.jpg");
//画像の幅と高さをPDFで指定する
float width = image.getWidth() * 0.5f;
float height = image.getHeight() * 0.5f;
//画像の描画位置を指定する
double x = 0f;
float y = 0f;
//ページに画像を描く
page.getCanvas().drawImage(image, x, y, width, height);
//ドキュメントを保存する
doc.saveToFile("画像の挿入.pdf", FileFormat.PDF);
}
}
【結果のPDFファイル】
PDF内の画像を別の画像に置き換える
replaceImage() メソッドを使用すると、PDF内の画像を置き換えることができます。このメソッドは、置き換えられた新しい画像のサイズを自動的に変更し、周囲にある他の要素の可読性に影響を与えないようにします。
以下は、その手順です。
- PdfDocument クラスのオブジェクトを作成します。
- PdfDocument.loadFromFile() メソッドを使用して既存の PDF ドキュメントを読み込みます。
- PdfDocument.getPages().get() メソッドを使用して特定のページを取得します。
- PdfImage.fromFile() メソッドを使用して画像を読み込みます。
- PdfDocument.replaceImage() メソッドを使用して、ドキュメント内の特定の画像を新しい画像に置き換えます。
- PDFドキュメントを保存します。
Java
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.PdfImage;
public class replaceImage {
public static void main(String[] args) {
//PdfDocumentクラスのオブジェクトを作成する
PdfDocument doc = new PdfDocument();
//PDFファイルを読み込む
doc.loadFromFile("C:/Sample.pdf");
//最初のページを取得する
PdfPageBase page = doc.getPages().get(0);
//画像を読み込む
PdfImage image = PdfImage.fromFile("C:/Sample1.jpg");
//ページ内の最初の画像を読み込まれた画像に置き換える
page.replaceImage(0, image);
//ファイルを保存する
doc.saveToFile("画像の置き換え.pdf", FileFormat.PDF);
}
}
【結果のPDFファイル】
PDF内の指定した画像を削除する
PDFドキュメント内の画像は、deleteImage() メソッドを使用することで簡単に削除することができます。
以下はその手順です。
- PdfDocument クラスのオブジェクトを作成します。
- PdfDocument.loadFromFile() メソッドを使用して既存の PDF ドキュメントを読み込みます。
- PdfDocument.getPages().get() メソッドを使用して特定のページを取得します。
- PdfPageBase.deleteImage(int imageIndex) メソッドを使用して、特定の画像をそのインデックスで削除します。
- PDFドキュメントを保存します。
Java
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
public class removeImage {
public static void main(String[] args) {
//Create a PdfDocument object
PdfDocument doc = new PdfDocument();
//Load the sample PDF file
doc.loadFromFile("C:/Sample.pdf");
//Get the specified page
PdfPageBase page = doc.getPages().get(0);
//Delete a particular image by its index
page.deleteImage(0);
//Save the file
doc.saveToFile("画像の削除.pdf", FileFormat.PDF);
}
}
【結果のPDFファイル】
PDFから画像を抽出する
PDFページの画像は、extractImages() メソッドを使用して抽出することができます。
以下は、Free Spire.PDF for Javaを使用してPDFドキュメントからすべての画像を抽出する手順です。
- PdfDocument クラスのオブジェクトを作成します。
- PdfDocument.loadFromFile() メソッドを使用して既存の PDF ドキュメントを読み込みます。
- PdfDocument.getPages().get() メソッドを使用して、特定のページを取得します。
- ドキュメント内のすべてのページをループし、PdfPageBase.extractImages() メソッドを使用して特定のページから画像を抽出します。
- 画像を.pngファイルとしてフォルダに保存します。
Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class extractImages {
public static void main(String[] args) throws IOException {
//PdfDocumentクラスのインスタンスを作成する
PdfDocument doc = new PdfDocument();
//PDFドキュメントを読み込む
doc.loadFromFile("C:/Sample.pdf");
//int型変数を宣言する
int index = 0;
//全ページをループする
for (Object page : doc.getPages()) {
PdfPageBase pageBase = (PdfPageBase) page;
//指定されたページから画像を抽出する
for (BufferedImage image : pageBase.extractImages()) {
//ファイルのパスと名前を指定する
File output = new File("C:/抽出された画像/" + String.format("Image_%d.png", index++));
//画像を.pngファイルとして保存する
ImageIO.write(image, "PNG", output);
}
}
}
}
【抽出された画像】
この記事では、PDFドキュメント内の画像を扱ういくつかの方法を紹介します。PDFドキュメントの取り扱いに関するより詳細な情報は、Spire.PDF Forumをご覧下さい。