0

我知道网上已经有一些信息,但我不明白。

我的情况:我有一个 10 页的 PDF,所有页面都包含相同的表格。当我使用我的代码时,只填写了第一页,其他页面仍然是空白的。如果我检查 Adob​​e 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();
4

2 回答 2

1

请看一下这个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/(单击“填充、展平和合并”旁边的链接“如何正确执行”)。

于 2014-07-02T08:54:57.040 回答
0

创建form内部循环的对象。

还要检查pageCount它是否为1。

于 2014-07-02T07:58:18.747 回答