欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 明星 > Java+iTextPDF,实时生成与预览PDF文件的最佳实践!

Java+iTextPDF,实时生成与预览PDF文件的最佳实践!

2025/3/10 5:29:35 来源:https://blog.csdn.net/mmmmm44444/article/details/145995341  浏览:    关键词:Java+iTextPDF,实时生成与预览PDF文件的最佳实践!

Java+iTextPDF,实时生成与预览PDF文件的最佳实践!

背景

其实公司之前的项目里是用到了帆软报表的,然而最近接了一个新项目,这个项目独立部署在甲方的独立环境中,组长的意思是不用再单独部署一套帆软报表,成本太大,用其他方式实现一下。虽然我不太理解成本大在哪儿,不过身为助理工程师,别管那么多,照着干就完事了。

之前有其他哥们写过类似功能,通过解析数据动态生成pdf文件。但他用的那个技术jasper有点老了,资料不太好找,问过神奇的chatgpt后,了解到iTextPdf这个库,应该是比较好的选择。

解决方案

我们先观察下真实的开票预览的模板。

图片

发票信息由两部分组成:

  • 固定信息,例如购买方信息、销售方信息。
  • 商品信息,可能有多行,需动态填充

很明显的一个主子结构。

了解了一下iTextPdf的相关api。要实现这个功能,其实我们需要分别生成两部分的发票信息,也就是两个pdf,然后将两个pdf拼接成同一个。

  • 对于第一部分的固定信息,我们可以用Acrobat之类的pdf设计工具设计出一个模板,然后在java程序中读取并填充对应的模板值。
  • 对于第二部分的商品信息,就需要获取商品数据,动态生成表格,当然iTextPdf是支持这一功能的。

分别得到两部分的pdf之后,再将其合并为同一个pdf就可以了。

具体实现

1.引入iTextPdf库

在pom文件中添加iTextPdf的对应依赖。其中 itext-asian 这个也是需要的,不然生成的pdf中无法显示中文

<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13.2</version>
</dependency><dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version>
</dependency>
2.编辑对应模板

下载Adobe Acrobat工具,这部分就不细说了 点击文件-创建-表单。如果你有现成的pdf文件,也可以在这步选择单一文件开始,没有的话就从头新建

图片

通过放置文字和文字域来设计好表单模板。注意,文字域“属性”里的名称就是最后使用iTextPdf填充时需要填充的对应字段。

图片

图片

3.编写java PDF生成程序

使用框架还是老一套的SpringBoo

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词