第三篇: PDF相關屬性的設置,權限的設置,以及加密
今天,我們開始系列的第三篇,對PDF文檔的屬性,權限已經加密等的設置;
作文一種文檔形式,PDF和WORD等的,是使用非常普遍的。在我們發(fā)布文檔的時候,我們通常需要附加一些作者或版權之類的信息,甚至是加密,以保護自己的勞動成果或秘密等。
下面我就對比一下2個PDF文件的差異:(圖一是我們第二篇的時候,生成的PDF文件;圖二是我們此文生成的PDF文件)
通過上面2符圖的對比,就可以看出,下面的文檔,屬性里面多了幾項說明內容,下面是實現(xiàn)的代碼:
//定義一個Document,并設置頁面大小為A4,豎向iTextSharp.text.Document doc = new Document(PageSize.A4);try{//寫實例PdfWriter.GetInstance(doc, new FileStream("chap02.pdf", FileMode.Create));#region 設置PDF的頭信息,一些屬性設置,在Document.Open 之前完成doc.AddAuthor("DeltaCat 三角貓");doc.AddCreationDate();doc.AddCreator("DeltaCat");doc.AddSubject("Dot Net 使用 itextsharp 類庫創(chuàng)建PDF文件的例子");doc.AddTitle("此PDF由三角貓創(chuàng)建,嘿嘿");doc.AddKeywords("ASP.NET,PDF,iTextSharp,DeltaCat,三角貓");//自定義頭doc.AddHeader("Expires", "0");#endregion//打開documentdoc.Open();//載入字體BaseFont.AddToResourceSearch("iTextAsian.dll");BaseFont.AddToResourceSearch("iTextAsianCmaps.dll");//"UniGB-UCS2-H" "UniGB-UCS2-V"是簡體中文,分別表示橫向字 和 縱向字//"STSong-Light"是字體名稱BaseFont baseFT = BaseFont.CreateFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);iTextSharp.text.Font font = new iTextSharp.text.Font(baseFT);//寫入一個段落, Paragraphdoc.Add(new Paragraph("你好, PDF !", font));//關閉documentdoc.Close();//打開PDF,看效果Process.Start("chap02.pdf");}catch (DocumentException de){Console.WriteLine(de.Message);Console.ReadKey();}catch (IOException io){Console.WriteLine(io.Message);Console.ReadKey();}
下面,我們來說明第二個內容,那就是權限的設置和加密
我們都知道,對于PDF文檔,我們可以設置密碼,可以禁止打印,禁止復制等等……
下面,我們就用 iTextSharp 來實現(xiàn)這些功能,先看效果圖:
從圖上,我們可以看到, 打印按鈕是灰色的,并且標題欄上顯示有 (已加密)的字樣。
PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream("chap03.pdf", FileMode.Create));//設置限制權限writer.SetEncryption(true, null, null, 0);
上面的代碼中,最后一個參數(shù)0,表示的是權限,0表示全部限制,大家可以根據(jù)情況,自己改變這個值,來設定不同的權限。
下面來說明一下,如何設置訪問密碼:
//設置限制權限writer.SetEncryption(true, "password", null, 0);