VS2005 crystalReportviewer 打印問題

在VS2005中使用水晶報表時很簡單的事了,因爲微軟已經把幾乎整個水晶報表的工具集成到VS2005了。
而且crystalReportviewer 控件有着強大的報表功能,其中包括顯示報表,預覽,縮印等,很大程度上方便了開發人員的開發。但是在使用crystalReportviewer的控件進行打印的時候總是遇到這樣那樣的問題。
首先要聲明的是:crystalReportviewer的打印有兩種模式可選擇,分別是PDF, AcitiveX。
其中PDF,就是在選擇打印的時候,會生成一個PDF文檔,你可以在PDF文檔中點擊打印。但是如果客戶端沒有裝PDF閱讀器那麼會提示保存一個PDF的文件。很顯然對於想直接打印的用戶來說,PDF格式的打印方法很是不方便。
第二種就是ActiveX模式了。一看到ActiveX就讓人想到安全性的問題。的確,如果你要使用這個ActiveX模式,就是要在服務器端做一番工作的。還有就是設置你客戶端的安全設置了。
但是這種模式,只能用於IE的瀏覽器,其他比如火狐等瀏覽器時不能使用這種模式的,即使你強制把crystalReportviewer的printmode屬性設爲ActiveX,他仍舊會按PDF模式來進行打印的。
既然只能在IE中使用,那我們先談談在IE中使用的方法。
在IE7之前的瀏覽器一般你點擊打印按鈕時,會彈出一個對話框但是什麼都不顯示。在   Crystal   Reports   for   Visual   Studio   2005   中,爲符合icrosoft   安全性需求起見,並沒有將ActiveX打印控制項安裝在本機上,而是必須製成.cab檔案,讓人從外部URL來獲取。printControl.cab文件可以從Business   Objects 技術網站上:http://support.businessobjects.com/CRforVS2005/PrintControl.cab中下載下來,這時就可以將  cab檔案放在   Web 服務器目錄中,以供   URL   存取之用。如果想在瀏覽器中提示安裝該ActiveX,需要在web.config中添加如下代碼:
<configSections>
<sectionGroup name="businessObjects">
      
<sectionGroup name="crystalReports">
        
<section name="printControl" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Custom=null" />
      
</sectionGroup>
    
</sectionGroup>
</configSections>

<businessObjects>
    
<crystalReports>
      
<printControl>
        
<add key="url" value="http://localhost/demo/PrintControl.cab" />
      
</printControl>
    
</crystalReports>
  
</businessObjects>
注意:在PrintControl.cab文件的地址引用的時候千萬要修改localhost爲你的web服務器的名字或IP地址。這樣客戶端瀏覽器在調用的時候就會調用你的服務器上的cab文件了。
添加上述代碼之後,在IE6或之前的版本中運行,點擊打印的時候,會彈出安裝ActiveX的對話框,安裝後便可以選擇打印機了。
但是如果是IE7的話,由於IE7默認設置了不自動提示ActiveX的安裝,所以彈出一個空白對話框後過一會又會消失。
你可以在Tools -> Internet explore option-->Security Tab -> Custom Level ->Under ActiveX controls and plug-ins -> Enable Automatic prompting for ActiveX controls.
這樣就可以實現ActiveX控件的安裝窗口了。
發佈了64 篇原創文章 · 獲贊 1 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章