Java生成PDF文档 iText使用PDF模板二

秒速五厘米 2022-04-10 03:42 840阅读 0赞

此篇是基于Java生成PDF文档 iText使用PDF模板一 的基础上写的,也都差不多,就是写了2个Demo而已。

如果对您有帮助 ,请多多支持.多少都是您的心意与支持,一分也是爱,再次感谢!!!打开支付宝首页搜“556723462”领红包,领到大红包的小伙伴赶紧使用哦!

记得点击下面的余额宝,红包可能要大些。" class="reference-link">支付宝赞赏:70记得点击下面的余额宝,红包可能要大些。

注意:余额宝红包有效期三天(72小时) 在有效期内 余额宝红包使用完或过期才能有机会领取下个余额宝红包,感谢大家的支持!您的支持,我会继续分享更多的文章,欢迎关注!

废话不多说了,基本上是一样的操作:

代码如下:

一:创建maven项目,加入依赖

  1. <dependency>
  2. <groupId>com.itextpdf</groupId>
  3. <artifactId>itextpdf</artifactId>
  4. <version>5.4.2</version>
  5. </dependency>
  6. <!--pdf itext 的jar依赖 -->
  7. <dependency>
  8. <groupId>com.itextpdf</groupId>
  9. <artifactId>itext-asian</artifactId>
  10. <version>5.2.0</version>
  11. </dependency>

二:创建对应pdf模板,这里,就不仔细介绍了,模板图所下:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMwNzY0OTkx_size_16_color_FFFFFF_t_70

三:创建对应的实体类如下:

  1. package com.demo3;
  2. public class JuanBook {
  3. private String id;// 编号
  4. private String name;//名称
  5. private String shoolName;// 学校名称
  6. private String rmb;// 人民币
  7. private String data;// 日期
  8. public String getId() {
  9. return id;
  10. }
  11. public void setId(String id) {
  12. this.id = id;
  13. }
  14. public String getName() {
  15. return name;
  16. }
  17. public void setName(String name) {
  18. this.name = name;
  19. }
  20. public String getShoolName() {
  21. return shoolName;
  22. }
  23. public void setShoolName(String shoolName) {
  24. this.shoolName = shoolName;
  25. }
  26. public String getRmb() {
  27. return rmb;
  28. }
  29. public void setRmb(String rmb) {
  30. this.rmb = rmb;
  31. }
  32. public String getData() {
  33. return data;
  34. }
  35. public void setData(String data) {
  36. this.data = data;
  37. }
  38. @Override
  39. public String toString() {
  40. return "JuanBook [id=" + id + ", name=" + name + ", shoolName=" + shoolName + ", rmb=" + rmb + ", data=" + data
  41. + "]";
  42. }
  43. //有参构造
  44. public JuanBook(String id, String name, String shoolName, String rmb, String data) {
  45. super();
  46. this.id = id;
  47. this.name = name;
  48. this.shoolName = shoolName;
  49. this.rmb = rmb;
  50. this.data = data;
  51. }
  52. //无参
  53. public JuanBook() {
  54. super();
  55. }
  56. }

