方法一:
1、首先,在用ireport設計報表時將要顯示中文資料的地方的屬性設定如下:
font name: 宋體 (中文字型)
pdf font name: stsong-light
pdf encoding: unigb-ucs2-h(chinese siplified)
pdf embeded: √
2、itextasian.jar 這個包匯入專案的classpath中,沒有這個包的話,匯出含有中文資料的pdf會報以下錯誤:
net.sf.jasperreports.engine.jrruntimeexception: could not load the following font :
pdffontname : stsong-light
pdfencoding : unigb-ucs2-h(chinese siplified)
ispdfembedded : true
這種方法雖然能夠正常地顯示中文資訊,但是有乙個缺點,就是只有一種字型。因為itext 官 方**提供的itextasian.jar 包中只包 含幾種簡單的亞洲字型,對於簡體中文來說,只有宋體。因此,採用這種方法生成的pdf 中,中文字型 只能為宋體,無法顯示其他字型。但這種方法比較簡單
方法二: 使用 ttf files (true type fonts) 字型檔案
ttf 是系統的標準字型檔案,最初由mac os 定義,後來microsoft windows 普遍採用這種格式來定義字型檔案。這也是目前我們最常用的字型格式。可以通 過制定具體的字型檔案的方式來指定字型。
如:」 隸書 」
pdffontname=
」 stcaiyun.ttf
」 size=
」 18 ″ isbold=
」 true
」 ispdfembedded =
」 true
」 pdfencoding =
」 identity-h
」 />
例子中使用的是 「
華文彩雲 」
字型,stcaiyun.ttf 為字型檔案。需要注意的一點,這裡使用的是相對路徑,在生成pdf 的時候,程式會從類路徑中查詢這個字型檔案,你可以選擇把字型檔案放到類路徑中,或者使用絕對路徑來引用 這個字型檔案(如:c:/windows/fonts /stcaiyun.ttf )。不推薦採用 後一種方法,因為開發環境和使用環境中,系統的路徑可能不同,就會導致無法找到字型檔案。一種更好的解決辦法,把windows 系 統中fonts 下的某些常用的字型打成乙個jar 包, 然後把這個jar 報放到類路徑下即可。
注意,在使用這種方式的時候,pdfencoding 屬性要設為 」
identity-h
」 或者 」
identity-v」 。
關於ireport
針對上述兩種解決方案,第一種方案可以直接在ireport介面 中選擇pdffontname 和pdfencoding ,系統中已經整合了 」
stsong-light
」 和 「
unigb-ucs2-h
」 ,下拉列 表中可以直接選到。
第二種方式下,ireport 的路徑下有乙個fonts 目錄,其中包 括一些ttf 字型檔案。在圖形介面中選擇pdffontname 的 時候,只 能選擇目錄中存在的字型檔案。如果想使用其他的ttf 字型,可以實現把相關的字型從windows 系統的fonts 目錄下拷貝到ireport 的 fonts 路徑中,這些字型就會出 現在pdffontname 的下拉列表中了。
Matplotlib中中文不顯示問題
我們在使用jupter進行資料分析的時候,會接觸到matplotlib這個庫,它是用來進行視覺化資料分析的,在乙個圖中,我們常常會加入一些中文來進行說明。當我們加入中文的時候會出現下圖所示的樣子 可以看到,中文變成了這種亂碼的形式。網上有很多的例子,有很多是錯誤的,這裡我把我測試成功的方法說明一下。...
unity 發布webGl後不顯示中文
請看原文 unity支援所有的 ttf 的字符集,預設的字型為arial win10電腦中所有字型存放路徑為 c windows fonts,開啟資料夾後,選擇需要的字型,將其拖入unity當前工程資源的資料夾下。在 project 檢視中選擇 creat gui skin 選單項,建立乙個gui ...
php讀取csv內容,中文不顯示問題
讀取csv資訊時,中文內容讀取不到,檢查後發現原因是系統常用地區標識的問題,系統預設的utf8,所以在讀取gbk的csv時中文出現了異常 root root cat etc sysconfig i18n lang en us.utf 8 sysfont latarcyrheb sun16 因為系統上...