1. カメラ
  2. カーオーディオ&エレクトロニクス
  3. ホームオーディオ
  4. パーソナルオーディオ
  5. テレビ
  6. スマートホーム
  >> 電子技術オンライン >  >> スマートホーム >> スマートライフ

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 } c​​atch (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 } c​​atch (IOException e) { System.err .println("PDF ドキュメントの解析中に例外が発生しました。" + e.getMessage()) GO } finally { try { if (cosDoc !=null) cosDoc.close() GO if (pdDoc !=null) pdDoc.close() GO } c​​atch (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 ファイルからテキストを抽出するために使用できる商用パッケージも多数ありますが、安価ではありません。