PDFは、あらゆるソフトウェアやハードウェアに対応できる汎用性の高い形式です。そのため、あらゆる職場で利用されています。画像ファイルをPDFに変換する際、画像のデザインをそのままに変換できるため、見た目は全く変わりません。今回は、Free Spire.PDF for Javaを使用して、PNG(または任意の画像形式)ファイルを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ファイルを依存関係としてプロジェクトにインポートしてください。
PNGファイルを画質を維持したまま1つのPDFに変換する
主な手順は以下の通りです。
- PdfDocument クラスのオブジェクトを作成します。
- PdfDocument.getPageSettings.setMargins() メソッドを使用して、ページマージンを0に設定する。
- フォルダ内の画像ファイルの抽象パスを取得します。
- 画像をループして特定の画像を取得し、PdfImage.fromImage() メソッドを使用して PdfImage クラスのオブジェクトにそれを読み込み、画像の幅と高さを取得します。
- PdfDocument.getPages().add() メソッドを使用して、画像のサイズに基づいてPDFにページを追加します。
- PdfPageBase.getCanvas().drawImage() メソッドを使用して、ページ上の座標 (0, 0) に PdfImage クラスのオブジェクトを描画してください。
- 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.File;
import java.io.FileInputStream;
import java.io.IOException;
public class convertPNGToPDF {
public static void main(String[] args) throws IOException {
//PdfDocument クラスのオブジェクトを作成する
PdfDocument doc = new PdfDocument();
//余白を0に設定する
doc.getPageSettings().setMargins(0);
//ディレクトリのFileオブジェクトを作成する
File directoryPath = new File("D:/Images");
//フォルダ内の画像ファイルの抽象パスを取得する
File filesList[] = directoryPath.listFiles();
//画像をルー プする
for (int i = 0; i < filesList.length; i++) {
//BufferedImageに画像を読み込む
BufferedImage bufferedImage = ImageIO.read(new FileInputStream(filesList[i].getAbsolutePath()));
//PdfImage クラスのオブジェクトを作成する
PdfImage pdfImage = PdfImage.fromImage(bufferedImage);
//画像の幅と高さを取得する
int width = pdfImage.getWidth();
int height = pdfImage.getHeight();
//画像と同じ大きさのページを追加する
PdfPageBase page = doc.getPages().add(new Dimension(width, height));
//ページの(0, 0)に画像を描画する
page.getCanvas().drawImage(pdfImage, 0, 0, width, height);
}
//ファイルに保存する
doc.saveToFile("PNGからPDFへの変換.pdf");
}
}
【結果のPDFファイル】
PNGファイルを画質を圧縮してPDFに変換する
高画質の画像をPDFに合成する場合、PDFのサイズが大きくなる傾向があります。生成されるPDFドキュメントのサイズを小さくしたい場合は、画質を圧縮しながら結合することができます。
以下はその手順です。
- PdfDocument クラスのオブジェクトを作成します。
- PdfDocument.getPageSettings.setMargins() メソッドを使用して、ページマージンを0に設定する。
- フォルダ内のイメージファイルの抽象パスを取得します。
- 画像をループして特定の画像を取得し、PdfImage.fromImage() メソッドを使用して PdfImage クラスのオブジェクトにそれを読み込み、画像の幅と高さを取得します。
- PdfDocument.getPages().add() メソッドを使用して、画像のサイズに基づいてPDFにページを追加します。
- PdfPageBase.getCanvas().drawImage(PdfImage image, int compressionQuality, float x, float y, float width, float height) メソッドを用いて、ページ上の座標 (0, 0) に画像を圧縮品質で描画しています。compressionQuality パラメータは1~100の範囲です。1は、画像が元の品質の1%に圧縮されることを意味し、100は、画像が圧縮されないことを意味します。
- 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.File;
import java.io.FileInputStream;
import java.io.IOException;
public class convertPNGToPDFCompressingQuality {
public static void main(String[] args) throws IOException {
//PdfDocument クラスのオブジェクトを作成する
PdfDocument doc = new PdfDocument();
//余白を0に設定する
doc.getPageSettings().setMargins(0);
//ディレクトリのFileオブジェクトを作成する
File directoryPath = new File("D:/Images");
//フォルダ内の画像ファイルの抽象パスを取得する
File filesList[] = directoryPath.listFiles();
//画像をループする
for (int i = 0; i < filesList.length; i++) {
//BufferedImageに画像を読み込む
BufferedImage bufferedImage = ImageIO.read(new FileInputStream(filesList[i].getAbsolutePath()));
//PdfImage クラスのオブジェクトを作成する
PdfImage pdfImage = PdfImage.fromImage(bufferedImage);
//画像の幅と高さを取得する
int width = pdfImage.getWidth();
int height = pdfImage.getHeight();
//画像と同じ大きさのページを追加する
PdfPageBase page = doc.getPages().add(new Dimension(width, height));
//ページの(0, 0)に画像を描画する
page.getCanvas().drawImage(pdfImage,30,0, 0, width, height);
}
//ファイルに保存する
doc.saveToFile("画質の圧縮.pdf");
}
}
【結果のPDFファイル】
この記事では、異なる画質でPNG画像をPDFファイルに変換する方法を学ぶことができます。あなたはまだこの記事を読んだ後、いくつかの問題がある場合は、より多くの情報のためのSpire.PDF Forumに移動してください。