当前位置: 首页 > article >正文

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


http://www.kler.cn/a/572380.html

相关文章:

  • Python数据可视化——Matplotlib的基本概念和使用
  • SQL AnyWhere 的备份与恢复
  • 【节日——日期问题(不完全适用我自己的模板)】
  • 嵌入式开发:傅里叶变换(5):基于STM32,实现CMSIS中的DSP库
  • 动态规划之 “完全背包“ ------P8646 [蓝桥杯 2017 省 AB] 包子凑数
  • CISC架构
  • Rust 并发编程:Futures、Tasks 和 Threads 的结合使用
  • Flutter_学习记录_本地存储数据
  • 玩转大语言模型——Ubuntu系统环境下使用llama.cpp进行CPU与GPU混合推理deepseek
  • 人工智能 大模型在物联网感知层上的应用
  • Go与PHP性能对比分析
  • Linux系列:如何调试 malloc 的底层源码
  • Excel基础(详细篇):总结易忽视的知识点,有用的细节操作
  • 【JSON与JSONP】JSON与JSONP全面解析:定义、区别与核心技术对比
  • 初识uniApp
  • 计算机网络-实验四子网划分
  • 【文献阅读】The Efficiency Spectrum of Large Language Models: An Algorithmic Survey
  • 高频 SQL 50 题(基础版)_1174. 即时食物配送 II
  • 使用GitLink个人建站服务部署Allure在线测试报告
  • Windows逆向工程入门之MASM字符处理机制