2011-04-05 86 views
1

我工作的一個網站,動態創建PDF文件上。PDF控件呈現文本不同

我一直在玩兩種不同的pdf控件 - wpcubedabcpdf,並且很驚訝地發現它們都呈現不同的文字。

wpCubed:

enter image description here

abcpdf:

enter image description here

它們都採用宋體25pt大膽,所以我希望他們看起來完全相同。任何人都可以解釋他們爲什麼沒有。

下面是完整的文件:wpCubedabcpdf

+1

在呈現文字時,他們可能會使用不同的縮放級別/ dpi。 – iPDFdev 2011-04-05 16:33:14

+0

pdf查看器的縮放級別絕對相同。我確定我檢查了這一點。 – Urbycoz 2011-04-06 07:32:44

+0

縮放級別實際上取決於用於100%縮放的參考dpi。例如,Adobe Reader可以使用110 dpi(或其他可以在首選項中設置的自定義值)作爲100%縮放的參考,因此Adobe Reader的100%縮放不會像Foxit的100%縮放那樣相同。如果你可以在某個地方發佈文件,我可以看看它。我們公司還開發PDF Viewer,PDFView4NET(http://www.o2sol.com/pdfview4net/overview.htm),歡迎您來看看它。 – iPDFdev 2011-04-06 07:56:32

回答

3

幾種不同的可能性:

  1. 在你的PDF視圖縮放級別。如果您的默認視圖是適合寬度,並且默認頁面大小不同,這可能會發生很微妙的。
  2. 克寧。兩個字符之間的間距可以根據這些字符的大小來調整。在「Ti」中,「i」通常比「T」更接近於「T」。如果一個人支持而另一個不支持,你的輸出將會有不同的寬度。
  3. 連字。經典例子是「fi」,其中i的點和「f」的懸垂點是相同的像素。如果一個人支持而另一個不支持,你的輸出將會有不同的寬度。
  4. 路徑VS字體。可以使用文本運算符或直線到曲線運算符來繪製給定的文本字符串。後者效率極低,但有時是正確繪製給定文本的唯一方法。拼湊的文本可能會因缺乏字體「暗示」而受到影響......爲了使文本與像素對齊,使用了各種技巧。

如果無法訪問您的PDF輸出,它不可能是肯定的。

話雖如此,這幾個字符的長寬比看起來不一樣。比較兩個字符串中「測試」中的「e」。 abcpdf中的「e」看起來比wbCubed中的「e」更寬。這不是字距,連字或縮放級別。它甚至可能不是路徑與字體。

所以可以看到你們的PDF文件?


下面是wpcubed

  
    BT 1 0 0 1 0 0 Tm 
    /F1 22.500 Tf 0 Ts 0 g -2.667 Tw 452 -18 Td(This is a test)Tj 
    ET 

內容流在這裏從abcpdf的內容流:

 
    BT 
    0 0 0 rg 
    /Fabc5 25 Tf 
    1 0 0 1 444.825 822 Tm 
    (This is a test) Tj 
    0.25 0 Td 
    (This is a test) Tj 
    0.25 0 Td 
    (This is a test) Tj 
    0.25 0 Td 
    (This is a test) Tj 
    ET 

嘿: 「窮人的大膽」。讓我檢查字體資源...是的。

wpcubed使用 「宋體,黑體」。 abcpdf正在使用「ArialMT」,並且使用微小的偏移量多次打印相同的單詞。

你可能會說服abcpdf使用「Arial,bold」,在這種情況下,我希望兩個輸出看起來完全相同。我之前沒有看過abcpdf,但它可能是可能的。

我剛剛檢查了他們的文檔,它看起來像XFont.findFamily("Arial")將是要走的路。你會檢查一個返回的XFonts的數組是否真的是Arial Bold,而不是一些具有正常Arial的人造粗體技術。你可能想看看XFont.names而不是XFont.name

這個特殊的「讓它看起來大膽」的技巧有一個嚴重的缺點:複製粘貼將獲取文本的所有4個實例。更友好的方法是根據字體的一小部分點的大小(iText使用1/30)來定義線條粗細,並且都是筆畫和填充字體。字體通常只是填充,所以該行的粗細會添加到字體的外部,沒有額外的單詞可以讓某個人選擇/屏幕閱讀文本。

喲。屏幕閱讀器的盲人必須討厭這一點。

+0

謝謝。縮放級別絕對相同 - 我檢查了這一點。其他人是我會研究的可能性。 – Urbycoz 2011-04-06 07:22:21

+0

我已經添加了pdf文件的鏈接。 – Urbycoz 2011-04-06 08:14:41

+0

謝謝。我現在已經從使用粗體的「Arial」改爲「Arial Bold」。它的工作原理。 (也讓我的白人加倍乾淨!) – Urbycoz 2011-04-07 12:24:20