溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何添加ActiveReports 6導(dǎo)出PDF時(shí)的安全設(shè)置和數(shù)字簽名

發(fā)布時(shí)間:2020-04-04 15:38:46 來(lái)源:網(wǎng)絡(luò) 閱讀:630 作者:powertoolsteam 欄目:編程語(yǔ)言

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ù)字簽名):
如何添加ActiveReports 6導(dǎo)出PDF時(shí)的安全設(shè)置和數(shù)字簽名

最后提醒一點(diǎn),安全保護(hù)和數(shù)字簽名不能同時(shí)使用。

 

更多有關(guān) ActiveReports 使用方法和技巧的文章,請(qǐng)參閱:葡萄城產(chǎn)品技術(shù)社區(qū) ActiveReports 知識(shí)庫(kù)與精華區(qū)

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI