如何使用 Apache PDFBox 创建表格

Posted

技术标签:

【中文标题】如何使用 Apache PDFBox 创建表格【英文标题】:How to create Table using Apache PDFBox 【发布时间】:2015-03-19 12:29:39 【问题描述】:

我们计划将我们的 pdf 生成实用程序从 iText 迁移到 PDFBox(由于 iText 中的许可问题)。通过一些努力,我能够编写和定位文本、画线等。但是在表格单元格中创建嵌入文本的表格是一个挑战,我浏览了文档、示例、谷歌、*** 找不到任何东西。想知道 PDFBox 是否为创建带有嵌入文本的表格提供本机支持。我最后的手段是使用这个链接https://github.com/eduardohl/Paginated-PDFBox-Table-Sample

【问题讨论】:

就文档创建而言,PDFBox主要相当于iText的底层API。您缺少的是在此之上替换 iText 的高级 API 的东西。我不知道有类似的东西可供公众使用。 是的,你成功了。缺少用于创建所有这些表格的 PDFBox 高级 API。许多开发社区正在从 iText 迁移到其他开源 pdf 库,我相信有人会有一个优雅的解决方案。 这是另一个:github.com/dhorions/boxable 还有一个:***.com/questions/3871879/… @TilmanHausherr 恐怕所有这些样本 IMO 只是概念证明,可能在有限的用例中使用,但到目前为止还不是通用的。 PDFBox 有它的优势,例如一个非常通用的内容提取框架和内容渲染能力,但缺少适当的布局 API 是一个严重的弱点。 【参考方案1】:

由于我还需要一个辅助项目的表格绘制功能,我自己实现了一个小型“表格抽屉”库,我将其上传到github。

为了生成这样的表格——例如——...

...你需要this code。 在同一个文件中,您还可以找到该表的代码:

目前的“功能列表”包括:

在表格级别和单元格级别设置字体和字体大小 分别定义具有底部、顶部、左侧和右侧边框宽度的单个单元格 在行或单元格级别定义背景颜色 在单元格级别定义填充(上、下、左、右) 定义边框颜色(在表格、行或单元格级别) 指定文本对齐方式(垂直和水平) 单元格跨越和行跨越 文本换行和行距

此外,如果需要,添加缺失的内容应该不会太难,例如在顶部、底部、左侧和右侧边框上使用不同的边框颜色。

【讨论】:

试图试一试.. 你是否在源代码中缺少 AWTColor 类? 确实!感谢您的反馈意见! :) 显然我没有仔细检查最后的拉取请求。请再次 git pull,它现在应该可以工作了。 分页呢? 你的意思是一个跨越几页的表格?如果是这样,请查看此代码,它会生成一个超过三页的表格:github.com/vandeseer/easytable/blob/master/src/test/java/org/… @philonous 是否支持逐页添加多个表格?【参考方案2】:

感谢 Tilman 提供的链接。使用 boxable API (https://github.com/dhorions/boxable) 我能够创建我想要的表。仅供参考,我想创建具有可变数量单元格的表格。例如,第 1 行有 2 个单元格,第 2 行可能有 5 个单元格,第 3 行可能只有 3 个单元格。我能够轻松完成。我在上面提到的链接中关注了 Example1.java。

【讨论】:

我找不到您在回答中提到的 Example1.java。请您粘贴您的代码或 Example1.java。 @DarshanPuranik:也许这个test 可以帮助你。

以上是关于如何使用 Apache PDFBox 创建表格的主要内容,如果未能解决你的问题,请参考以下文章

如何防止 Apache PDFBox 中的通用签名伪造 (USF)、增量保存攻击 (ISA)、签名包装 (SWA)

不知道如何运行此pdfbox注释示例

Apache PDFBox的基本使用

如何使用 PDFBox drawString 插入换行符

PDFBox 字段值在展平后无法显示

PDFBox 2.0 和 TTC 字体