首页 文章

如何根据文本内容显示浮动文本字段?

提问于
浏览
2

我有一个 PDF 模板(使用 Adobe Livecycle designer 设计),它有一个子表单和一个文本字段。这两个对象的属性设置为float。并且这些对象的高度设置为Autofit。这些对象的所有封闭父级高度都设置为AutoFit

我的目的是根据我们在文本字段中输入的文本内容来增加文本字段高度。

当我从 Adobe 设计器预览模板时,生成的预览 PDF 将文本字段显示为浮动(基于我输入的测试数据)。

出于应用目的,我们使用 iText。

基本上,我们加载这些预定义的模板,并使用 iText API 将数据填入这些字段。

我们使用的当前版 iText 是 iText 5.1.3

...

Document document = new Document();
document.open();
PdfReader reader = new PdfReader(<inputTemplate>);
ByteArrayOutputStream aStream2 = new ByteArrayOutputStream();
PdfStamper stamper2 = new PdfStamper(reader, aStream2);
AcroFields form = stamper2.getAcroFields();
form.setField("<fieldname>", "<fieldvalue>");

...

等等。

这样生成的 PDF 只显示符合文本框大小的文本,基本上忽略了溢出。

希望我已经对我遇到的问题给出了足够的描述。我想动态嵌入内容并使其余的 PDF 可浮动。我想知道如何使用 iText 实现这一目标?

1 回答

  • 1

    你在混合不同的东西。

    PDF 中有两种类型的表单技术: - AcroForm 技术:使用 PDF 语法描述表单,例如使用 key/value 对描述字段的 PDF 字典,以及存储字段坐标的 PDF 数组,等等。如果您使用 AcroForm 技术,则无法满足您的要求。你使用的是错误的技术。通常,这些表单是使用 Adobe Acrobat,LibreOffice 创建的...... - XML Forms Architecture(XFA):使用 XML 描述表单。 PDF 充当 XML 的容器。通常,这些表单是使用 Adobe LiveCycle Designer 创建的。

    有时,表单使用两种技术(混合表单),在这种情况下,表单是使用 PDF 语法和 XML 语法定义的。

    实现您想要的唯一方法是使用纯粹的 dynamix XFA 表单。在这种情况下,您不能使用 setField()方法。相反,您必须像在此示例中那样使用 fillXfaForm():http://itextpdf.com/examples/iia.php?id=165或者您必须使用 XFA Worker,您可以在此处找到演示:http://demo.itextsupport.com/xfademo/

相关问题