2013-05-07 40 views
4

我已經使用itextsharp提取了PDF,然後將其轉換爲html,以便比較兩個PDF的格式。在這個我添加左和頂部位置的文字對齊。但只要我收到上標文字改變的位置。但是,當我檢查螢火蟲時,左右位置的位置與我使用Adobe Illustrator檢查的位置相同。任何人都可以聯繫我。爲什麼會發生這種情況。在我發佈的例子中,7位數字應該低於「was」,但是它遠離「was」enter image description here el。比較和提取文本時的位置

Vector curBaseline = renderInfo.GetBaseline().GetStartPoint(); 
Vector topRight = renderInfo.GetAscentLine().GetEndPoint(); 
y_direction_source = Form1.Pagesize_source +(height_extract_source_page - curBaseline[Vector.I2]); 
this.result.AppendFormat("<p style=\"left:{0}pt;top:{1}pt;\">" curBaseline[Vector.I1], y_direction_source); 

結果:

<p style="font-family:TimesNewRoman;font-size:12.2618001271429pt;font-weight:;font-style:;left:42pt;top:120.2399pt;position:absolute;"> 
<p style="background: cyan">training</p> 
<p style="background: cyan">camps</p> 
<pp style="background: cyan">in</p> 
<pp style="background: cyan">Afghanistan</p> 
<pp style="background: cyan">.</p> 
</p> 
<pp style="font-family:TimesNewRoman;font-size:10.2386067682737pt;font-weight:;font-style:;left:441.48pt;top:114.72pt;position:absolute;"> 
<pp style="background: cyan">7</p> 
</p> 
+0

請發佈相關代碼和PDF以使您的問題具有可重現性。 – mkl 2013-05-07 11:43:04

+0

你用什麼代碼來提取文本? 「was」和「7」的像素位置是什麼?什麼是輸出HTML和CSS? – 2013-05-07 11:45:46

+0

7的位置是441.48pt,y位置是114.72pt – pdp 2013-05-07 11:59:10

回答

1

我把你的代碼和opent它位在Chrome中。 42的絕對偏移導致我和我的最後7點之間的差距更大。此外,我不得不重新排列一些P和PP來獲得相似的結果。

需要瀏覽器182 px才能寫下「阿富汗訓練營」。但樣本的位置差異大約爲302。看起來像302-42父母有260偏移?

我的基於我在這裏看到的代碼的猜測是「阿富汗訓練營」。被定位在另一個elemnt內聯,而7不是。這不是問題,但是額外的差距使得難以提供解決方案。

另一方面,它也解釋了爲什麼會發生這種情況。沒有超級或下標這樣的東西。爲了像我們那樣行事,我們縮放字體並用偏移量打印。 這對於您翻譯的PDF來說沒有什麼不同。

因此,7定位不同,並使用與文本其餘部分不同的字體大小寫入。現在我不知道你的原始PDF是如何處理細節的,但你看到的效果可能是保證金的差異。

在PDF中,您可以爲字體設置多個不同的選項,如字間距或指定縮進級別。我會說你偏移的法線有一個左頁邊距,而7是真的放在絕對位置,或者使用的字體有一些特殊的設置,這會使句子變長。

既然你已經有Illustrator,你可以檢查是否不是7,但是。放置在相同的位置。我的猜測是,事實並非如此,而且7號的位置正確。它看起來像奇怪的一個,但純文本的其餘部分在html中的位置有所不同。

你可以做的是讓每個單詞都絕對定位,而不僅僅是線條。這將補償字體,類型settigns,瀏覽器行爲或其他影響方面的任何不同。

+0

@渡輪剩餘的文本位置與PDF中的位置相同 – pdp 2013-05-17 06:31:05