這個問題已經是 FAQ 了,我自己也一再碰到,實在很煩人。
問題描述
環境:ASP.NET + Crystal Reports XI R2 SP4 + IE 8.0
Web 應用程式使用 Crystal Reports 來列印報表,當使用者在 CR viewer 視窗中點列印鈕時,新開啟的列印對話窗會掛掉,裡面一片空白,如下圖:
以下是解決此問題的幾個方法,碰到難纏的狀況時,不妨全都用上。
Web.config 裡面加入設定
參考這篇官方文件:
http://devlibrary.businessobjects.com/businessobjectsxir2/en/en/CrystalReports_dotNET_SDK/crsdk_net_doc/doc/crsdk_net_doc/html/crconfeatureprinting.htm
注意裡面的 http://myserver/PrintControl.cab 要改成你的網站 URL。
[2010-4-19] 註:Crystal Reports XI SP 5 的壓縮檔解開後,在 win32\m151.cab 這個壓縮檔裡面藏有 PrintControl.cab 和 PrintControl.dll。
自己打包 PrintControl.dll
PrintControl.dll 可以在這裡找到:
C:\Program Files\Business Objects\Common\3.5\crystalreportviewers115\ActiveXControls\
你可以利用安裝程式製作工具(例如 InnoSetup)把這個 DLL 檔案包起來,並且在安裝時自動註冊 DLL(利用 regsvr32.exe)。以下是我的 InnoSetup 安裝腳本:
[Run]
Filename: regsvr32.exe; Parameters: /s PrintControl.dll; WorkingDir: {sys}
[Setup]
AppName=Crystal Reports 報表預覽元件 (CR11 SP4)
CreateAppDir=false
DisableProgramGroupPage=true
UsePreviousGroup=false
DisableReadyMemo=true
AlwaysShowComponentsList=false
ShowLanguageDialog=auto
Uninstallable=false
AppVerName=11.0
LanguageDetectionMethod=locale
DisableStartupPrompt=false
OutputBaseFilename=SetupPrintControl
[Files]
Source: PrintControl.dll; DestDir: {sys}
[LangOptions]
LanguageName=Chinese
LanguageID=$0404
[Languages]
Name: ChineseTraditional; MessagesFile: compiler:Languages\ChineseTrad-2-5.1.11.isl
如果要使用上述安裝腳本,可以將它們複製到記事本,儲存成 SetupPrintControl.iss,再以 InnoSetup 編譯即可。安裝程式建立完成之後,便可以放在網站上讓使用者自行下載安裝。
調整用戶端的 IE 安全性設定
即使前面兩項都做過了,ActiveX 控制項還是可能被 IE 擋住而無法執行。而且,就算把「網際網路」區域的安全性都調到最寬鬆的設定(所有 ActiveX 都給它啟用),問題可能還是無法解決。碰到這種狀況,可以試試看把你的網站加入 IE 的信任網站(前兩個方法再加上這個動作才真正解決了我的問題)。
考慮有些使用者可能不知道如何設定 IE 的安全性,也可以寫個小程式或 script 幫使用者自動設定 IE。參考這篇文章的做法:How Can I Add a Site to Internet Explorer's Restricted Sites Zone?
註:Crystal Reports viewer 的 Web 應用程式名稱為 "crystalreportsviewer115",路徑指向 C:\Program Files\Business Objects\Common\3.5\crystalreportviewers115。
問題描述
環境:ASP.NET + Crystal Reports XI R2 SP4 + IE 8.0
Web 應用程式使用 Crystal Reports 來列印報表,當使用者在 CR viewer 視窗中點列印鈕時,新開啟的列印對話窗會掛掉,裡面一片空白,如下圖:
以下是解決此問題的幾個方法,碰到難纏的狀況時,不妨全都用上。
Web.config 裡面加入設定
參考這篇官方文件:
http://devlibrary.businessobjects.com/businessobjectsxir2/en/en/CrystalReports_dotNET_SDK/crsdk_net_doc/doc/crsdk_net_doc/html/crconfeatureprinting.htm
注意裡面的 http://myserver/PrintControl.cab 要改成你的網站 URL。
[2010-4-19] 註:Crystal Reports XI SP 5 的壓縮檔解開後,在 win32\m151.cab 這個壓縮檔裡面藏有 PrintControl.cab 和 PrintControl.dll。
自己打包 PrintControl.dll
PrintControl.dll 可以在這裡找到:
C:\Program Files\Business Objects\Common\3.5\crystalreportviewers115\ActiveXControls\
你可以利用安裝程式製作工具(例如 InnoSetup)把這個 DLL 檔案包起來,並且在安裝時自動註冊 DLL(利用 regsvr32.exe)。以下是我的 InnoSetup 安裝腳本:
[Run]
Filename: regsvr32.exe; Parameters: /s PrintControl.dll; WorkingDir: {sys}
[Setup]
AppName=Crystal Reports 報表預覽元件 (CR11 SP4)
CreateAppDir=false
DisableProgramGroupPage=true
UsePreviousGroup=false
DisableReadyMemo=true
AlwaysShowComponentsList=false
ShowLanguageDialog=auto
Uninstallable=false
AppVerName=11.0
LanguageDetectionMethod=locale
DisableStartupPrompt=false
OutputBaseFilename=SetupPrintControl
[Files]
Source: PrintControl.dll; DestDir: {sys}
[LangOptions]
LanguageName=Chinese
LanguageID=$0404
[Languages]
Name: ChineseTraditional; MessagesFile: compiler:Languages\ChineseTrad-2-5.1.11.isl
如果要使用上述安裝腳本,可以將它們複製到記事本,儲存成 SetupPrintControl.iss,再以 InnoSetup 編譯即可。安裝程式建立完成之後,便可以放在網站上讓使用者自行下載安裝。
調整用戶端的 IE 安全性設定
即使前面兩項都做過了,ActiveX 控制項還是可能被 IE 擋住而無法執行。而且,就算把「網際網路」區域的安全性都調到最寬鬆的設定(所有 ActiveX 都給它啟用),問題可能還是無法解決。碰到這種狀況,可以試試看把你的網站加入 IE 的信任網站(前兩個方法再加上這個動作才真正解決了我的問題)。
考慮有些使用者可能不知道如何設定 IE 的安全性,也可以寫個小程式或 script 幫使用者自動設定 IE。參考這篇文章的做法:How Can I Add a Site to Internet Explorer's Restricted Sites Zone?
註:Crystal Reports viewer 的 Web 應用程式名稱為 "crystalreportsviewer115",路徑指向 C:\Program Files\Business Objects\Common\3.5\crystalreportviewers115。
沒有留言: