0

我有一个使用 LiveCycle Designer 构建的 pdf,我可以使用 iText 5.4.3 轻松更新所有 TextField。我的问题是如何更新现有的 ImageField 并访问 Table 对象?

我已经获得了图像字段的位置,并且能够将图像添加到表单上,然后删除图像字段。

Rectangle rect = acroFields.getFieldPositions("TopmostSubform[0].Page5[0].processFlowImage[0]")
        .get(0).position;
String realPath = FacesContext.getCurrentInstance()
        .getExternalContext().getRealPath("/");
Image img = Image.getInstance(realPath + wsSelected.getImage());
// use scalePercent as images are process flow diagrams and image 
// ratios are not consistent and making them absolute causes distortion
img.scalePercent((float) 47.0);
img.setAbsolutePosition(rect.getLeft(), rect.getBottom());
stamper.getOverContent(5).addImage(img);

虽然这可行,但我认为应该或应该能够获取图像字段并使用 InputStream 或文件填充。

另一个问题是在表单上使用预定义表时。我可以获取字段名称并更新相应的单元格。

但是,我还没有找到任何获取表格、作为表格对象并添加新行的示例。我可以获取位置,创建一个新的 PdfPTable 并将其与数据一起标记到表单上。这行不通。该表将具有基于 db 数据的动态行数。它采用可流动的布局,位于预定义的文本和标题之间。表单(模板)是预先构建的,并作为模板提供。该表单由来自 JSF 应用程序的 DB 值和一些用户输入填充,并作为完成的接口协议呈现给用户。

我的想法是,如果我无法访问表对象及其属性(行、列、单元格),我需要逐行有效地读取表单,创建动态表并将它们插入到输出流中的时间和地点需要,然后继续阅读表格并将最终结果标记为新表格。

4

0 回答 0