您好,登錄后才能下訂單哦!
PDF格式已經成為廣為應用的電子文檔交換格式標準。為了便于用戶在組織內和組織之間共享報表數據,ActiveReports 6可以將生成的報表導出為PDF格式。下面的代碼是ActiveReports 6導出PDF的簡單示例。
Private void btnExport_Click(Object sender, System.EventArgs e)
{
rptDataDynamics rpt = new rptDataDynamics();
DataDynamics.ActiveReports.Export.Pdf.PdfExport p = new DataDynamics.ActiveReports.Export.Pdf.PdfExport();
rpt.Run();
this.arv.Document = rpt.Document;
p.Export(rpt.Document, Application.StartupPath + "\\p.pdf");
}
有些情況下,你可能需要對報表的內容進行一定程度的安全保護,比如增加一個密碼,或者希望報表讀者只能在線瀏覽而不是打印出來。ActiveReports 6在導出PDF時提供了豐富安全權限設置。不僅如此,在ActiveReports 6 專業版中,你甚至可以通過數字簽名來表明文檔的來源和創建時間,已經文檔是否被修改等。
一.導出帶安全保護的PDF
類DataDynamics.ActiveReports.Export.Pdf.PdfExport的Security成員用來指定導出PDF的安全保護設置,主要包括:
1. Encrypt: 設置或獲取一個值,該值決定是否對導出的PDF加密
2. OwnerPassword: PDF擁有者密碼。在打開PDF時如果輸入這個密碼,則操作權限不受下面的Permissions設置限制。
3. Permissions: 指定用戶對PDF的操作權限,包括是否可以拷貝、是否可以打印、是否可以批注、是否可以修改內容等。
4. UserPassword: 獲取或設置用戶密碼。用戶在打開PDF時需要輸入這個密碼,并且操作權限受Permissions的限制。
例如,下面的示例代碼設置了用戶密碼,并且允許用戶打印文檔:
p.Security.Encrypt = true;
p.Security.Use128Bit = true;
p.Security.UserPassword = "monkey";
p.Security.Permissions = DataDynamics.ActiveReports.Export.Pdf.PdfPermissions.AllowPrint;
p.Export(rpt.Document, Application.StartupPath + "\\p.pdf");
二.導出帶數字簽名的PDF
數字簽名的作用與傳統的手寫簽名類似,用來表明誰對文檔進行了簽署。另外,簽名者還可以指定文檔被簽署后的修改權限。用戶可以查看到文檔被簽名的時間,已經簽署后是否被修改過等信息。
在專業版的ActiveReports里,對PDF格式的數據輸出又有了增強功能。現在用戶可以將不可見的數字簽名或者可見的文字圖案加入到報表里。通過16種屬性對數字簽名進行個性化設置, 用數字簽名驗證報表作者,還可通過Certification Level 來設定用戶訪問權限。用時間印章功能建立第三方授權版本。這些新功能完全和Adobe的新安全機制兼容。
為了創建數字簽名,你必須首先擁有一個有效的PKCS#12 證書文件(*.pfx)。通常情況下,證書需要從專業數字簽名廠商獲得。如果是為了學習和了解ActiveReports的數字簽名功能,你可以使用如下步驟自己創建一個證書文件:
1.用如下命令行操作創建一個證書
makecert -r -pe -n "CN=Your Name" -b 01/01/2000 -e 01/01/2099 -eku 1.3.6.1.5.5.7.3.3 -ss My
2.在IE瀏覽器中選擇“工具---選項”菜單,在彈出的對話框中選擇“內容” 頁,然后點擊“證書”按鈕,彈出證書對話框。
3.在證書對話框中按“導出”按鈕,導出包含私鑰的證書文件,并記下你設置的密碼。
下面的代碼示例創建了一個包含文字和圖片的數字簽名。使用前需要把證書文件名替換為你創建的PFX文件,并更改密碼為你創建PFX文件時輸入的密碼。
// ImageText signature.
p.Signature.VisibilityType = DataDynamics.ActiveReports.Export.Pdf.Signing.VisibilityType.ImageText;
// Bounds (Container of Text & Image).
p.Signature.Stamp.Bounds = new RectangleF(0, 0, 4, 1);
// Text area.
p.Signature.Stamp.TextAlignment = DataDynamics.ActiveReports.Export.Pdf.Signing.Alignment.Left;
p.Signature.Stamp.Font = new Font("Comic Sans MS", 8, FontStyle.Regular);
// Note: Specify (x, y) in relative coordinate from Bounds top-left.
p.Signature.Stamp.TextRectangle = new RectangleF(1, 0, 3, 1);
// Image area.
p.Signature.Stamp.Image = Image.FromFile("D:\\Temp\\PowerToolsLogo.jpg");
p.Signature.Stamp.ImageAlignment = DataDynamics.ActiveReports.Export.Pdf.Signing.Alignment.Center;
// Note: Specify (x, y) in relative coordinate from Bounds top-left.
p.Signature.Stamp.ImageRectangle = new RectangleF(0, 0, 1, 1);
// Set certificate & password.
p.Signature.Certificate = new System.Security.Cryptography.X509Certificates.X509Certificate2("D:\\Temp\\AllanCert.pfx", "123");
// set the certifiation level
p.Signature.CertificationLevel = DataDynamics.ActiveReports.Export.Pdf.Signing.CertificationLevel.NoChangesAllowed;
//Signature items.
p.Signature.Contact = new DataDynamics.ActiveReports.Export.Pdf.Signing.SignatureField<string>(“[email]tool-sales.cn@grapecity.com[/email]”, true);
p.Signature.SignDate = new DataDynamics.ActiveReports.Export.Pdf.Signing.SignatureField<System.DateTime>(System.DateTime.Now, true);
p.Export(rpt.Document, Application.StartupPath + \\p.pdf);
上述生成的報表文件在Acrobat Reader中顯示如下(左上角是數字簽名):
最后提醒一點,安全保護和數字簽名不能同時使用。
更多有關 ActiveReports 使用方法和技巧的文章,請參閱:葡萄城產品技術社區 ActiveReports 知識庫與精華區
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。