同事給了一個在windows 2003 IIS6 rdlc 匯出的pdf檔
在windows 7 的環境下開啟....中文字全部都變成了亂碼.
以前遇到的亂碼通常都是字型未設成細明體(MingLiU)所致
但這次的狀況倒還是第一次遇到. 而且只有細明體才會有這個問題,設成標楷體的rdlc匯出時,看來正常.
後來也反向測試了一下, windows 7 IIS7 rdlc匯出的pdf檔, 拿到windows 2003 或xp 也都會變成亂碼
如果用acrobat 5.0開啟時還會有"無法找到或建立字型『MingLiU』‧某些字元法正確顯示或列印"的訊息出現, 用acrobat 9.3 則無此提示訊息.
大家反覆測了一整天, GOOGLE了半會,也沒啥solution...
今天就反應給微軟, 且待結果囉..
2010/07/14: 微軟回覆說.....這是已知的BUG, 在VS2010已解決, 建議改用VS2010.... 或等待VS2008的BUG FIX
測了一下, VS2010的RDLC, 部署到win2003 IIS 6或win7 IIS7環境,所匯出的PDF在win2003,xp,win7細明體中文皆可正常顯示.
唉, vs2008沒用多久,馬上又進入vs2010了, 技術更新的周期愈來愈短, 我跑得愈來愈慢...哈.
2010/07/15, 微軟說, 這是已知BUG, 細明體glyph ID在win 7已和之前不相同,所以會有對照上的問題, 但標楷體的glyph ID在win 7則維持不變, 所以要嗎上vs2010,要嗎改用標楷體.....vs2008會不會在下版sp fix bug? 可能不會吧......結案.
最後的解決方法是, 安裝virtual pdf printer, 用列印的方式轉出PDF檔, 這樣連之前造字無法正常顯示的問題也一併解決.
2010/08/12, 看到路人甲的留言,照著這篇文章的說明,
1.先去下載Microsoft Report Viewer 2010 Redistributable Package
2.在dos command下, cd c:\Windows\assembly\GAC_MSIL\Microsoft.ReportViewer.WebForms\10.0.*
3.copy Microsoft.ReportViewer.WebForms.dll c:\temp\
4. cd c:\Windows\assembly\GAC_MSIL\Microsoft.ReportViewer.Common\10.0*
5.copy Microsoft.ReportViewer.Common.dll c:\temp\
6.open your web project, add refreance 上述二個dll檔
7.接著, 連程式碼都不用改喔, 只要在web.config檔置換下列幾個設置,然後重新build project
system.web 下的assemblies tag, 找到add assembly="Microsoft.ReportViewer.WebForms, Version=9.0.0.0,.....及add assembly="Microsoft.ReportViewer.Common, Version=9.0.0.0
system.web 下的pages tag下的controls tag, 找到add assembly="Microsoft.ReportViewer.WebForms, Version=9.0.0.0
system.web 下的httpHandlers tag,找到add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0,....
以上都把9.0.0.0改成10.0.0.0
system.web 下的buildProviders tag, 找到 add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.Common, Version=9.0.0.0, ...
移除掉這行
如果是要部署到IIS7.0,
在system.webServer 下的handlers tag, 找到add name="Reserved-ReportViewerWebControl-axd" path="Reserved.ReportViewerWebControl.axd" precondition="integratedMode" resourcetype="Unspecified" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" verb="*"
把這行改成
add name="ReportViewerWebControlHandler" path="Reserved.ReportViewerWebControl.axd" precondition="integratedMode" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" verb="*"
8.測試一下你的報表囉......
原則上如果原本的rdlc是在SSRS 2005 base下開發, reportviewer 10.0也可以很順利的呈現,同時仍可以vs2008的report designer 進行設計
同時,我也順便測了一下, 用SSRS 2008 先設計出.rdl的報表(主要是有tablix), 然後放到vs2008的專案中,把副檔名改成.rdlc,一樣也可以正常的呈現.(我喜歡用這種方法來設計rdl,一旦報表完成後,只要把.rdl改成.rdlc就可以了, 很方便進行報表的開發及測試)
比較美中不足的是, 在vs2008的report designer中,無法順利開啟SSRS 2008 base的rdlc檔
不知vs2008上的report designer是否也能夠使用10.0的版本?
總之, 路人提供的解決方法, 真是太棒了, 真是一舉二得. 解決了之前PDF的問題, 又可使用SSRS 2008的報表新功能.
2010年7月8日 星期四
訂閱:
張貼留言 (Atom)
自動記錄滑鼠點選操作
為了一個需求,需要人工去點選幾個滑鼠的點選行為,找了幾種工具,覺得GS Auto Clicker最實用,極符合我的需求,尤其是多個固定位置的button點擊,解決了一個很耗時間的工作。 最後設定完預設hotkey F8為啟用鍵,就可以開始自動做工了。再按F8結束工作。 GS Au...
-
上網找了免費的白箱檢測工具,找到了 puma scan 因為支援OWASP TOP 10的檢測,所以這是一個符合客戶需求又能與Visual studio結合的工具(白話說...交差了事矣....) 更重要的是這不用錢....檢測工具都貴森森的,尤其是源碼檢測工具。 ht...
-
建了一個工作排程,定時執行batch檔。 batch中寫了一段xcopy,主要針對有異動較新檔案時才複製。 echo off for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find...
-
改用SQL Server Management Studio 2017有一段時間了。 在執行一段之前寫的SQL要組出一段語法時,里頭包含了使用CHAR(10)當作換行符號的文字,在輸出結果中,使用複製貼上的方式要進行執行時,發現換行符號都失效了。 但如果使用Results...
版大的問題已解決!! VS2008專案可引用VS2010 ReportViewer(免安裝完整的VS2010), 作法如下:
回覆刪除http://blogs.msdn.com/b/changliw/archive/2010/06/29/use-the-reportviewer-2010-control-in-visual-studio-2008-project.aspx
真是太謝謝這位路人了...照著做,我已經把vs2008的專案改用report viewer 2010了, 除了解決PDF的問題外,也多了可以匯出word的功能
回覆刪除您好:
回覆刪除我看到您的作法,依照VS2008專案引用VS2010 ReportViewer,系統會出現
'ReportViewer' 在命名空間 'Microsoft.Reporting.WebForms' 中模稜兩可。
請問您當初有出現嗎??