如何根据文本内容显示浮动文本框?(How to display floating textfield

2019-09-22 04:03发布

我有一个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?

Answer 1:

你是混合不同的东西。

有两种类型的形式技术在PDF: - AcroForm技术:形式使用PDF语法,如PDF字典使用键/值对来描述字段如PDF数组存储的场的坐标,和描述,并且等等。 如果你使用AcroForm技术,您的要求不能得到满足。 您使用了错误的技术。 通常,这些形式使用创建的Adobe Acrobat,LibreOffice的,... - 在XML表单架构(XFA):形式是使用XML描述。 该PDF充当XML的容器。 通常情况下,使用Adobe LiveCycle Designer中创建这些形式。

有时,一个形式使用在这种情况下,形式使用PDF语法以及XML语法定义的两种技术(混合形式)。

达到你想要什么的唯一方式,就是用纯,DYNAMIX XFA表单。 在这种情况下,你不能使用setField()方法。 取而代之的是,你要么必须使用fillXfaForm()作为在这个例子中完成: http://itextpdf.com/examples/iia.php?id=165或者你必须使用XFA工人,而您可以在这里找到一个演示: http://demo.itextsupport.com/xfademo/



文章来源: How to display floating textfield depending on the text content?