1. 程式人生 > >【itext學習之路】-------(第三篇)對pdf文件進行加密和許可權設定

【itext學習之路】-------(第三篇)對pdf文件進行加密和許可權設定

上篇文章,我們學習了pdf的屬性設定,但是我們知道,在實際開發中,如果pdf文件被黑客盜取的話,那麼pdf中的資訊就會被洩露,因此本篇文章將會介紹pdf的加密設定,並且設定許可權。

  • 首先我們要說明的是,itext中對pdf文件的加密包括兩部分,第一部分是使用者密碼,第二部分是所有者密碼。這兩部分可以簡單的理解為管理員密碼使用者密碼因此我們在設定這兩個密碼的許可權的時候,往往會將所有者密碼的許可權級別設定的更高,而使用者密碼許可權往往是“只讀”。

首先,在之前的基礎上,我們要在引入一個jar包,bcprov-jdk15-133.jar
可以去maven裡面下載,或者在我上傳的jar包資源下載:

點選下載

  • 下面是我們的程式碼
package cn.tomtocc.pdf;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text
.pdf.PdfWriter; public class pdfTest { public static void main(String[] args) throws FileNotFoundException, DocumentException { //實現A4紙頁面 並且橫向顯示(不設定則為縱向) Document document = new Document(PageSize.A4.rotate()); PdfWriter pdfWriter = PdfWriter.getInstance(document,new FileOutputStream("d:/demo.pdf"
)); // 設定使用者密碼, 所有者密碼,使用者許可權,所有者許可權 pdfWriter.setEncryption("userpassword".getBytes(), "ownerPassword".getBytes(), PdfWriter.ALLOW_COPY, PdfWriter.ENCRYPTION_AES_128); // 開啟文件 document.open(); // 建立第一頁(如果只有一頁的話,這一步可以省略) document.newPage(); // 加入文件內容 document.add(new Paragraph("my first pdf demo")); // 關閉文件 document.close(); pdfWriter.close(); } }

說明一下:上面的“userpassword”是我們設定的使用者密碼。“ownerPassword”是我們設定的所有者密碼。後面兩個變數依次是使用者許可權和所有者許可權設定。下面將會對所有的許可權引數進行詳細解釋。

  • 然後我們開啟我們的pdf文件,會彈出一個讓你輸入密碼的對話方塊,我們先用“userpassword”這個使用者密碼去開啟。然後再檢視文件的屬性,具體如下:

    這裡寫圖片描述

  • 我們可以看到,我們是無法對現在的這個pdf進行列印和修改的。接下來,我們重新開啟這個pdf。用“ownerPassword”這個密碼取開啟。然後再檢視文件的屬性,具體如下:

這裡寫圖片描述

我們可以看到,當我們第二次用所有者密碼去開啟這個pdf文件的時候,我們的操作許可權比之前大了許多。上述這兩種許可權的設定是比較常用的。接下來我將詳細介紹一下,所有許可權的引數及含義。

許可權引數
PdfWriter.ALLOW_MODIFY_CONTENTS
允許列印,編輯,複製,簽名 加密級別:40-bit-RC4
PdfWriter.ALLOW_COPY
允許複製,簽名 不允許列印,編輯 加密級別:40-bit-RC
PdfWriter.ALLOW_MODIFY_ANNOTATIONS
允許列印,編輯,複製,簽名 加密級別:40-bit-RC4
PdfWriter.ALLOW_FILL_IN
允許列印,編輯,複製,簽名 加密級別:40-bit-RC4
PdfWriter.ALLOW_SCREENREADERS
允許列印,編輯,複製,簽名 加密級別:40-bit-RC4
PdfWriter.ALLOW_ASSEMBLY
允許列印,編輯,複製,簽名 加密級別:40-bit-RC4
PdfWriter.EMBEDDED_FILES_ONLY
允許列印,編輯,複製,簽名 加密級別:40-bit-RC4
PdfWriter.DO_NOT_ENCRYPT_METADATA*
允許列印,編輯,複製,簽名 加密級別:40-bit-RC4
PdfWriter.ENCRYPTION_AES_256
允許列印,編輯,複製,簽名 加密級別:256-bit-AES
PdfWriter.ENCRYPTION_AES_128
允許列印,編輯,複製,簽名 加密級別:128-bit-AES
PdfWriter.STANDARD_ENCRYPTION_128
允許列印,編輯,複製,簽名 加密級別:128-bit-RC4
PdfWriter.STANDARD_ENCRYPTION_40
允許列印,編輯,複製,簽名 加密級別:40-bit-RC4

上面程式碼設定的兩個許可權是比較常用的,推薦各位使用。在下一篇文章中,我們將詳細介紹pdf水印中的“文字水印圖片水印

【itext學習之路】系列教程

【itext學習之路】—–(第一篇)建立一個簡單的pdf文件
【itext學習之路】—–(第二篇)設定pdf的一些常用屬性
【itext學習之路】—–(第三篇)對pdf文件進行加密和許可權設定
【itext學習之路】—–(第四篇)給pdf增加文字水印和圖片水印
【itext學習之路】—–(第五篇)對pdf進行蓋章/簽章/數字簽名