2017-05-31 861 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

相关问题