2017-10-09 4 views
0

Apache PDFBoxを使用してファイル内の個々のPDFページに対して文字列検証を実行しようとしています。PDFBox - 2.0.3 - PDFTextStripperはクロッピング/ローテーションの前にページから古いテキストを取得します。

私はPDFTextStripperを大部分のために利用するつもりです。最初の問題は、私が検証するすべてのPDFが2upとして生成されるという事実でした。例:ページ1/2と2/2ページが同じページにあるか、文字通り本をスキャナに向かってスキャンしたと想像した場合 - PDFTextStripperがそれらを読むことができるように、正しく。

以下の質問/解決策の要素を使用して、私は最初にページを半分に正確に切り抜き、切り取ったページを新しいファイルに順にエクスポートし、各ページを正しい向きに回転させ、 ;

Rotate PDF around its center using PDFBox in java

Split a PDF page in two parts [duplicate]

視覚的に、私の方法一見、私はそれに対してPDFTextStripperを実行するまで、期待通りに働いている - それは私が望んでいないだけでページのテキストを返すように見えますが、また、ページIそれから切り取った。

問題を確認するために、文書全体から単一のページを抽出して新しいファイルとして保存しました.PDFTextStripperを実行すると、文字通りすべてが1ページであっても同じ結果が得られます。アドビの検索では、隠された旧データも表示されません。

私の変換方法では、クロップされたページの内容のみでクロップされたページを再定義する必要があると思います。

私の質問は、どうすればいいですか?

PSは - それは、基本的には以上の上記のリンクで提供ソリューションの融合だと私は私のコードを投稿していない - しかし、それは私が必要な場合は、私は

答えて

1

PDFTextStripperを提供することができますがクロップボックスあなたが設定を無視しますページを切り抜く。また、テキストが塗りつぶされた矩形やイメージで覆われているかどうか、またはテキストが見えないかどうかは無視され、すべてのテキストが抽出されます(パターン内のテキストまたはタイプ3のフォント文字を含みます)。

代わりにPDFTextStripperByAreaをお試しください。このクラス(PDFTextStripperから派生)は、自分自身を定義できる領域に限定します。

(残念ながら、これらの領域はクロップボックスのために使用されているものとは異なる座標系を使用して定義する必要があるので、通常、あなたが最初の座標を変換する必要があります。)

+0

はMKLありがとう、私はこれを試してみましたそれは本当に私の問題を解決しました。 –

関連する問題