2017-05-31 224 views
0

是否有任何Java API可以檢查PDF和Office文件格式 - 返回密碼保護/加密文件列表?如何檢查文件是否受密碼保護/加密或不在java中

+0

您是否嘗試過在自己的任何編碼? – ItamarG3

+0

是的,我用Pdfbox來處理PDF文件,但我需要一個可以同時處理PDF和Office文件格式的API。 – Mostafizur

+0

重新PDFBox請參閱https://stackoverflow.com/questions/14806868/how-to-check-pdf-file-is-password-protected-i和https://stackoverflow.com/questions/15896691/how-to-檢查,如果一個pdf是密碼保護或不。請注意,有些文件是加密的,但有一個空的用戶密碼,這是用於受限制的權限。 –

回答

2

您可以使用POI進行office文檔加密。

下面的Office XML格式示例(.xlsx,.pptx,.docx,...)。

基於XML的格式存儲在OLE包流「EncryptedPackage」中。如果你想閱讀與內置的密碼加密文件,使用Decryptor.DEFAULT_PASSWORD

EncryptionInfo info = new EncryptionInfo(filesystem); 
Decryptor d = Decryptor.getInstance(info); 

try { 
    if (!d.verifyPassword(password)) { 
     throw new RuntimeException("Unable to process: document is encrypted"); 
    } 

    InputStream dataStream = d.getDataStream(filesystem); 

    // parse dataStream 

} catch (GeneralSecurityException ex) { 
    throw new RuntimeException("Unable to process encrypted document", ex); 
} 

:使用org.apache.poi.poifs.crypt.Decryptor解碼文件。

而且您可以使用iText pdf API來識別受密碼保護的PDF。

例子:

try { 
     new PdfReader("C:\\Password_protected.pdf");    
    } catch (BadPasswordException e) { 
     System.out.println("PDF is password protected.."); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
+0

答案的第一部分是.docx文件格式,但如何處理.doc文件和開放式辦公文件格式。 – Mostafizur

+0

@Mostafizur:check [my answer](https://stackoverflow.com/questions/45238486 #45337641)爲doc/docx – kiwiwings

相關問題