Java で PDF ファイルを読み取る方法

すぐに利用できるライブラリを使用して、Java で PDF ファイルを読み取ることは難しくありません。 PDF ファイルを読み取ると、それらのファイル内のテキストを処理できる Java プログラムを作成できます。 PDF ファイルを読み取るためのオプションの 1 つは、Apache から入手できる無料のオープンソース PDFBox ライブラリです。 Eclipse Java 開発プラットフォームは、この作業を容易にし、ダウンロードするライブラリーを管理します。これらの Java ライブラリを利用するには、Java プログラミングに精通している必要があります。
必要なライブラリを集める
ステップ 1
Sun の Web サイトから Java JDK をダウンロードします。これは、実行してシステムにインストールできる実行可能ファイルです。バージョンは、Windows、Mac、および Linux で利用できます。赤い「ダウンロード」ボタンをクリックします。プロンプトが表示されたら、「jdk-6uxx-windows-xxx.exe」という名前のファイルを保存します。このファイルを保存し、ダブルクリックして Java インストーラーを起動します。
ステップ 2
Eclipse 開発システムをダウンロードし、最上位ディレクトリに解凍します。 「Java 開発者向け Eclipse IDE」を選択します。これにより、「eclipse-java-galileo-SR2-win32.zip」のダウンロードが開始されます。ダウンロードが完了したら、ファイルをダブルクリックして解凍します。 「C:」ルート ディレクトリの場所を選択して、Eclipse を解凍します。
ステップ 3
Eclipse の zip ファイルを解凍して作成したディレクトリにある「eclipse.exe」をダブルクリックして、Eclipse を起動します。 Eclipse システムで、「PrintPdf」という名前のプロジェクトを作成します。 「ファイル」、「新規」、「Java プロジェクト」の順に選択します。表示されるダイアログボックスにプロジェクト名「PrintPdf」を入力します。 「ソース ファイルとクラス ファイル用に別のフォルダーを作成する」というラジオ ボタンが選択されていることを確認します。 [完了] をクリックします。
ステップ 4
「PrintPdf」プロジェクトに「lib」フォルダーを作成します。 「PrintPdf」プロジェクトを右クリックし、「新規」、「フォルダー」の順に選択します。名前に「lib」と入力し、[完了] をクリックします。
ステップ 5
Apache サイトから Apache "PDFBox.jar" をダウンロードし、作成した lib ディレクトリにコピーします。同じ Web ページで、「fontbox-nn.jar」ファイルと「jempbox-nn.jar」ファイルをダウンロードします。いずれの場合も、その jar ファイルをクリックすると、このファイルを提供できる複数のサーバーから 1 つを選択できるページが表示されます。それぞれを選択すると、各 jar ファイルがダウンロードされます。各 jar ファイルを作成したばかりの lib ディレクトリにコピーします。
ステップ 6
同じ方法で Apache log4j.jar パッケージをダウンロードし、log4j.jar ファイルをディレクトリにコピーします。 Apache PDFBox ライブラリはこの Apache ログ ライブラリを使用するため、このファイルが存在する必要があります。
ステップ 7
Apache Commons Discovery パッケージを zip ファイルとしてダウンロードします。 zip ファイルをダブルクリックし、「commons-discovery-nn.jar」を選択して lib ディレクトリに展開します。
ステップ 8
Eclipse で、「lib」ディレクトリをクリックし、「F5」を押します。追加したすべての jar ファイルが表示されていることを確認してください。
ステップ 9
PrintPDF プロジェクトを右クリックし、[プロパティ] を選択します。 「Java ビルド パス」を選択し、「ライブラリ」タブを選択します。 [Add jars] をクリックして、作成したばかりの lib ディレクトリに移動し、「commons-logging-nn.jar」、「fontbox-nn.jar」、「jempbox-nn.jar」、「log4j-nn.jar」を追加します。 、」および「pdfbox-nn.jar」。 [OK] をクリックします。
PDF を読み取るコードを書く
ステップ 1
「PrintPDF」プロジェクトの「src」フォルダーを右クリックし、「新規」および「パッケージ」を選択します。意味のある名前を使用してパッケージを作成します。たとえば、パッケージに「com.pdf.util」という名前を付けます。 [完了] をクリックします。
ステップ 2
作成したばかりのパッケージ名を右クリックし、[新規]、[クラス] の順に選択します。 「PDFTextParser」という名前のクラスを作成します。システムが「main」メソッドを作成するように、「public static void main...」とマークされたチェックボックスを必ずクリックしてください。
ステップ 3
「PDFTextParser」クラスの「main」メソッドを編集して、次のコードを含めます:
public static void main(String args[]){ PDFTextParser pdf =new PDFTextParser("data/javaPDF.pdf") GO //結果を出力 System.out.println(pdf.getParsedText()) GO }
印刷したいファイルはコンストラクターで PDFTextParser ("data/JavaPDF.pdf") に綴られていることに注意してください。コマンドライン引数としても簡単に使用できます:
PDFTextParser pdf = new PDFTextParser(argv[0])
GO
または GUI インターフェースから選択します。
PDFTextParser クラスのインスタンスを作成し、その「getParsedText」メソッドを呼び出します。
ステップ 4
作成された最上位のクラス行「public class PDFTextParser」のすぐ下に次のコードを挿入します。
プライベート PDFParser パーサー =null GO
// Extract text from PDF Document public PDFTextParser(String fileName) { File file = new File(fileName)
GO if (!file.isFile()) { System.err.println("File " + fileName + " does not exist.") GO } //PDF パーサーのインスタンスを設定 try { parser =new PDFParser(new FileInputStream( file)) GO } catch (IOException e) { System.err.println("PDF パーサーを開けません。" + e.getMessage()) GO } } //------------- ------------------ public String getParsedText() { PDDocument pdDoc =null GO COSDocument cosDoc =null;
文字列 parsedText =null; GO
try { PDFTextStripper pdfStripper = new PDFTextStripper()
GO parser.parse() GO cosDoc =parser.getDocument() GO pdDoc =new PDDocument(cosDoc) GO
//get list of all pages List<PDPage> list = pdDoc.getDocumentCatalog().getAllPages()
GO
//note that you can print out any pages you want //by choosing different values of the start and end page pdfStripper.setStartPage(1); //1-based int length = list.size(); //total number of pages pdfStripper.setEndPage(length); //last page //get the text for the pages selected parsedText = pdfStripper.getText(pdDoc)
GO } catch (IOException e) { System.err .println("PDF ドキュメントの解析中に例外が発生しました。" + e.getMessage()) GO } finally { try { if (cosDoc !=null) cosDoc.close() GO if (pdDoc !=null) pdDoc.close() GO } catch (IOException e) { e.printStackTrace() GO } }
parsedText を返す }
ステップ 5
プログラムを実行します。 PDFTextParser クラスを右クリックし、[Run As] をクリックしてから [Java program] をクリックします。プログラムが実行され、コードに入力した PDF ファイルのテキスト コンテンツが出力されます。
Log4j 起動エラー メッセージの抑制
ステップ 1
起動時に構成ファイルが見つからない場合に生成される Java ロギング システム log4j エラー メッセージを抑制する構成ファイルを作成します。 PrintPDF プロジェクトの「src」フォルダを右クリックし、「新規」、「ファイル」の順に選択します。ファイルに「log4j.properties」という名前を付けます。Eclipse は、この新しいファイルに対して空の画面を表示します。
ステップ 2
「log4j.properties」ファイルを表す空の画面に次の行を貼り付けます。
ルート ロガー レベルを DEBUG に設定し、その唯一のアペンダーを A1 に設定します。 log4j.rootLogger=警告、A1
A1 は ConsoleAppender に設定されます。 log4j.appender.A1=org.apache.log4j.ConsoleAppender
A1 は PatternLayout を使用します。 log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
ステップ 3
「log4j.properties」ファイルを保存します。最上位の「src」ディレクトリにこのファイルが存在すると、log4j 起動メッセージと簡単なログ メッセージが抑制されます。 log4j システムは実際のエラーのみを出力します。
ヒント
PDF ファイルからテキストを抽出するために使用できる商用パッケージも多数ありますが、安価ではありません。