现在的位置: 首页 > 综合 > 正文

ReportViewer导出PDF乱码问题解决

2012年09月28日 ⁄ 综合 ⁄ 共 919字 ⁄ 字号 评论关闭

我們最近在開發 SQL Server 2005 的 Reporting Service 報表功能,而在使用 ReportViewer 查看報表時都沒問題:

ReportViewer 匯出 PDF 檔 

但是在執行匯出資料到 PDF 格式時,所有的中文字都會變成亂碼:

ReportViewer 執行匯出資料到 PDF 格式時,所有的中文字都會變成亂碼

若要解決這個問題其實還蠻容易的,只要修改報表定義檔( *.rdlc )中各物件的字型修改掉即可,預設來說預設的字型是 Tahoma,你必須改成 PMingLiU 即可。

而所有報表定義檔 ( *.rdlc ) 都是 XML 語法,你只要直接將以下標籤定義:

<FontFamily>Tahoma</FontFamily>

全部都換成以下 PMingLiU 這個定義就可以了,這個代碼是「細明體」的字型代號:

<FontFamily>PMingLiU</FontFamily>

如果你要設定的字型是「標楷體」的話,可以用以下定義:

<FontFamily>DFKai-SB</FontFamily>

如果是在中國大陸常用的「宋體」字型,我就不知道是什麼代碼了,也許知道的網友可以提供給我知道。

你可以使用任何編輯器來修改,例如說你可以使用 Notepad++ 一次開啟所有 *.rdlc 檔,然後用「取代所有開啟文件」的方式一次替換所有報表定義檔中的相關字串:

你可以使用 Notepad++ 一次開啟所有 *.rdlc 檔,然後用「取代所有開啟文件」的方式一次替換所有報表定義檔中的相關字串

這樣就可以省去用開發工具一個一個修改了。

 

節錄開頭的幾句話:
微軟發行的大陸區 Windows 2k/XP 系統自帶中文字型為「宋體(simsun/nsimsun)」、「黑體(simhei)」、「楷體(simkai)」、「仿宋(simfang)」。宋、黑體是微軟向中易中標(中易)購買的GBK字型,楷體及仿宋是向長城購買的GB2313字型。台灣區 Windows 2k/XP 系統內建中文字型為「細明體/新細明體 (Mingliu/PMingliu)」、「標楷體(DFKai-sb)」、「simsun」、「simhei」。

 

另外,最近发现一个问题,中文的VS2008生成报表时,RDLC文件代码中的<FontFamily>宋体</FontFamily>的形式,这样可能在某些纯英文操作系统+纯英文Adobe Reader的环境中会出乱码,如果导出PDF有乱码,可以改成<FontFamily>simsun</FontFamily>的全英文形式试一下。

抱歉!评论已关闭.