java - 如何在带有 iText 的多行 AcroFields 中使用制表符?

标签 java pdf pdf-generation itext itextpdf

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

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

现在有一个要求,要求我在 1 个多行 acrofield 内呈现类似表格的布局。

我需要填写该字段的文本如下:

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

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

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

最佳答案

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

如果您能够将文本空间重新定义为三列,没有装订线、没有垂直规则或任何其他视觉提示,那么您就可以自由地将类似表格的布局作为 一个表,您的制表符可以按预期工作,并且您将拥有能够在列中正确包装长条目的备份保险,而不是可能让它们错误地进入下一列并覆盖那里的内容。

如果您绑定(bind)到当前配置,另一个对您有用的建议是使用等宽字体,以便所有字符都是固定宽度(例如 Courier),图找出这些字符中每个模拟列的最大宽度,计算当前列中放置的字符数,然后发出正确的空格数以使您从该位置转到下一列。

例如,如果该字段中的模拟列每列都是 15 个字符宽,那么“星期一”将占用 6 个字符,之后您使用 9 个空格跳到下一列,放置“From 10:00” ” 在那里,再发出 5 个空格,然后在此处删除“直到 12:00”,然后您就完成了该行。下一个将在其下方整齐地对齐,依此类推。

关于java - 如何在带有 iText 的多行 AcroFields 中使用制表符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37021098/

相关文章:

java - 分布式任务队列中的并发(生产者/消费者)

java - 对象的数组列表检查对象的特定值

pdf - SWFTools pdf2swf 精确裁剪

css - iTextSharp PDF 基本字体大小与 XMLWorker

java - 在 Java 中存储数组/包列表

java - 不同的 java JDK 文件 : default-java , java-1.8.0-openjdk-amd64 , java-8-openjdk-amd64 , java-8-oracle 之间有什么区别

excel - 从第三方黑莓应用程序启动 Documents To Go 应用程序

c# - 如何在iTextSharp中引入上标?

asp.net-mvc - MvcRazorToPdf 将内容对齐到页面底部

php - 服务器上的 PDF 到 HTML 转换?