iText, заполняющий несколько страниц одинаковыми текстовыми полями
Я знаю, что в Интернете уже есть какая-то информация, но я ее не понимаю.
Мой случай: у меня PDF из 10 страниц, все страницы содержат одинаковую форму. Когда я использую свой код, заполняется только первая страница, а остальные остаются пустыми. Если я проверил имена полей в Adobe Livecycle, они все одинаковые на разных страницах.
Что мне делать в моем случае, чтобы заполнить все страницы, а не только первую?
Мой код:
//Pagecount == 10
//I was trying to loop through the pages, no success
for(int i=1; i<=pageCount; i++){
form.setField("RecallID", wdContext.currentGetRecallDetailsResponseOutputElement().getRecallid());
form.setField("Afdeling", afdeling);
String type = wdContext.currentGetRecallDetailsResponseOutputElement().getType();
if(type.equals("D"))form.setField("Type", "DESTRUCTION");
else if(type.equals("B"))form.setField("Type", "BLOCK");
form.setField("Description", wdContext.currentGetRecallDetailsResponseOutputElement().getDescription());
form.setField("CreationDate",sdf.format(wdContext.currentGetRecallDetailsResponseOutputElement().getCreationdate()));
form.setField("Enddate", sdf.format(wdContext.currentGetRecallDetailsResponseOutputElement().getEnddate()));
form.setField("Acties", wdContext.currentGetRecallDetailsResponseOutputElement().getAction_Nl());
form.setField("Actions", wdContext.currentGetRecallDetailsResponseOutputElement().getAction_Fr());
form.setField("Probleem", wdContext.currentGetRecallDetailsResponseOutputElement().getProblem_Nl());
form.setField("Probleme", wdContext.currentGetRecallDetailsResponseOutputElement().getProblem_Fr());
}
stamper.setFormFlattening(true);
stamper.close();
2 ответа
Пожалуйста, посмотрите на FillFlattenMerge2
пример. Этот пример объясняется в этом видеоуроке: https://www.youtube.com/watch?v=6YwDME0Fl1c (если вы будете следовать этому руководству, вы поймете, почему FillFlattenMerge1
это пример того, как НЕ делать этого.)
Document document = new Document();
PdfCopy copy = new PdfSmartCopy(document, new FileOutputStream(dest));
document.open();
ByteArrayOutputStream baos;
PdfReader reader;
PdfStamper stamper;
AcroFields fields;
for (int i = 0; i < data.length; i++) {
// create a PDF in memory
baos = new ByteArrayOutputStream();
reader = new PdfReader(SRC);
stamper = new PdfStamper(reader, baos);
fields = stamper.getAcroFields();
tokenizer = new StringTokenizer(line, ";");
fields.setField("name", data[i].getName());
...
stamper.setFormFlattening(true);
stamper.close();
reader.close();
// add the PDF to PdfCopy
reader = new PdfReader(baos.toByteArray());
copy.addDocument(reader);
reader.close();
}
br.close();
document.close();
Вы можете увидеть пример в действии здесь: http://demo.itextsupport.com/itextsamples/ (нажмите на ссылку "Как это сделать правильно" рядом с "Fill, flatten and merge").
Создать объект из form
внутри петли.
Также проверьте pageCount
если это 1.