2013-05-21 121 views
1

我有一個從PDF 1.7中的LiveCycle Designer創建的PDF。如果您擁有PDF密碼,您如何使用iText從密碼保護的PDF中讀取字段?

我想在服務器端閱讀該PDF中的某些字段。我有用於保護服務器端PDF的密碼。

我可以使用iText的這種非加密的PDF文件就好了......

PdfReader reader = new PdfReader(request.getInputStream()); 
AcroFields af = reader.getAcroFields(); 
Map<String, AcroFields.Item> afFields = af.getFields(); 
for (String key : afFields.keySet()) { 
    System.out.print(key + " = "); 
    System.out.println(af.getField(key)); 
} 

但是當我做同樣的事情的PDF受密碼保護,這似乎打破。我沒有得到任何字段返回。

有什麼方法可以將密碼發送到iText並能夠讀取字段?

我也有權訪問LiveCycle ES3 SDK。也許他們提供了一個API來做到這一點?

+0

Oooo。通過JavaDoc巡航我發現了PdfReader的「所有者密碼」參數。嘗試這一點。 –

+0

nope - 沒有運氣。 –

+1

當您在Adobe Reader中打開文檔時:是否必須提供密碼?如果是,則使用用戶密碼保護文檔;如果不是,則使用所有者密碼保護文檔。告訴我們這是什麼情況,我們會從那裏拿走它。 –

回答

0

答案是,如果有人正在尋找它,當試圖從您的Java應用程序中讀取LiveCycle創建的PDF數據時放棄使用iText。我很習慣使用開源API,但我忘記了使用他們提供的LiveCycle Web服務。

它們提供了一個工作臺產品,可讓您將Web服務串起來。提供的許多Web服務之一是一個EncryptionService,可以解密受密碼保護的PDF,然後是另一個可以獲得PDF中數據的XML表示的服務。

所以我簡單地稱這兩個服務,並完成。