我使用Adobe Acrobat Pro创建了一个.PDF文件。该文件有几个文本字段。使用iTextSharp,我可以填充所有字段并邮寄出.PDF。
有一件事让我烦恼 - 其中一些不会在文本框中“适合”。在Adobe中,如果我输入的分配高度更多,滚动条会启动 - 当字体大小未设置为auto且允许多行时会发生这种情况。
但是,当我尝试设置以下属性时:
//qSize is float and set to 15;
//auto size of font is not being set here.
pdfFormFields.SetFieldProperty("notification_desc", "textsize", qSize, null);
// set multiline
pdfFormFields.SetFieldProperty("notification_desc", "setfflags", PdfFormField.FF_MULTILINE, null);
//fill the field
pdfFormFields.SetField("notification_desc", complaintinfo.OWNER_DESC);
然而,在编辑和加盖印章后,滚动条不会出现在最终的.PDF中。
我不确定这是否正确。我想也许我应该创建一个表并用文本填充它,但文档很少或没有引用滚动条....
答案 0 :(得分:2)
展平文档时,会删除所有交互功能。期望在扁平形式上工作滚动条,类似于期望在打印纸上工作滚动条。这就是为什么你没有对你的问题做出很多回应:这有点荒谬。
当您使用文本填充矩形时,将忽略所有不适合的文本。这就是为什么有些人将字体大小设置为0.在这种情况下,将调整字体大小以使文本适合。我不知道这是否适合您,因为您明确指出字体大小必须为15磅。
如果无法更改字体大小,则不应期望AcroForm表单字段适应内容。 ISO-32000-1清楚地表明:文本字段的坐标是固定的。
您唯一的选择是控制iText如何填补该领域。我举例说明了如何在book:MovieAds.java / MovieAds.cs的上下文中执行此操作。在这个例子中,我向字段询问其坐标:
AcroFields.FieldPosition f = form.GetFieldPositions(TEXT)[0];
此对象为您提供页码f.page
和矩形f.position
。您可以将这些变量与ColumnText
结合使用,以完全按照您想要的方式添加内容(并检查是否已添加所有内容)。
我希望你理解:
欲了解更多信息:请参阅“iText in Action - Second Edition”。