1

我使用 Adob​​e Acrobat Pro 创建了一个 .PDF 文件。该文件有几个文本字段。使用 iTextSharp,我可以填充所有字段并邮寄 .PDF。

一件事困扰着我——接下来的一些内容将不“适合”在文本框中。在 Adob​​e 中,如果我输入的高度超过了分配的高度,滚动条就会启动 - 当字体大小未设置为自动并且允许多行时会发生这种情况。

但是,当我尝试设置以下属性时:

//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 中。

我不确定这是否是正确的做法。我在想也许我应该创建一个表格并用文本填充它,但文档很少或根本没有引用滚动条......

4

1 回答 1

2

拼合文档时,会删除所有交互性。在扁平表单上期望工作滚动条类似于在打印纸上期望工作滚动条。这就是为什么你的问题没有得到很多回应:这有点荒谬。

当您用文本填充矩形时,所有不适合的文本都将被省略。这就是为什么有些人将字体大小设置为 0。在这种情况下,将调整字体大小以使文本适合。我不知道这是否适合您,因为您明确指出字体大小必须为 15 pt。

如果您无法更改字体大小,则不应期望 AcroForm 表单域能够自行适应内容。ISO-32000-1 对此很清楚:文本字段的坐标是固定的。

您唯一的选择是控制 iText 应如何填写该字段。我做了一个例子来展示如何在我的的上下文中做到这一点MovieAds.java/MovieAds.cs。在此示例中,我向该字段询问其坐标:

AcroFields.FieldPosition f = form.GetFieldPositions(TEXT)[0];

该对象为您提供页码f.page和一个 Rectangle f.position。您可以结合使用这些变量ColumnText来完全按照您想要的方式添加内容(并检查是否已添加所有内容)。

我希望你明白:

  • 扁平表单上没有滚动条是正常的,
  • 填写字段的标准方式剪辑不适合的内容,
  • 如果您想要自定义结果,则需要进行更多编程。

更多信息:请参阅“iText in Action - Second Edition”。

于 2012-11-21T09:04:54.813 回答