2013-10-28 91 views
2

我使用iText的加密PDF文件:閱讀加密的PDF元數據不解密文件

stamp.setEncryption(hardPasswordByte, 
        hardPasswordByte, 
        PdfWriter.ALLOW_PRINTING, 
        PdfWriter.ENCRYPTION_AES_128 | PdfWriter.DO_NOT_ENCRYPT_METADATA); 

通知我指定PdfWriter.DO_NOT_ENCRYPT_METADATA

但是當我嘗試只讀取文檔元數據是這樣的(沒有解密文件):

PdfReader ReadInputPDF = new PdfReader(path); 
byte Document_MetaData[] = ReadInputPDF.getMetadata(); 

我得到「錯誤的用戶密碼」異常。

有沒有辦法讀取元文件解密文件?

+1

有問題的元數據作爲XML部分存在於文件中。您不使用pdf閱讀器,而是在文件中搜索此類XML部分 – mkl

回答

1

所以,MKL說PdfWriter.DO_NOT_ENCRYPT_METADATA只是設置這可以理解爲一個明文的元數據。使用Java我可以簡單地使用InputStream並讀取文件,搜索元數據。

1

你可以嘗試你的PdfReader構造提供密碼:

new PdfReader(path, hardPasswordByte); 
+0

我沒有密碼,我只想要MetaDate –

+1

@Michael您提供了'hardPasswordByte'作爲您的'pdfWriter.setEncryption'的所有者密碼。嘗試使用它來實例化讀者。這只是根據你發佈的內容猜測的。 – kiruwka

+0

我知道我可以用密碼讀取文件,但是這正是我測試的內容:讀取元代碼而不通過密碼! –