四:创建模板:

  1. package com.demo3;
  2. import java.io.ByteArrayOutputStream;
  3. import java.io.File;
  4. import java.io.FileOutputStream;
  5. import com.demo.Ticket;
  6. import com.itextpdf.text.Font;
  7. import com.itextpdf.text.FontFactory;
  8. import com.itextpdf.text.pdf.AcroFields;
  9. import com.itextpdf.text.pdf.BaseFont;
  10. import com.itextpdf.text.pdf.PdfReader;
  11. import com.itextpdf.text.pdf.PdfStamper;
  12. //账票模板
  13. public class PDFTempletBook {
  14. private String templatePdfPath;//模板路径
  15. private String ttcPath;//生成的新路径
  16. private String targetPdfpath;//源路径
  17. private JuanBook juanBook;//捐赠实体
  18. private static final String FONT = "中黑体.ttf";//引入的字体
  19. //get与set
  20. public String getTemplatePdfPath() {
  21. return templatePdfPath;
  22. }
  23. public void setTemplatePdfPath(String templatePdfPath) {
  24. this.templatePdfPath = templatePdfPath;
  25. }
  26. public String getTtcPath() {
  27. return ttcPath;
  28. }
  29. public void setTtcPath(String ttcPath) {
  30. this.ttcPath = ttcPath;
  31. }
  32. public String getTargetPdfpath() {
  33. return targetPdfpath;
  34. }
  35. public void setTargetPdfpath(String targetPdfpath) {
  36. this.targetPdfpath = targetPdfpath;
  37. }
  38. public JuanBook getJuanBook() {
  39. return juanBook;
  40. }
  41. public void setJuanBook(JuanBook juanBook) {
  42. this.juanBook = juanBook;
  43. }
  44. //无参构造
  45. public PDFTempletBook() {
  46. super();
  47. }
  48. //有参构造
  49. public PDFTempletBook(String templatePdfPath, String ttcPath, String targetPdfpath, JuanBook juanBook) {
  50. super();
  51. this.templatePdfPath = templatePdfPath;
  52. this.ttcPath = ttcPath;
  53. this.targetPdfpath = targetPdfpath;
  54. this.juanBook = juanBook;
  55. }
  56. // 使用中文字体
  57. Font f1 = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
  58. //获取
  59. public void templetTicket(File file) throws Exception {
  60. //创建一个pdf读取对象
  61. PdfReader reader = new PdfReader(templatePdfPath);
  62. //创建一个输出流
  63. ByteArrayOutputStream bos = new ByteArrayOutputStream();
  64. //创建pdf模板,参数reader bos
  65. PdfStamper ps = new PdfStamper(reader, bos);
  66. //封装数据,取出模板中的所有字段数据,读取文本域
  67. AcroFields s = ps.getAcroFields();
  68. s.setField("id", juanBook.getId());
  69. s.setField("name", juanBook.getName());
  70. s.setField("shoolname", juanBook.getShoolName());
  71. s.setField("rmb", juanBook.getRmb());
  72. s.setField("data", juanBook.getData());
  73. ps.setFormFlattening(true);//必须要调用这个,否则文档不会生成的
  74. ps.close();//关闭PdfStamper
  75. FileOutputStream fos = new FileOutputStream(file);//创建文件输出流
  76. fos.write(bos.toByteArray());//写入数据
  77. fos.close();//关闭输出流
  78. }
  79. }

五:测试代码效果:

  1. package com.demo3;
  2. import java.io.File;
  3. public class TestDemo {
  4. public static void main(String[] args) throws Exception {
  5. //捐赠对象
  6. JuanBook juanBook = new JuanBook();
  7. juanBook.setId("518518666");
  8. juanBook.setName("中国人民");
  9. juanBook.setShoolName("中国大学人民的大学");
  10. juanBook.setRmb("50000亿");
  11. juanBook.setData("2018年8月8日");
  12. //模板对象
  13. PDFTempletBook Ticketpdf = new PDFTempletBook();
  14. //模板源路径
  15. Ticketpdf.setTemplatePdfPath("D:\\pdfDemo\\捐赠证书.pdf");
  16. //设置tarGet的路径,这个是项目中的源路径
  17. //Ticketpdf.setTargetPdfpath("D:\\a.pdf");
  18. //set封装捐赠对象信息
  19. Ticketpdf.setJuanBook(juanBook);
  20. //指定生成的新路径
  21. File file = new File("D:\\pdfDemo\\4.pdf");
  22. //创建文件
  23. file.createNewFile();
  24. //使生成的文件file生效,这个必须有
  25. Ticketpdf.templetTicket(file);
  26. }
  27. }

六:结果如下:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMwNzY0OTkx_size_16_color_FFFFFF_t_70 1

发表评论

表情:
评论列表 (有 0 条评论,840人围观)

还没有评论,来说两句吧...

相关阅读

    相关 itext 生成pdf

      iText是著名的开 放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将 XM