2017-10-09 29 views
0

我試圖通過使用Apache PDFBox對文件中的單個PDF頁面執行一些字符串驗證。PDFBox - 2.0.3 - PDFTextStripper在裁剪/旋轉之前從頁面中拾取舊文本

我打算在大多數情況下使用PDFTextStripper,因此我要解決的第一個問題是所有我要驗證的PDF都將生成爲2up;例如第1頁,共2頁和第2頁,共2頁在同一頁面上,或者如果您想象您將書本面朝下掃描至掃描儀 - 除此之外,它們的定向不正確,需要旋轉90度,因此PDFTextStripper可以讀取它們正常。

使用以下問題/解決方案的元素,我已經構建了一種方法,首先將頁面裁剪爲一半,將裁剪後的頁面導出爲新文件,將每個頁面旋轉到正確的方向,然後保存文件;

Rotate PDF around its center using PDFBox in java

Split a PDF page in two parts [duplicate]

在視覺上,我的方法似乎是按預期工作,直到我對它運行PDFTextStripper - 它似乎恢復不只是我想要的網頁的文本,但也頁I從中出來。

爲了確認問題,我從整個文檔中提取了一個頁面,並將其保存爲一個新文件 - 運行PDFTextStripper時,即使我看到的字面上只有一頁,仍然可以得到相同的結果。 Adobe搜索不會顯示隱藏的遺留數據。

我只能假設,在我的轉換方法,我需要重新定義裁剪頁面只有裁剪頁面的內容。

我的問題是,我該怎麼做?

ps的 - 我還沒有張貼了我的代碼,因爲它基本上是在上面的上述鏈接提供的解決方案的融合 - 但是如果我需要,我可以提供

回答

1

PDFTextStripper忽略裁剪框設置裁剪頁面。它還會忽略文本是否被某個填充的矩形或圖像覆蓋,或者文本是否不可見,它會提取所有文本(文本除外,或者包含在Type 3字體中)。

您可能想嘗試使用PDFTextStripperByArea。此類(從PDFTextStripper派生)將自己限制爲您可以定義的區域。

(不幸的是,這些地區必須使用不同的座標系用於裁剪框的一個定義,那麼通常你必須首先轉換座標。)

+0

謝謝MKL,我想這和它的確解決了我的問題。 –