Заполните форму PDF, используя ITEXT в Java, у которых проблемы
Вопрос
Я использую ITEXT для заполнения формы PDF, без ошибок в консоли, но когда я открываю выходной PDF, он дает «ожидаемый объект DICT», и после того, как он дает другое сообщение, в котором говорится: «Этот документ включает расширенные функции в Adobe Reader. был изменен с тех пор, как он был создан, и использование расширенных функций больше не доступно ».
Кроме того, у выходного PDF есть изменения, которые я внес, но у него нет функций оригинального документа PDF, как показывает вышеупомянутое сообщение.
Я использовал ниже код ...
PdfReader reader = new PdfReader("C:\\Users\\asfs\\Downloads\\1013-Form22.pdf");
String name = "C:\\Users\\asfs\\Downloads\\Temp.pdf";
PdfStamper stamp = new PdfStamper(reader, new FileOutputStream(name));
AcroFields form = stamp.getAcroFields();
String last = "Form22_Dtls[0].Page1[0].Country_C[0]";
form.setField(last, "Sample Country name");
HashMap map = new HashMap();
map = form.getFields();
Iterator iterator = map.keySet().iterator();
while(iterator.hasNext())
System.out.println("Field is >>>"+iterator.next());
// close pdf stamper
stamp.setFormFlattening(true);
stamp.close();
Помогите мне, пожалуйста.
Спасибо
Решение
Пытаться:
// open the pdf stamper in edit mode
stamp = new PdfStamper(reader, new FileOutputStream(name), '\0', true);
PDFStamper должен быть в режиме приложения.
Другие советы
Если вы хотите код Java, вот фрагмент, который я получил от одного блога. Но он использует PDF Nitro, если это поможет или дайте мне знать
private ByteArrayOutputStream editPdfDocument() throws Exception {
PdfReader reader = null;
PdfStamper stamper = null;
ByteArrayOutputStream baosPDF = new ByteArrayOutputStream();
HashMap fieldsWithValues = new HashMap();
int user_id = 1234; // unique key for the object
String dirPath = “D:/abc”;// directory path
String fileName = “def.pdf”;// name of the file
try {
reader = new PdfReader(dirPath + “/” + fileName);
stamper = new PdfStamper(reader, baosPDF);
AcroFields form = stamper.getAcroFields();
HashMap fields = form.getFields();
Set keys = fields.keySet(); // keys represents the names of all the form fields
fieldsWithValues = fetchFieldValuesForObject(user_id, keys);
// fetchFieldValuesForObject(user_id, keys) method will fetch the values of the fields from Database for object identified by user_id
Iterator itr = keys.iterator();
while (itr.hasNext()) {
String fieldName = (String) itr.next();
String fieldValue = fieldsWithValues.get(fieldName) != null ? (String)(fieldsWithValues.get(fieldName)) : “”;
form.setField(fieldName, fieldValue);
}
stamper.setFormFlattening(true);
} catch (Exception dex) {
if (stamper != null)
stamper.close();
if (reader != null)
reader.close();
throw dex;
}
return baosPDF;
}`enter code here`
Это заполнение формы PDF с использованием Java, которое напрямую извлекает данные из базы данных, надеюсь, это работаетПосетите коды Java для автоматической заполнения форм
Насколько я знаю, Stamp.SetFormFlattening (True); Вы звоните, удаляете поля и заменяете это на содержание, поэтому ваш новый документ не сохраняет поля