How to create Table using Apache PDFBox
我们计划将pdf生成实用程序从iText迁移到PDFBox(由于iText中的许可问题)。 通过一些努力,我能够编写和定位文本,绘制线条等。但是创建带有嵌入在Table单元格中的文本的Tables是一个挑战,我遍历了文档,示例,Google,Stackoverflow找不到任何东西。 想知道PDFBox是否提供本机支持来创建带有嵌入式文本的表格。 我的最后一招就是使用此链接https://github.com/eduardohl/Paginated-PDFBox-Table-Sample
-
就文档创建而言,PDFBox主要等效于iText的低级API。您缺少的是在此之上替换iTexts高级API的东西。我不知道向公众开放的类似内容。
-
是的,你钉了它。缺少用于创建所有这些表的PDFBox的高级API。许多开发者社区正在从iText迁移到其他开源pdf库,我相信有人会提供一个优雅的解决方案。
-
继承人另一个:github.com/dhorions/boxable
-
另一个:stackoverflow.com/questions/3871879/
-
@TilmanHausherr我担心IMO的所有这些示例仅是概念上的证明,可能仅在有限的用例中使用,但到目前为止还不能用于一般用途。 PDFBox有其优势,例如一个非常通用的内容提取框架和一个内容呈现功能,但是缺少适当的布局API是一个严重的弱点。
-
我知道...我只是不想创建另一个iText。不是Samwer兄弟。但是今晚我会在开发者名单上写一些关于该主题的东西。
-
感谢蒂尔曼的建议。虐待他们,并在这里更新我的评论。 iText是一个很棒的库,但是它们的许可确实很糟糕。我自己在pdfbox周围写了很多包装,如果时间允许,我会发布相同的内容。
-
Ive将我的想法不在开发列表中,而是在此处的JIRA问题中发布:issue.apache.org/jira/browse/PDFBOX-2618
由于我还需要用于辅助项目的表格绘制功能,因此我自己实现了一个小的"表格抽屉"库,该库已上传到github。
为了产生这样的表格-例如-...
...您将需要此代码。
在同一文件中,您还可以找到该表的代码:
当前的"功能列表"包括:
-
在表格级别以及单元级别上设置字体和字体大小
-
分别定义底部,顶部,左侧和右侧宽度的单个单元格
-
在行或单元格级别上定义背景色
-
在单元格级别上定义填充(顶部,底部,左侧,右侧)
-
定义边框颜色(在表,行或单元格级别上)
-
指定文本对齐方式(垂直和水平)
-
单元格跨度和行跨度
-
文字换行和行距
同样,如果需要的话,添加缺少的内容(如在上边框,下边框,左边框和右边框上使用不同的边框颜色)应该也不难。
-
试图给这个镜头一个镜头..您在源代码中缺少类AWTColor吗?
-
确实!感谢您的反馈意见! :)显然,我没有仔细检查最后一个请求。请再次git pull,它现在应该可以工作了。
-
分页呢?
-
您是说一张横跨几页的表格?如果是这样,请看一下这段代码,该代码会在三个页面上生成一个表:github.com/vandeseer/easytable/blob/master/src/test/java/org /
-
@philonous是否支持在多个页面上一个接一个地添加多个表?
-
好吧,如果要在多个页面上绘制表格,可以在此处找到示例:TableOverSeveralPagesTest.java
-
@philonous示例仅显示一张绘制在多页上的表。我的用例是将不同的表彼此相邻并且它们可以跨越多个页面
-
我认为您至少需要自己做一些计算:如果另一个表刚刚完成,则需要跟踪下一张表应开始绘制的点。那不应该太难了。
-
@philonous你碰巧有它的例子吗?我试过但是似乎分页在多个表中没有正确发生
-
我还没有,但是只要在github上打开一个问题(标记为问题),我们就可以继续。
感谢Tilman提供的链接。使用boxable API(https://github.com/dhorions/boxable),我能够创建想要的表。仅供参考,我想创建具有可变单元格数量的表。例如,第1行可能有2个单元格,第2行可能有5个单元格,第3行可能只有3个单元格。我能够轻松地做。我在上面提到的链接中关注Example1.java。
-
我找不到您在答案中提到的Example1.java。请粘贴您的代码或Example1.java。
-
@DarshanPuranik:也许此测试可能对您有所帮助。