在工作中,我們會將重要的文檔進行加密,並且設置用戶的訪問許可權,其他外部人員均無法打開,只有獲取該許可權的用戶才有資格打開文檔。此外,限制用戶的使用許可權,極大程度上阻止了那些有意要篡改、拷貝其中內容的人,提高文檔的安全性。與此同時,文檔加密的另一大作用是為了防止丟失,因為可能存在員工出差或離職時,將文檔 ...
在工作中,我們會將重要的文檔進行加密,並且設置用戶的訪問許可權,其他外部人員均無法打開,只有獲取該許可權的用戶才有資格打開文檔。此外,限制用戶的使用許可權,極大程度上阻止了那些有意要篡改、拷貝其中內容的人,提高文檔的安全性。與此同時,文檔加密的另一大作用是為了防止丟失,因為可能存在員工出差或離職時,將文檔有意或無意的刪除,造成文檔丟失的現象,從而導致公司的業務和形象受到一定影響。那麼我們如何才能加密PDF文檔呢?加密文檔之後又該如何解密呢?下麵篇文章就詳細介紹瞭如何以編程的方式,通過Java代碼加密或解密PDF文檔。
- 使用密碼加密 PDF 文檔
- 移除 PDF 文檔的密碼
代碼編譯環境:
IntelliJ IDEA 2019(jdk 1.8.0)
PDF Jar包:Free Spire.PDF for Java 5.1.0
引入jar包
導入方法1:
手動引入。將Free Spire.PDF for Java下載到本地,解壓,找到lib文件夾下的Spire.PDF.jar文件。在IDEA中打開如下界面,將本地路徑中的jar文件引入Java程式:
導入方法2:如果您想通過 Maven安裝,則可以在 pom.xml 文件中添加以下代碼導入 JAR 文件。
<repositories> <repository> <id>com.e-iceblue</id> <url>https://repo.e-iceblue.cn/repository/maven-public/</url> </repository> </repositories> <dependencies> <dependency> <groupId>e-iceblue</groupId> <artifactId>spire.pdf.free</artifactId> <version>5.1.0</version> </dependency> </dependencies>
使用密碼加密 PDF 文檔
可以用於加密 PDF 文檔的密碼有兩種:打開密碼和許可權密碼。打開密碼可以限制其他人打開 PDF 文檔,必須輸入密碼才能查看有打開密碼的 PDF 文檔。而許可權密碼則可以限制對文檔進行操作,如列印、複製、評論等。當一個 PDF 文檔被同時用這兩種密碼加密時,可以使用其中任意一種來打開 PDF 文檔。
- 創建 PdfDocument 的對象。
- 使用 PdfDocument.loadFromFile() 方法載入 PDF 文件。
- 設置打開密碼、許可權密碼、密鑰大小以及許可權。
- 使用 PdfDocument.getSecurity().encrypt(java.lang.String openPassword, java.lang.String permissionPassword, java.util.EnumSet<PdfPermissionsFlags> permissions, PdfEncryptionKeySize keySize) 方法加密文檔。
- 使用 PdfDocument.saveToFile() 方法保存 PDF 文件。
完整代碼
Java
import java.util.EnumSet; import com.spire.pdf.PdfDocument; import com.spire.pdf.security.PdfEncryptionKeySize; import com.spire.pdf.security.PdfPermissionsFlags; public class encryptPDF { public static void main(String[] args) { //創建PdfDocument的對象 PdfDocument pdf = new PdfDocument(); //載入PDF文件 pdf.loadFromFile("收購XXX公司項目.pdf"); //加密文檔 PdfEncryptionKeySize keySize = PdfEncryptionKeySize.Key_128_Bit; String openPassword = "password"; String permissionPassword = "permission"; EnumSet flags = EnumSet.of(PdfPermissionsFlags.Print, PdfPermissionsFlags.Fill_Fields); pdf.getSecurity().encrypt(openPassword, permissionPassword, flags, keySize); //保存文檔 pdf.saveToFile("加密.pdf"); pdf.close(); } }
效果圖
移除 PDF 文檔的密碼
如需解密 PDF 文件,可以使用將打開密碼和許可權密碼設置為空,從而去掉密碼。以下是詳細操作步驟:
- 創建 PdfDocument 的對象。
- 使用 PdfDocument.loadFromFile(java.lang.String filename, java.lang.String password) 方法載入加密的 PDF 文件。
- 使用 PdfDocument.getSecurity().encrypt(java.lang.String openPassword, java.lang.String permissionPassword, java.util.EnumSet<PdfPermissionsFlags> permissions, PdfEncryptionKeySize keySize, java.lang.String originalPermissionPassword) 方法將打開密碼和許可權密碼設置為空,以解密文檔。
- 使用 PdfDocument.saveToFile() 方法保存 PDF 文件。
完整代碼
Java
import com.spire.pdf.PdfDocument; import com.spire.pdf.security.PdfEncryptionKeySize; import com.spire.pdf.security.PdfPermissionsFlags; public class decryptPDF { public static void main(String[] args) { //創建PdfDocument的對象 PdfDocument pdf = new PdfDocument(); //使用密碼載入加密的PDF文檔 pdf.loadFromFile("加密.pdf", "password"); //解密文檔 pdf.getSecurity().encrypt("", "", PdfPermissionsFlags.getDefaultPermissions(), PdfEncryptionKeySize.Key_256_Bit, "permission"); //保存文件 pdf.saveToFile("解密.pdf"); pdf.close(); } }
效果圖
—本文完—