2014-11-08 72 views
0

我在eclipse中的PDF文件中插入UNICODE字符時遇到了問題。 有一些解決方案,它對我來說效率不高。如何使用eclipse在pdf中創建波斯語內容

解決方案就是這樣。

document.add(new Paragraph("Unicode: \u0418", new Font(bfComic, 12))); 

我想從數據庫中檢索數據,並將其展示給用戶,我的角色是在阿拉伯文字,有時在波斯語腳本。

你建議什麼解決方案?

感謝

回答

2

遇到不同的問題:

數據的編碼:

download chapter 2 of my book並轉到題爲「第2.2.2節中的語句對象:大塊的用List領導」。在本節中,查找標題「數據庫編碼與JVM使用的默認CharSet」。

你會看到數據庫值這樣的檢索:

String name1 = new String(rs.getBytes("given_name"), "UTF-8"); 

這是因爲數據庫中包含特殊字符不同的名稱。你的風險,這些特殊字符顯示爲亂碼,如果你將檢索這樣的領域:

創建您的字體像這樣:

Font font = new Font(bfComic, 12); 

String name2 = rs.getString("given_name") 

字體的編碼

您不顯示如何創建bfComic,但我認爲此對象是使用IDENTITY_H作爲編碼的BaseFont對象。

由右至左/製作寫作結紮線

雖然你的代碼將工作,以顯示單個字符,它不會工作,以顯示正確的句子。

假設name1是名稱爲「阿拉伯的勞倫斯」的阿拉伯語版本,我們希望將該名稱寫入PDF。這是在下面的屏幕截圖做了三次:

enter image description here

第一行是錯誤的,因爲字符是在錯誤的順序。它們是從左到右書寫的,而它們應該從右到左書寫。這是當你這樣做會發生什麼:

document.add(name1); 

即使編碼是正確的,你沒有正確地呈現文本。

第二行也是錯誤的。現在的字符是正確的順序,但沒有連字是由:ل其次و應該合併成一個單一的字形:لو

只能通過添加內容到ColumnTextPdfPCell對象實現這一點,並通過將運行方向設置爲PdfWriter.RUN_DIRECTION_RTL。例如:

pdfCell.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); 

現在文本將被正確渲染。

這在我的書的第11章中有解釋。你可以在這裏找到一個完整的例子:Ligatures2

+0

*但我認爲這個對象是一個BaseFont對象,使用IDENTITY_H作爲編碼。* - 你是一個樂觀主義者。 ;) – mkl 2014-11-09 08:05:38

+0

謝謝。這個解決方案非常好。 – starbug 2014-12-04 18:00:41

+0

@Bruno Lowagie:我已經在英文文本中創建了pdf,但是當我使用createfont類時,發生錯誤,說font.ttf由於許可限制而無法嵌入。我能解決這個錯誤嗎? – starbug 2014-12-04 18:25:00

相關問題