2013-05-15 6 views
6

Javaを使用してPDFページにテキストが含まれているのか、PDFページにテキストが含まれているかどうかを確認するか、純粋に画像であるかどうかを確認する

私は多くのフォーラムやウェブサイトを通じて検索が、私はまだ答えを見つけることができません。

それはページがフォーマットの画像やテキストであるかどうかを知るために、PDFからテキストを抽出することは可能ですか?

PdfReader reader = new PdfReader(INPUTFILE); 
     PrintWriter out = new PrintWriter(new FileOutputStream(OUTPUTFILE));    
     for (int i = 1; i <= reader.getNumberOfPages(); i++) { 
     // here I want to test the structure of the page !!!! if it's possible       
     out.println(PdfTextExtractor.getTextFromPage(reader, i)); 
     } 
+1

これはかなり正確に関わっているようです。多分あなたはここに恩恵を必要とするでしょう – Coffee

+1

アデルさんありがとうございました私はそう願っています:) –

答えて

6

あなたが望むことをする防水方法はありません。

テキストは、PDFファイル内でさまざまな方法で表示されます。たとえば、テキスト状態を使用する代わりに、グラフィックステート演算子を使用してすべてのグリフを描画できます。 (これは中国語のように聞こえて申し訳ありませんが、適切なPDF言語であることを保証できます)

最も一般的な状況をカバーし、しばらくしてエキゾチックなPDFを見逃すアドホックな解決策があればOKですあなたのために、あなたはすでに良い最初の回避策を持っています。あなたのコードで

、すべてのページの上にあなたのループ、およびページ上の任意のテキストがあります場合は、iTextのを頼みます。それはすでに良い指標です。

内部的には、あなたのコードはRenderListenerインタフェースを使用しています。 iTextはページのコンテンツを解析し、特定のRenderListener実装のメソッドをトリガーします。これはカスタム実装の実装です:MyTextRenderListener。このカスタム実装は、ParsingHelloWorldの例で使用されています。

renderImage()メソッドもあります(MyImageListenerなどを参照)。このメソッドがトリガーされた場合は、ページ内にイメージがあることを100%確信しています。ImageRenderInfoオブジェクトを使用して、イメージの位置、幅、高さを取得できます。 getImageCTM()メソッドによって返されたMatrix)。これらすべての要素を使用して

、あなたはすでにあなたが必要なものを達成するために長い道のりを取得しますが、常にすべてのチェックをエスケープしますエキゾチックなPDFファイルが存在することを知ることができます。

+0

非常に多くのMr @ Bruno Lowagie –

関連する問題