2011-04-19 40 views
9

我有一個非常奇怪的問題:我試圖導出包含Unicode字符(希臘語)爲PDF的賈斯珀報告。我的問題是,一個特定的希臘字符(字符三角洲)被打印在一個不同的字體,我正在使用(Arial)!賈斯珀報告與PDF和Unicode(希臘)字符

以下圖像從導出的PDF複製:

i dont like this

雖然以下圖像是從MS Word中使用相同的字體相同的文本:

this is much better

正如你可以看到,第三個字母(delta)與其他字母不同。對於所有字體大小,這隻會發生在這封信上。我也嘗試將字體更改爲garamond,但仍然出現與完全相同的字母相同的問題!

最後,我要補充一點,從iReport的內部預覽是好的,也行是出口到其他格式,如DOCX或HTML ...

更新20/04/11:我也試着用Foxit閱讀器輕鬆打開PDF - 但與Adobe Acrobat Reader具有完全相同的行爲。

更新28/04/11:我創建了snippet in pastebin,導出爲pdf時會產生問題。一個警告 - 您必須通過iReport的「選項 - 字體」來「安裝」您將使用的字體(Arial,在我的情況下),否則您將無法看到pdf中的任何內容。

更新13年5月3日SOLUTION:好,因爲有些人(可能來自希臘)仍然有同樣的問題,針對這一問題,我想再拍更新:我開始再次使用碧玉報告,但現在我正在使用更新版本的Jasper(Jasper 5)和iReport(iReport 5)。現在一切正常 - 在PDF中沒有問題的增量:)所以,只要嘗試升級iReport和Jasper庫,如果你遇到同樣的問題!

更新05/04/13最終評論:兩年後,我又能夠在有問題的希臘字符(delta)的系統上再次工作,並能夠得出有關問題的最終結論:所以,首先我升級了我們用於5.x的Jasper版本,但仍然遇到了問題!只有當我使用從iReport 5.x創建(導出)的新字體擴展名(.jar)更改問題時才解決問題。所以,問題在於當導出字體擴展名時,iReport 3.x(用於導出舊擴展名)沒有正確導出希臘字符delta,而iReport 5.x導出正確。所以我的建議仍然如此:任何有此問題的人都可以將Jasper版本升級到5.x,但也可以通過iReprot 5.x重新導出字體擴展名。我真的希望我不會再做任何更新:)

+1

什麼情況使用福昕閱讀器,Okular中,或xpdf? – 2011-04-19 22:39:36

+1

在iReport中爲PDF生成設置的字符編碼是什麼?另見:http://www.fileformat.info/info/unicode/char/394/index.htm – 2011-04-22 19:06:55

+0

@Dave Jarvis:Pdf編碼是一個不贊成的參數。無論如何,這是CP1250(中歐)在我的文本領域,我嘗試了CP1253(希臘語),Identity-H,Identity-V沒有運氣 - 可能沒有發生任何事情,因爲depracation ...你有我的鏈接是有問題的角色 - 但我能做些什麼呢? – Serafeim 2011-04-26 07:37:35

回答

2

字體擴展。答案是字體擴展。 (答案總是字體擴展名。)

當我運行你的報告時,我得到了一個不同的結果:我沒有看到任何希臘字符。我可以通過改變字體來解決它。或者我可以通過將Arial添加爲字體擴展來解決此問題。 (或者我可以通過將Arial放到類路徑中來解決它......但是不要這樣做,這是在尋求麻煩。)我之前寫過關於font extensions的文章。他們是爲了解決這類問題而創建的。這就是你應該使用的。

由於該報告對我的表現不同,我只能確定這是答案。讓我們知道。

+0

這似乎很有趣。問題是我已經換了工作,並且我不再使用碧玉(我以前的工作中的用戶學會了喜歡不同的三角洲!)我無法檢查你的答案,但是如果另一個有相同問題的人證實它有效,我會很樂意接受它。 – Serafeim 2011-12-23 09:44:27

1

如果有人來找我,在從PHP和FPDF生成PDF文件時,我遇到了類似的問題。在我的情況下,問題(和解決方案)是: 當FPDF通過MakeFont生成字體信息文件(font.php)時,它會創建一個/差異編碼序列(在PDF規格中定義) 然後嵌入PDF文件。 /差異序列使用來自「Adobe字形列表」(http://partners.adobe.com/public/developer/en/opentype/glyphlist.txt)的名稱,這與Unicode字形名稱不同。看着這份名單,我發現下面的條目:

Delta;2206 
Deltagreek;0394 <-- this is the correct unicode point 

的FPDF庫用的是「增量」的名字,這(我認爲)是爲了顯示數學計算「增量」的象徵。

通過修補生成的.php字體信息文件,並將「Delta」更改爲「Deltagreek」,問題就解決了。每個字體信息文件只需要執行一次。

雖然上述內容適用於PDF和FPDP和PHP,但我懷疑您遇到與Jasper相同的問題。你需要檢查碧玉如何處理編碼等

希望這有助於有人:)