更新现有的图像和表字段

时间:2013-08-21 14:52:11

标签: java itext

我有一个使用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数据的动态行数。它是一个可流动的布局,位于预定义的文本和标题之间。表单(模板)是预先构建的并作为模板提供。表单中填充了DB值和来自JSF应用程序的一些用户输入,并作为完成的接口协议呈现给用户。

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

0 个答案:

没有答案