画像を PDF に変換することは、多くの理由で有益です。まず一つの理由として、画像をより読みやすく、簡単に共有できる形式に変換することができます。さらに、画像の品質を保ちながらファイルのサイズを劇的に削減することができます。この記事では、Spire.PDF for Java を使用して Java で画像を PDF に変換する方法を説明します。
Spire.PDF では画像を PDF に直接変換するための簡単な方法は提供されていません。ただし、新しい PDF ドキュメントを作成し、指定した位置に画像を描画することは可能です。生成された PDF のページサイズが画像と一致するかどうかによって、このトピックは2つのサブトピックに分けることができます。
Spire.PDF for Java をインストールします
まず、Spire. PDF for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。
<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</artifactId>
<version>9.12.0</version>
</dependency>
</dependencies>
さらに、最初のコード例では画像のリサイズに imgscalr ライブラリが使用されています。画像のサイズを調整する必要がない場合は、それをインストールする必要はありません。
指定した位置に画像を PDF に追加する
Spire.PDF for Java を使用して、指定された場所に画像を PDF に追加する手順は以下の通りです。
- PdfDocument オブジェクトを作成します。
- PdfDocument.getPageSettings().setMargins() メソッドを使用してページの余白を設定します。
- PdfDocument.getPages().add() メソッドを使用してページを追加します。
- ImageIO.read() メソッドを使用して画像を読み込み、画像の幅と高さを取得します。
- もし画像の幅がページ(コンテンツ領域)の幅よりも大きい場合、imgscalr ライブラリを使用して画像をページ幅に合わせるようにリサイズします。
- スケーリングされた画像または元の画像を基に PdfImage オブジェクトを作成します。
- PdfPageBase.getCanvas().drawImage() メソッドを使用して、PdfImage オブジェクトを最初のページの (0, 0) に描画します。
- PdfDocument.saveToFile() メソッドを使用してドキュメントを PDF ファイルとして保存します。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.PdfImage;
import org.imgscalr.Scalr;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.FileInputStream;
import java.io.IOException;
public class AddImageToPdf {
public static void main(String[] args) throws IOException {
// PdfDocumentオブジェクトを作成する
PdfDocument doc = new PdfDocument();
// マージンを設定する
doc.getPageSettings().setMargins(20);
// ページを追加する
PdfPageBase page = doc.getPages().add();
// 画像を読み込む
BufferedImage image = ImageIO.read(new FileInputStream("サンプル.jpg"));
// 画像の幅と高さを取得する
int width = image.getWidth();
int height = image.getHeight();
// PdfImage変数を宣言する
PdfImage pdfImage;
// 画像の幅がページの幅より大きい場合
if (width > page.getCanvas().getClientSize().getWidth()) {
// 画像をページの幅に合わせてリサイズする
int widthFitRate = width / (int) page.getCanvas().getClientSize().getWidth();
int targetWidth = width / widthFitRate;
int targetHeight = height / widthFitRate;
BufferedImage scaledImage = Scalr.resize(image, Scalr.Method.QUALITY, targetWidth, targetHeight);
// スケーリングされた画像をPdfImageオブジェクトに読み込む
pdfImage = PdfImage.fromImage(scaledImage);
} else {
// オリジナルの画像をPdfImageオブジェクトに読み込む
pdfImage = PdfImage.fromImage(image);
}
// 画像を(0, 0)の位置に描画する
page.getCanvas().drawImage(pdfImage, 0, 0, pdfImage.getWidth(), pdfImage.getHeight());
// ファイルに保存する
doc.saveToFile("output/画像の追加.pdf");
doc.close();
}
}
同じ幅と高さで画像を PDF に変換する
Spire.PDF for Java を使用して、画像と同じページサイズの PDF に画像を変換する手順は以下の通りです。
- PdfDocument オブジェクトを作成します。
- PdfDocument.getPageSettings().setMargins() メソッドを使用してページの余白をゼロに設定します。
- ImageIO.read() メソッドを使用して画像を読み込み、画像の幅と高さを取得します。
- PdfDocument.getPages().add() メソッドを使用して、画像のサイズに基づいてページを PDF に追加します。
- 画像を基に PdfImage オブジェクトを作成します。
- PdfPageBase.getCanvas().drawImage() メソッドを使用して、PdfImage オブジェクトを最初のページの座標 (0, 0) から描画します。
- PdfDocument.saveToFile() メソッドを使用してドキュメントを PDF ファイルとして保存します。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.PdfImage;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.FileInputStream;
import java.io.IOException;
public class ConvertImageToPdfWithSameSize {
public static void main(String[] args) throws IOException {
// PdfDocumentオブジェクトを作成する
PdfDocument doc = new PdfDocument();
// マージンを0に設定する
doc.getPageSettings().setMargins(0);
// 画像を読み込む
BufferedImage image = ImageIO.read(new FileInputStream("サンプル.jpg"));
// 画像の幅と高さを取得する
int width = image.getWidth();
int height = image.getHeight();
// 画像と同じサイズのページを追加する
PdfPageBase page = doc.getPages().add(new Dimension(width, height));
// 画像を基にPdfImageオブジェクトを作成する
PdfImage pdfImage = PdfImage.fromImage(image);
// 画像をページの(0, 0)の位置に描画する
page.getCanvas().drawImage(pdfImage, 0, 0, pdfImage.getWidth(), pdfImage.getHeight());
// ファイルに保存する
doc.saveToFile("output/同じサイズで画像をPDFページに変換.pdf");
}
}
一時ライセンスを申請する
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。