PDF 中动态大小的多行文本框字段
Posted
技术标签:
【中文标题】PDF 中动态大小的多行文本框字段【英文标题】:Dynamic sized multi line TextBox field in a PDF 【发布时间】:2017-07-27 02:37:41 【问题描述】:我在一个开放式办公室中创建了一个包含多行表单域的文档:
我遇到的问题是当动态内容超过多行文本框的初始大小时:
当然我可以调整原始模板中文本框的大小,但动态内容可能是 1 到 50 行,我希望文本框后面的文本接近动态内容的最后一行。
有人可以提出解决这个问题的方法吗?
【问题讨论】:
您的表单基于 AcroForm 技术。 AcroForm 字段无法适应 AcroForm 技术中内容的大小。您只能通过将字体大小设置为 0 来使内容适应该字段。如果这不是您的选择,那么您的要求将无法满足。您应该放弃使用 AcroForm 技术并以另一种格式定义模板。 @BrunoLowagieand define the template in another format
@BrunoLowagie 添加了一些赏金
您是否考虑过使用 iText 而不是仅仅填充模板来构建 PDF?这不会是所见即所得,但您会有更多关于可变部件的动态设计选项。
@DavidBS 我目前正在编写一个教程,解释如何将 html+CSS 转换为 PDF。在 HTML 中创建模板真的很容易,但对于那些不同意的人,我们也在设计一个设计器来创建这个 HTML 和 CSS。奇怪的是,为这个问题添加了赏金。具体问题的答案是“AcroForm 模板不是动态的。您在问一些不可能的事情。”隐含的问题是“你能推荐一种工具或模板技术吗?”这样的问题在 Stack Overflow 上是题外话。
【参考方案1】:
我曾经编写过一种解决方案,可以根据提供的字符以编程方式设置文本框的宽度和高度。我想这是很久以前的学校作业。
这可以通过代码中的 VBA 来完成,甚至可以通过宏来完成。或者使用 VB.net。
我没有以前使用的代码,但基本上确定了您能够以字符宽度提供的最大宽度,即首选宽度。确定该宽度的每个字符的像素要求。这成为文本框的宽度。
将您的总字符串字符数除以您首选的宽度字符数。四舍五入,计算每个字符的像素高度。并使用此值乘以文本框高度的舍入结果。很脏,但它应该可以工作。
您可以更改为标签并将 AutoSize 设置为 True 吗?您可以固定宽度并让高度自动调整。这应该在转换为 pdf 之前完成。事实上,所有的尺寸都应该在 pdf 转换之前解决。
不应允许另一个没有评论的反对票。
【讨论】:
我还没有投反对票,但我很想投反对票。原因?好吧,问题最初是关于拥有一个 PDF 模板并对其进行操作以在某些字段中保存不同数量的文本。正如问题的 cmets 中所讨论的,此过程不适用于 PDF。是的,您可以更改 PDF 字段大小,但不会重排该字段周围的文本;因此,扩大 PDF 字段将导致字段重叠文本。因此,计算所需的字段尺寸并相应地更新 PDF 字段并不能解决问题。 问题的 cmets 最终转向填充原始 Word 文档(从中创建 PDF 模板)并将填充的文档(具有更新的字段大小)转换为 PDF。这可能是您的答案可以提供帮助的地方,但您绝不表示您的答案不是按原样指代问题,而是指在 cmets 中开发的变体。 它被否决了,因为它是一个糟糕的答案。您的回答没有解决将扩展文本 在下方移动/推送的问题,这是问题的 90%。您的答案详细说明了如何一般地调整作为文本容器的东西的大小 - 它没有提供特定于 PDF 技术的代码示例(或详细信息),并且充其量是模糊的 有些有效点,但 OP 的复杂性并不表示考虑了编码解决方案。那是我回答的方向,如果有后续,我可能会花一些时间来想出一些代码,但 OP 没有努力去追求。所以不是一个糟糕的答案,只是不是 OP 正在寻找的答案。转换为 PDF 是微不足道的,而不是解决大小问题后所需的解决方案元素。以上是关于PDF 中动态大小的多行文本框字段的主要内容,如果未能解决你的问题,请参考以下文章