我在eclipse中的PDF文件中插入UNICODE字符時遇到了問題。 有一些解決方案,它對我來說效率不高。如何使用eclipse在pdf中創建波斯語內容
解決方案就是這樣。
document.add(new Paragraph("Unicode: \u0418", new Font(bfComic, 12)));
我想從數據庫中檢索數據,並將其展示給用戶,我的角色是在阿拉伯文字,有時在波斯語腳本。
你建議什麼解決方案?
感謝
我在eclipse中的PDF文件中插入UNICODE字符時遇到了問題。 有一些解決方案,它對我來說效率不高。如何使用eclipse在pdf中創建波斯語內容
解決方案就是這樣。
document.add(new Paragraph("Unicode: \u0418", new Font(bfComic, 12)));
我想從數據庫中檢索數據,並將其展示給用戶,我的角色是在阿拉伯文字,有時在波斯語腳本。
你建議什麼解決方案?
感謝
遇到不同的問題:
數據的編碼:
請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。這是在下面的屏幕截圖做了三次:
第一行是錯誤的,因爲字符是在錯誤的順序。它們是從左到右書寫的,而它們應該從右到左書寫。這是當你這樣做會發生什麼:
document.add(name1);
即使編碼是正確的,你沒有正確地呈現文本。
第二行也是錯誤的。現在的字符是正確的順序,但沒有連字是由:ل其次و應該合併成一個單一的字形:لو
只能通過添加內容到ColumnText
或PdfPCell
對象實現這一點,並通過將運行方向設置爲PdfWriter.RUN_DIRECTION_RTL
。例如:
pdfCell.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);
現在文本將被正確渲染。
這在我的書的第11章中有解釋。你可以在這裏找到一個完整的例子:Ligatures2
*但我認爲這個對象是一個BaseFont對象,使用IDENTITY_H作爲編碼。* - 你是一個樂觀主義者。 ;) – mkl 2014-11-09 08:05:38
謝謝。這個解決方案非常好。 – starbug 2014-12-04 18:00:41
@Bruno Lowagie:我已經在英文文本中創建了pdf,但是當我使用createfont類時,發生錯誤,說font.ttf由於許可限制而無法嵌入。我能解決這個錯誤嗎? – starbug 2014-12-04 18:25:00