您好,登錄后才能下訂單哦!
PDF格式已經(jīng)成為廣為應(yīng)用的電子文檔交換格式標(biāo)準(zhǔn)。為了便于用戶在組織內(nèi)和組織之間共享報(bào)表數(shù)據(jù),ActiveReports 6可以將生成的報(bào)表導(dǎo)出為PDF格式。下面的代碼是ActiveReports 6導(dǎo)出PDF的簡(jiǎn)單示例。
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");
}
有些情況下,你可能需要對(duì)報(bào)表的內(nèi)容進(jìn)行一定程度的安全保護(hù),比如增加一個(gè)密碼,或者希望報(bào)表讀者只能在線瀏覽而不是打印出來(lái)。ActiveReports 6在導(dǎo)出PDF時(shí)提供了豐富安全權(quán)限設(shè)置。不僅如此,在ActiveReports 6 專(zhuān)業(yè)版中,你甚至可以通過(guò)數(shù)字簽名來(lái)表明文檔的來(lái)源和創(chuàng)建時(shí)間,已經(jīng)文檔是否被修改等。
一.導(dǎo)出帶安全保護(hù)的PDF
類(lèi)DataDynamics.ActiveReports.Export.Pdf.PdfExport的Security成員用來(lái)指定導(dǎo)出PDF的安全保護(hù)設(shè)置,主要包括:
1. Encrypt: 設(shè)置或獲取一個(gè)值,該值決定是否對(duì)導(dǎo)出的PDF加密
2. OwnerPassword: PDF擁有者密碼。在打開(kāi)PDF時(shí)如果輸入這個(gè)密碼,則操作權(quán)限不受下面的Permissions設(shè)置限制。
3. Permissions: 指定用戶對(duì)PDF的操作權(quán)限,包括是否可以拷貝、是否可以打印、是否可以批注、是否可以修改內(nèi)容等。
4. UserPassword: 獲取或設(shè)置用戶密碼。用戶在打開(kāi)PDF時(shí)需要輸入這個(gè)密碼,并且操作權(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");
二.導(dǎo)出帶數(shù)字簽名的PDF
數(shù)字簽名的作用與傳統(tǒng)的手寫(xiě)簽名類(lèi)似,用來(lái)表明誰(shuí)對(duì)文檔進(jìn)行了簽署。另外,簽名者還可以指定文檔被簽署后的修改權(quán)限。用戶可以查看到文檔被簽名的時(shí)間,已經(jīng)簽署后是否被修改過(guò)等信息。
在專(zhuān)業(yè)版的ActiveReports里,對(duì)PDF格式的數(shù)據(jù)輸出又有了增強(qiáng)功能?,F(xiàn)在用戶可以將不可見(jiàn)的數(shù)字簽名或者可見(jiàn)的文字圖案加入到報(bào)表里。通過(guò)16種屬性對(duì)數(shù)字簽名進(jìn)行個(gè)性化設(shè)置, 用數(shù)字簽名驗(yàn)證報(bào)表作者,還可通過(guò)Certification Level 來(lái)設(shè)定用戶訪問(wèn)權(quán)限。用時(shí)間印章功能建立第三方授權(quán)版本。這些新功能完全和Adobe的新安全機(jī)制兼容。
為了創(chuàng)建數(shù)字簽名,你必須首先擁有一個(gè)有效的PKCS#12 證書(shū)文件(*.pfx)。通常情況下,證書(shū)需要從專(zhuān)業(yè)數(shù)字簽名廠商獲得。如果是為了學(xué)習(xí)和了解ActiveReports的數(shù)字簽名功能,你可以使用如下步驟自己創(chuàng)建一個(gè)證書(shū)文件:
1.用如下命令行操作創(chuàng)建一個(gè)證書(shū)
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瀏覽器中選擇“工具---選項(xiàng)”菜單,在彈出的對(duì)話框中選擇“內(nèi)容” 頁(yè),然后點(diǎn)擊“證書(shū)”按鈕,彈出證書(shū)對(duì)話框。
3.在證書(shū)對(duì)話框中按“導(dǎo)出”按鈕,導(dǎo)出包含私鑰的證書(shū)文件,并記下你設(shè)置的密碼。
下面的代碼示例創(chuàng)建了一個(gè)包含文字和圖片的數(shù)字簽名。使用前需要把證書(shū)文件名替換為你創(chuàng)建的PFX文件,并更改密碼為你創(chuàng)建PFX文件時(shí)輸入的密碼。
// 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);
上述生成的報(bào)表文件在Acrobat Reader中顯示如下(左上角是數(shù)字簽名):
最后提醒一點(diǎn),安全保護(hù)和數(shù)字簽名不能同時(shí)使用。
更多有關(guān) ActiveReports 使用方法和技巧的文章,請(qǐng)參閱:葡萄城產(chǎn)品技術(shù)社區(qū) ActiveReports 知識(shí)庫(kù)與精華區(qū)
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。