新聞中心
PDF格式已經(jīng)成為廣為應(yīng)用的電子文檔交換格式標準。為了便于用戶在組織內(nèi)和組織之間共享報表數(shù)據(jù),ActiveReports 6可以將生成的報表導出為PDF格式。下面的代碼是ActiveReports 6導出PDF的簡單示例。
創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)由有經(jīng)驗的網(wǎng)站設(shè)計師、開發(fā)人員和項目經(jīng)理組成的專業(yè)建站團隊,負責網(wǎng)站視覺設(shè)計、用戶體驗優(yōu)化、交互設(shè)計和前端開發(fā)等方面的工作,以確保網(wǎng)站外觀精美、網(wǎng)站設(shè)計制作、網(wǎng)站設(shè)計易于使用并且具有良好的響應(yīng)性。
Privatevoid 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");
}
有些情況下,你可能需要對報表的內(nèi)容進行一定程度的安全保護,比如增加一個密碼,或者希望報表讀者只能在線瀏覽而不是打印出來。ActiveReports 6在導出PDF時提供了豐富安全權(quán)限設(shè)置。不僅如此,在ActiveReports 6 專業(yè)版中,你甚至可以通過數(shù)字簽名來表明文檔的來源和創(chuàng)建時間,已經(jīng)文檔是否被修改等。
一.導出帶安全保護的PDF
類DataDynamics.ActiveReports.Export.Pdf.PdfExport的Security成員用來指定導出PDF的安全保護設(shè)置,主要包括:
1. Encrypt: 設(shè)置或獲取一個值,該值決定是否對導出的PDF加密
2. OwnerPassword: PDF擁有者密碼。在打開PDF時如果輸入這個密碼,則操作權(quán)限不受下面的Permissions設(shè)置限制。
3. Permissions: 指定用戶對PDF的操作權(quán)限,包括是否可以拷貝、是否可以打印、是否可以批注、是否可以修改內(nèi)容等。
4. UserPassword: 獲取或設(shè)置用戶密碼。用戶在打開PDF時需要輸入這個密碼,并且操作權(quán)限受Permissions的限制。
例如,下面的示例代碼設(shè)置了用戶密碼,并且允許用戶打印文檔:
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");
二.導出帶數(shù)字簽名的PDF
數(shù)字簽名的作用與傳統(tǒng)的手寫簽名類似,用來表明誰對文檔進行了簽署。另外,簽名者還可以指定文檔被簽署后的修改權(quán)限。用戶可以查看到文檔被簽名的時間,已經(jīng)簽署后是否被修改過等信息。
在專業(yè)版的ActiveReports里,對PDF格式的數(shù)據(jù)輸出又有了增強功能?,F(xiàn)在用戶可以將不可見的數(shù)字簽名或者可見的文字圖案加入到報表里。通過16種屬性對數(shù)字簽名進行個性化設(shè)置, 用數(shù)字簽名驗證報表作者,還可通過Certification Level 來設(shè)定用戶訪問權(quán)限。用時間印章功能建立第三方授權(quán)版本。這些新功能完全和Adobe的新安全機制兼容。
為了創(chuàng)建數(shù)字簽名,你必須首先擁有一個有效的PKCS#12 證書文件(*.pfx)。通常情況下,證書需要從專業(yè)數(shù)字簽名廠商獲得。如果是為了學習和了解ActiveReports的數(shù)字簽名功能,你可以使用如下步驟自己創(chuàng)建一個證書文件:
1.用如下命令行操作創(chuàng)建一個證書
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瀏覽器中選擇“工具---選項”菜單,在彈出的對話框中選擇“內(nèi)容” 頁,然后點擊“證書”按鈕,彈出證書對話框。
3.在證書對話框中按“導出”按鈕,導出包含私鑰的證書文件,并記下你設(shè)置的密碼。
下面的代碼示例創(chuàng)建了一個包含文字和圖片的數(shù)字簽名。使用前需要把證書文件名替換為你創(chuàng)建的PFX文件,并更改密碼為你創(chuàng)建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(“[email]tool-sales.cn@grapecity.com[/email]”,true);
p.Signature.SignDate=new DataDynamics.ActiveReports.Export.Pdf.Signing.SignatureField(System.DateTime.Now,true);
p.Export(rpt.Document, Application.StartupPath+ \\p.pdf);
上述生成的報表文件在Acrobat Reader中顯示如下(左上角是數(shù)字簽名):
最后提醒一點,安全保護和數(shù)字簽名不能同時使用。
更多有關(guān) ActiveReports 使用方法和技巧的文章,請參閱:葡萄城產(chǎn)品技術(shù)社區(qū) ActiveReports 知識庫與精華區(qū)
當前題目:如何添加ActiveReports6導出PDF時的安全設(shè)置和數(shù)字簽名
網(wǎng)站URL:http://m.biofuelwatch.net/article/popeis.html