2013-08-05 20 views
0

我正在使用iText的LocationTextExtractionStrategy類在PDF中查找特殊字符,該工具似乎正在工作。我得到一個iText向量,如94.5,698.9,1.0(來自getStartLocation())和100.5,698.9,1.0(來自getEndLocation)。我想知道這個位置是什麼,表示爲相對於頁面的百分比。目標是將PDF頁面導出爲圖像,並將其用於網頁上的div,並使用另一個div作爲覆蓋(半透明)來突出顯示該區域。例如,我可以找到一個人的名字,後面跟着特殊字符。我想把一個div放在特殊字符所在的那個位置上。由於我有iText矢量,如果我可以以某種方式將其轉換爲與PDF頁面相關的百分比,那麼我可以將該信息翻譯爲在div上使用。例如,頂部25.125%,左側30.55% - 如果位置偏離標記幾個像素,這是可以的,因爲我只是想突出顯示一般區域(垂直或水平給定或佔用大約5個像素)。如何將iText位置矢量轉換爲頁面上的相對位置,以百分比形式顯示

+0

距離左側相對距離的計算是'location.getEndLocation()。get(0)/ pageWidth)* 100'從上面的相對位置的計算仍然沒有我。 –

+0

明白了。由於PDF位置從左下角開始,所以必須從高度減去頂點:'((pageHeight - location.getEndLocation()。get(1))/ pageHeight)* 100' –

回答

1
leftPercent = (location.getEndLocation().get(0)/pageWidth) *100, 
topPercent = ((pageHeight - location.getEndLocation().get(1))/pageHeight) *100 

如果你有8.5英寸(寬)由11英寸(高)文件,則如果特殊字符是在矢量152,594,1.0然後方程將計算如下

leftPercent = (152/612) *100 = 25%topPercent = ((792 - 594)/792) *100 = 25%

在我的測試案例中,我故意將特殊字符從頂部放置25%,從左側放置25%。

+2

我提高了你的答案,但我想澄清你的解決方案只有在頁面左下角的座標爲0,0(所有PDF都應該假定的)時纔是正確的。 –

+0

此外,您應該檢查哪個頁面用於*將PDF頁面導出爲圖像*:它是否是媒體框?還是莊稼盒?或其他一些領域?取決於圖像左下角的座標及其高度和寬度可能會有所不同。 – mkl

+0

@mkl不確定你的意思。每個頁面都應該是一個單獨的圖像,並以與文檔外觀的完美表示相同的尺寸導出。我記錄每個頁面的座標,以便我可以分別顯示每個圖像文件,然後將上下文中的座標應用於顯示的頁面。只要尺寸相同,高度和寬度是否會發生變化並不重要,因爲從頂部的x%和從左側的y%轉換爲任何尺寸是因爲它們是相對的。我錯過了什麼嗎?謝謝! –

相關問題