我有一個pdf/a-1表格,我必須填寫Java。如何填寫Java中的PDF/A-1
問題是,它用普通的pdf完全正常,但不能用pdf/a-1。
使用普通的pdf格式,我顯示錶單字段並實現一個HashMap,從中我生成一個fdf文件。
然後,我使用pdftk.exe將我的fdf文件導入普通的pdf格式,並且工作正常。
使用pdf/a-1表單,我無法顯示字段,如果我嘗試導入一個fdf文件,它不會填寫表單。
我不知道是否有一個可以填寫pdf/a-1表單的簡單方法,或者我是否應該使用一些機制來使我的pdf/a-1可填充?
我試過pdfbox和itext,但我沒有找到任何東西。
下面是一些真正簡化的代碼實現,它與常規的pdf格式一起工作,但不包含pdf/a-1格式的字段看似平坦的代碼。
與iText的
File pdfFile = new File(PDF_FILE_PATH);
// Display fields
PdfReader reader = new PdfReader(pdfFile.getAbsolutePath());
System.out.println("\n-----Champs du pdf-----");
for (String field : reader.getAcroFields().getFields().keySet()) {
if (field instanceof String) {
System.out.println("String " + field);
} else {
System.out.println(field.getClass().getSimpleName() + " " + field.toString());
}
}
System.out.println("----------\n");
reader.close();
顯示領域使用PDFBox的
File pdfFile = new File(PDF_FILE_PATH);
// HashMap Test
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("age", "37");
map.put("name", "Jack");
map.put("address", "930 rue des Pommes");
map.put("lastname", "Wilson");
map.put("description",
"Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.");
// Load the existing pdf file
PDDocument pdd = PDDocument.load(pdfFile);
PDAcroForm acroForm = pdd.getDocumentCatalog().getAcroForm();
// For each item, sets a value to the corresponding field
for (String item : map.keySet()){
acroForm.getField(item).setValue((String) map.get(item));
}
// Save
pdd.save(pdfFile);
pdd.close();
使用PDFTK使用PDFTK
實現看起來像一個以上在很多方面,但我從哈希生成地圖FDF文件,並使用以下命令行:
pdftk.exe myForm.pdf fill_form myFdf.fdf output fulfilled_form.pdf flatten
這裏是我的兩種形式,定期之一,而另一個則是使用PDF/A-1格式:
希望你能幫上忙。
此致敬禮。
我建議你也爲你的問題添加一個示例pdf,以及說明你如何處理文件的一些示例代碼。 – yms 2015-03-31 13:32:48
當你嘗試iText時,你確實使用過'PdfAStamper'而不是'PdfStamper'?如果沒有,那麼當PDF/A合規性中斷時您不應該感到驚訝。正如@yms所示,您應該添加一些代碼示例來說明您嘗試過的內容。請參閱http://api.itextpdf.com/pdfa/com/itextpdf/text/pdf/PdfAStamper.html – 2015-03-31 14:35:41
您知道pdftk實際上是一個使用GCJ編譯爲可執行文件的過時版本的iText,對嗎?在發生這種情況時,iText不支持PDF/A,因此您不應該期望pdftk正常工作。 – 2015-03-31 15:06:07