【问题标题】:Text not fitting into form fields (iTextSharp)文本不适合表单域 (iTextSharp)
【发布时间】:2012-11-20 16:23:12
【问题描述】:

我使用 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 中。

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

【问题讨论】:

  • 您是在展平表单吗?还是您只想预先填写表单(保持交互性不变)?
  • 嗨 - 是的,我正在展平表格......
  • 我刚试过这个,现在在将 FormFlatning 设置为 false 后滚动条确实出现了。但是,我担心那些可能想要操纵或附加到他们在线输入应用程序的内容的人......我们不想要的东西。有没有动态的选择?比如添加文档页面?

标签: itextsharp scrollbars


【解决方案1】:

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

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

如果您无法更改字体大小,则不应期望 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”。

【讨论】:

  • 谢谢。我现在唯一的选择是将新文档添加到内存流中存在的现有 pdf 中。目前这方面的文档很少。
  • 文档很少? manning.com/lowagie2/samplechapter6.pdf 怎么样?我已经写了两本大约 600 页的关于 iText 的书(另外还有一本 150 页的关于数字签名的书),所以请解释一下你缺少什么样的文档。
  • 我刚刚和我的老板谈过要购买 itextsharp 的商业许可证以及这本书。谢谢。
  • @BrunoLowagie ,将字体大小设置为 0 以便它自动调整大小很好,但默认为小于我需要的最大字体大小(我需要 16pt 字体)。我是否从您的帖子中了解到,有一些方法可以自定义它,这样,如果一切都很容易适应该领域,那么当 fontsize 设置为 0 时使用的最大字体大小将接近 16pt?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多