使用RSClientPrint直接列印RS報表
一般而言,當我們想要列印RS報表時,
都是先將報表另存下來後,再開啟檔案列印的。
原來,Report Services早就幫我們想好這點了,
它提供了一個叫「RSClientPrint」的cab元件,
直接執行JavaScript就可以列印報表了!!
雖然在很早以前就以前提供了,但這時候,也需特別注意環境,
也就是SQL Server的版本,在這邊,以SQL 2005為例。
在SQL 2005最初版來說,有被攻擊的危險,所以,在某次系統安全性更新後,該功能會被拿掉,必須再去升級才行使用。
當然,如果允許的話,建議將其升級為最新版本的最好囉。(目前為SP3)
以目前來說,至少需為SQL Server 2005 SP2 的版本才能列印,
至少必須確定C:\Program Files\Microsoft SQL Server\MSSQL.2\Reporting Services\ReportServer\bin\RSClientPrint.cab
是2008/8/5之後的版本才行。
若不是的話,可能是有些更新沒有裝到。試著安裝此更新
環境都確定好後,就可以開始實作了。
程式碼參考如下:(其實這段,網路上一堆,到處都可以copy的到)
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="RSClientPrint.aspx.cs" Inherits="RSClientPrint" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server"><title>未命名頁面</title>
<script type="text/javascript" language="javascript">
function Print()
{
alert('進入列印');if (typeof RSClientPrint.Print == "undefined"){alert("Unable to load client print control.");return;}//邊界RSClientPrint.MarginLeft = 0;RSClientPrint.MarginTop = 0;RSClientPrint.MarginRight = 0;RSClientPrint.MarginBottom = 0;//繁體中文RSClientPrint.Culture = 2052;RSClientPrint.UICulture = 2052;//預設為A4//如果 PageWidth 大於 PageHeight,列印方向就會設定為 [橫向]。 否則,就會設定為 [縱向]。RSClientPrint.PageHeight = 297;RSClientPrint.PageWidth = 210;RSClientPrint.Authenticate = true;RSClientPrint.Print('http://localhost/ReportServer', '/TestPage', 'TestPage')
}
</script>
</head>
<body>
<object style="display: none;" id="RSClientPrint" classid="CLSID:0D221D00-A6ED-477C-8A91-41F3B660A832"
codebase="RSClientPrint.cab#Version=2005,90,4053,00" VIEWASTEXT>
</object>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="列印" OnClientClick ="Print();return false;" />
</div>
</form>
</body>
</html>
有個地方需要注意一下。classid 及 codebase 這邊:
- 「Version」也請參考該元件裡的RSClientPrint.inf內的版次。(不過,有測試過,就算拿掉也可以用)
- 「CLSID:0D221D00-A6ED-477C-8A91-41F3B660A832」也請參考RSClientPrint.inf的資料
- 「codebase」將指向該元件檔案的位置,由於這邊我是將網頁及元件放在同個目錄下。請配合調整。
如果值亂改的話,會導致元件安裝不正常。如下圖
倘若設定都正常的話,執行該網頁,則會看到以下畫面:
想用的話,當然只能選擇「安裝」
安裝完後,按下列印,即會彈出列印方塊。按下「確定」就可以列印囉~~
或者可以點選「預覽」功能。(我的測試報表字好像有點小)
微軟的說明文件:在自訂應用程式中使用 RSClientPrint 控制項。
安裝完後,按下列印,即會彈出列印方塊。按下「確定」就可以列印囉~~
或者可以點選「預覽」功能。(我的測試報表字好像有點小)
微軟的說明文件:在自訂應用程式中使用 RSClientPrint 控制項。
另外,此方法…只能支援IE瀏覽器。