2012-01-05 130 views
7

我需要處理大量受保護的pdf文件並使用java程序進行編輯,但是我沒有這些文件的密碼。 有什麼辦法可以用批處理解鎖這些文件嗎?解鎖受保護的pdf文件

我想要一個Windows命令,如工具或Java開源API。 什麼是最佳解決方案?

+3

最好的解決方案是向擁有文件內容的人請求支持 - 那可能是密碼保護他們的人。 – mah 2012-01-05 20:44:20

+0

只要PDF只有一個所有者密碼而不是一個用戶密碼(您仍然可以查看它們),那麼文件中沒有任何加密。這些限制只能由查看器應用程序強制實施,並且PDF完全不受保護。如果您擁有自己的編輯應用程序,則可以忽略該保護。 – Alasdair 2012-01-06 01:04:36

回答

16

是要求打開密碼的這些pdf文件,還是保護包含對複製,打印,修改,文本提取等方面的限制嗎?

,如果這是你的情況,你可以用

qpdf嘗試

用法:

qpdf --decrypt file.pdf unlocked.pdf 

,並且可以在一個批次中使用操作集體,這樣

for f in *.pdf ; do qpdf --decrypt $f ${f%%.pdf}unlocked.pdf; done 
+0

我的pdf文件不需要輸入密碼。我的限制是關於複製,打印,修改,我想要一個與qpdf完成相同工作的java庫。 – brianbro 2012-01-06 15:48:30

+0

謝謝。我用你的解決方案。完美 – brianbro 2012-08-09 22:25:33

+1

是的,這是PDFUnlock最好的免費和開放源代碼! – hellboy 2013-11-18 15:57:33

0

你也可以使用iText庫來做到這一點。

下面是一個示例代碼:

 PdfReader.unethicalreading = true; 
     PdfReader reader = new PdfReader(inputFile); 
     PdfEncryptor.encrypt(reader, new FileOutputStream(outputFile), null, 
       null, PdfWriter.ALLOW_ASSEMBLY | PdfWriter.ALLOW_COPY 
        | PdfWriter.ALLOW_DEGRADED_PRINTING | PdfWriter.ALLOW_FILL_IN 
        | PdfWriter.ALLOW_MODIFY_ANNOTATIONS | PdfWriter.ALLOW_MODIFY_CONTENTS 
        | PdfWriter.ALLOW_PRINTING | PdfWriter.ALLOW_SCREENREADERS, false); 

P.S. :使用unethicalreading標誌自負風險