如何在 iText 的多行 AcroFields 中使用制表符?

How can I use tab characters in multiline AcroFields with iText?

我正在处理的项目有一个 PDF 文件,用作生成另一个最终 PDF 的模板。

该模板有几个表单域。为了呈现最终文档,我使用 iText 打开模板,找到所有表单字段并填写所需数据。

现在有一项要求要求我在 1 个多行 acrofield 中呈现一个类似于 table 的布局。

我需要填写的文本是这样的:

Monday\tFrom 10:00\tUntil 12:00
Tuesday\tFrom 20:00\tUntil 22:00

我之前在字段中使用 \n 作为换行符,这似乎有效。但是,不会显示选项卡。有什么方法可以在多行字段中使用制表符吗?

我试过使用 html 实体/unicode 表示,但这似乎也不起作用。

此上下文中的 Tab 命令是到某种锚点的横向移动(例如跳到先前定义的点,例如下一个字段,下一个列等),并且在单个字段中,您真的没有任何可以跳转到的目标。

如果您能够将文本的 space 重新定义为三列,没有装订线、垂直规则或任何其他视觉提示,那么您就可以自由地实际执行 table-like 布局 as a table,您的 Tab 字符可以按预期运行,并且您将拥有能够在您的列中正确包装长条目的备用保险,而不是可能让他们误入下一栏并在那里覆盖内容。

如果您绑定到当前配置,另一个可能对您有用的建议是使用单色space 字体,这样您的所有字符都将是固定宽度(例如 Courier),算出你在这些字符中每个模拟列的最大宽度,计算你在当前列中放置的字符数,然后发出正确数量的spaces 让您从该位置转到下一栏。

因此,例如,如果您在该字段中的每个模拟列都是 15 个字符宽,那么 "Monday" 将消耗 6 个字符,之后您发出 9 个 spaces 以切换到您的下一列,将 "From 10:00" 放在那里,再发出 5 个 spaces,将 "Until 12:00" 放在那里,你就完成了那一行。下一个会整齐地排列在它下面,依此类推。