PDFファイルは常に多くの優れた情報コンテンツを携帯するために使われています。これらの情報をより良く利用するためには、いくつかのツールを使ってPDFからテキストと画像情報を抽出する必要があります。以下はJavaを通してPDFを抽出するテキストと写真を紹介します。
#####ツール使用:
- Free Spire Pdf for JAVA 2.4.4(無料版)
- Intellij IDEA / Eclipse
#####Jarパッケージ導入:
- 方法1: Free Spire.Pdf for Javaのストレスをオフィシャルサイトからダウンロードした後、IDEA又はEclipseにおいてShift+Ctrl+Alt+Sに追加導入Spire.Pdf.jarパケットをプログラムに追加することで、jarファイルを伸張経路下のlibフォルダで取得することができる。jarパッケージの導入結果は以下の通り:
- 方法2: mavenライブラリから導入する。導入方法を参考にする(https://www.e-iceblue.com/Tutorials/Licensing/How-to-install-Spire.PDF-for-Java-from-Maven-Repository.html)。
テストソースドキュメントは以下の通り:
##Javaコードの例参照:
####【例1】PDFのテキスト内容を抽出する
ステップ1: 名前空間を追加します;
import com.spire.pdf.*;
import java.io.FileWriter;
ステップ2: PDFのインスタンスを作成し、PDFソースファイルをロードする;
//Create the PDF
PdfDocument doc = new PdfDocument();
//Load the PDF file
doc.loadFromFile("data/Sample.pdf");
ステップ3: StringBuider法を使用して、PDFドキュメント全体を巡回巡回する文字バッファの例を定義する;
// Traverse the PDF
StringBuilder buffer = new StringBuilder();
for(int i = 1; i<doc.getPages().getCount(); i++){
PdfPageBase page = doc.getPages().get(i);
buffer.append(page.extractText());
}
ステップ4: 1つのwriterのインスタンスを定義してバッファエリアにデータを書き込み、write()を使ってバッファエリアのデータをtext.txtファイルに書き込み、保存する。
//save text
String fileName = "output/text.txt";
FileWriter writer = new FileWriter(fileName);
writer.write(buffer.toString());
writer.flush();
writer.close();
テキスト抽出結果:
####【例2】PDF中のピクチャを抽出する
ステップ1: 名前空間を追加します;
import com.spire.pdf.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
ステップ2: PDFのインスタンスを作成し、PDFソースファイルをロードする;
//Create the PDF
PdfDocument pdf = new PdfDocument();
//Load the PDF file
pdf.loadFromFile("data/Sample.pdf");
ステップ3: forループはPDFの各ページを巡回し、extractImages()方法を使って指定ページの画像を取得し、最後にPNG形式で画像を保存します。
// Declare an int variable
int index = 0;
// loop through the pages
for (int i= 0;i< pdf.getPages().getCount(); i ++){
//Get the PDF pages
PdfPageBase page = pdf.getPages().get(i);
// Extract images from a particular page
for (BufferedImage image : page.extractImages()) {
//specify the file path and name
File output = new File("output/" + String.format("Image_%d.png", index++));
//Save image as .png file
ImageIO.write(image, "PNG", output);
}
}