首页下载资源后端Spring Boot集成OpenPDF和Freemarker实现PDF导出功能教程配套源码

ZIPSpring Boot集成OpenPDF和Freemarker实现PDF导出功能教程配套源码

lhmyy5211259.43MB需要积分:1

资源文件列表:

spring-openpdf-project.zip 大约有78个文件
  1. spring-openpdf-project/
  2. __MACOSX/._spring-openpdf-project 176B
  3. spring-openpdf-project/.DS_Store 6KB
  4. __MACOSX/spring-openpdf-project/._.DS_Store 176B
  5. spring-openpdf-project/pom.xml 3.87KB
  6. __MACOSX/spring-openpdf-project/._pom.xml 176B
  7. spring-openpdf-project/.gitignore 395B
  8. __MACOSX/spring-openpdf-project/._.gitignore 176B
  9. spring-openpdf-project/.mvn/
  10. __MACOSX/spring-openpdf-project/._.mvn 176B
  11. spring-openpdf-project/.idea/
  12. __MACOSX/spring-openpdf-project/._.idea 176B
  13. spring-openpdf-project/src/
  14. __MACOSX/spring-openpdf-project/._src 176B
  15. spring-openpdf-project/.mvn/wrapper/
  16. __MACOSX/spring-openpdf-project/.mvn/._wrapper 176B
  17. spring-openpdf-project/.idea/encodings.xml 186B
  18. __MACOSX/spring-openpdf-project/.idea/._encodings.xml 176B
  19. spring-openpdf-project/.idea/uiDesigner.xml 8.59KB
  20. __MACOSX/spring-openpdf-project/.idea/._uiDesigner.xml 176B
  21. spring-openpdf-project/.idea/jarRepositories.xml 1.27KB
  22. spring-openpdf-project/.idea/inspectionProfiles/
  23. __MACOSX/spring-openpdf-project/.idea/._inspectionProfiles 176B
  24. spring-openpdf-project/.idea/.gitignore 176B
  25. __MACOSX/spring-openpdf-project/.idea/._.gitignore 176B
  26. spring-openpdf-project/.idea/workspace.xml 8.57KB
  27. spring-openpdf-project/.idea/misc.xml 534B
  28. spring-openpdf-project/.idea/compiler.xml 1.31KB
  29. spring-openpdf-project/src/.DS_Store 6KB
  30. __MACOSX/spring-openpdf-project/src/._.DS_Store 120B
  31. spring-openpdf-project/src/test/
  32. __MACOSX/spring-openpdf-project/src/._test 176B
  33. spring-openpdf-project/src/main/
  34. __MACOSX/spring-openpdf-project/src/._main 176B
  35. spring-openpdf-project/.mvn/wrapper/maven-wrapper.properties 1019B
  36. __MACOSX/spring-openpdf-project/.mvn/wrapper/._maven-wrapper.properties 176B
  37. spring-openpdf-project/.mvn/wrapper/maven-wrapper.jar 58.52KB
  38. __MACOSX/spring-openpdf-project/.mvn/wrapper/._maven-wrapper.jar 176B
  39. spring-openpdf-project/.idea/inspectionProfiles/Project_Default.xml 7.68KB
  40. __MACOSX/spring-openpdf-project/.idea/inspectionProfiles/._Project_Default.xml 176B
  41. spring-openpdf-project/src/test/java/
  42. __MACOSX/spring-openpdf-project/src/test/._java 176B
  43. spring-openpdf-project/src/main/resources/
  44. __MACOSX/spring-openpdf-project/src/main/._resources 176B
  45. spring-openpdf-project/src/main/java/
  46. __MACOSX/spring-openpdf-project/src/main/._java 176B
  47. spring-openpdf-project/src/test/java/com/
  48. __MACOSX/spring-openpdf-project/src/test/java/._com 176B
  49. spring-openpdf-project/src/main/resources/static/
  50. __MACOSX/spring-openpdf-project/src/main/resources/._static 176B
  51. spring-openpdf-project/src/main/resources/templates/
  52. __MACOSX/spring-openpdf-project/src/main/resources/._templates 176B
  53. spring-openpdf-project/src/main/resources/application.yml 366B
  54. __MACOSX/spring-openpdf-project/src/main/resources/._application.yml 176B
  55. spring-openpdf-project/src/main/java/com/
  56. __MACOSX/spring-openpdf-project/src/main/java/._com 176B
  57. spring-openpdf-project/src/test/java/com/toher/
  58. __MACOSX/spring-openpdf-project/src/test/java/com/._toher 176B
  59. spring-openpdf-project/src/main/resources/static/img/
  60. spring-openpdf-project/src/main/resources/static/font/
  61. spring-openpdf-project/src/main/resources/templates/template.ftl 3.01KB
  62. spring-openpdf-project/src/main/java/com/toher/
  63. __MACOSX/spring-openpdf-project/src/main/java/com/._toher 176B
  64. spring-openpdf-project/src/test/java/com/toher/project/
  65. __MACOSX/spring-openpdf-project/src/test/java/com/toher/._project 176B
  66. spring-openpdf-project/src/main/resources/static/img/test.png 241.51KB
  67. spring-openpdf-project/src/main/resources/static/font/simsun.ttc 17.37MB
  68. spring-openpdf-project/src/main/java/com/toher/project/
  69. __MACOSX/spring-openpdf-project/src/main/java/com/toher/._project 176B
  70. spring-openpdf-project/src/test/java/com/toher/project/ApplicationTests.java 223B
  71. __MACOSX/spring-openpdf-project/src/test/java/com/toher/project/._ApplicationTests.java 176B
  72. spring-openpdf-project/src/main/java/com/toher/project/Application.java 308B
  73. __MACOSX/spring-openpdf-project/src/main/java/com/toher/project/._Application.java 176B
  74. spring-openpdf-project/src/main/java/com/toher/project/openpdf/
  75. spring-openpdf-project/src/main/java/com/toher/project/openpdf/OpenPdfService.java 4.81KB
  76. spring-openpdf-project/src/main/java/com/toher/project/openpdf/PdfService.java 3.12KB
  77. spring-openpdf-project/src/main/java/com/toher/project/openpdf/ProductVo.java 343B
  78. spring-openpdf-project/src/main/java/com/toher/project/openpdf/PdfController.java 3.9KB

资源介绍:

该源码对应个人博客【Spring Boot集成OpenPDF和Freemarker实现PDF导出功能并附源码】配套教程,地址:https://blog.csdn.net/lhmyy521125/article/details/140743558 小伙伴可以自行下载学习!不需要积分!不需要积分!不需要积分! 如果相关资源对您有所帮助,希望一键三连给博主一点点鼓励,后续更新更多教程和对应免费源码,如果您有任何疑问或建议,请随时留言讨论! 前言 在我们日常开发中,生成 PDF 文件是一项常见的需求。无论是生成单据、报表、发票还是其他文档,PDF 格式因其便捷的打印和跨平台支持而被广泛使用。本文将介绍如何在 Spring Boot 项目中使用 flying-saucer-pdf 和 Freemarker 来实现 HTML 模板到 PDF 的导出功能 `Flying Saucer`是一个纯Java库,用于使用`CSS 2.1 / CSS 3`呈现任意格式良好的XML(或XHTML),用于布局和格式化,输出到Swing面板,PDF和图像
package com.toher.project.openpdf; /** * @Author 李怀明 * @Date 2024/7/28 12:35 AM * @Version 1.0 */ import com.lowagie.text.Font; import com.lowagie.text.*; import com.lowagie.text.Image; import com.lowagie.text.alignment.HorizontalAlignment; import com.lowagie.text.alignment.VerticalAlignment; import com.lowagie.text.html.simpleparser.HTMLWorker; import com.lowagie.text.pdf.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.ui.freemarker.FreeMarkerTemplateUtils; import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer; import org.xhtmlrenderer.pdf.ITextRenderer; import java.awt.*; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.StringReader; import java.util.Map; @Service public class OpenPdfService { @Autowired private FreeMarkerConfigurer freeMarkerConfigurer; public byte[] generatePdf() throws Exception { ByteArrayOutputStream out = new ByteArrayOutputStream(); // 创建PDF文档 Document document = new Document(); PdfWriter writer = PdfWriter.getInstance(document, out); //如果需要定义字体,将自己的字体放在 resources/fonts目录下 //BaseFont font = BaseFont.createFont("fonts/Viaoda_Libre/ViaodaLibre-Regular.ttf", BaseFont.IDENTITY_H, false); BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); Font docFont = new Font(bfChinese, 10, Font.UNDEFINED, Color.BLACK); //设置水印 writer.setPageEvent(new PdfPageEventHelper() { @Override public void onEndPage(PdfWriter writer, Document document) { PdfContentByte waterMar = writer.getDirectContentUnder(); String text = "Micro麦可乐"; addTextFullWaterMark(waterMar, text, bfChinese); } }); // 设置边距 document.setMargins(20, 20, 20, 20); // 打开文档 document.open(); /** * 01 表格演示 */ String[] tableTitle = new String[]{"清单", "数量", "单价", "总价"}; Table table = new Table(tableTitle.length); table.setWidths(new float[]{70, 10, 10, 10}); // 设置表格前的间距 table.setSpacing(0); // 设置表格在页面中所占的宽度百分比 table.setWidth(100); table.setBorder(0); //模拟5行表格数据 for (int row = 0; row < 5; row++) { for (int i = 0; i < tableTitle.length; i++) { Chunk chunk; if (row == 0) { chunk = new Chunk(tableTitle[i], docFont); } else { chunk = new Chunk(row + "行 模拟数据" + i, docFont); } // 建立单元格 Cell cell = new Cell(chunk); // 设置水平对齐 cell.setHorizontalAlignment(HorizontalAlignment.CENTER); // 设置垂直对齐 cell.setVerticalAlignment(VerticalAlignment.CENTER); table.addCell(cell); } } document.add(table); /** * 02 写入图片 */ byte[] byteArray = new byte[0]; InputStream inputStream = this.getClass().getResourceAsStream("/static/img/test.png"); if (inputStream != null) { byteArray = new byte[inputStream.available()]; inputStream.read(byteArray); } Image image = Image.getInstance(byteArray); // 图片进行缩放 image.scaleAbsolute(200, 200); document.add(image); /** * 03 写入html模版内容 */ HTMLWorker htmlWorker = new HTMLWorker(document); String html = "

Hello, micro

"; htmlWorker.parse(new StringReader(html)); // 关闭文档 document.close(); return out.toByteArray(); } public static void addTextFullWaterMark(PdfContentByte waterMar, String text, BaseFont bfChinese) { waterMar.beginText(); PdfGState gs = new PdfGState(); // 设置填充字体不透明度为0.2f gs.setFillOpacity(0.2f); waterMar.setFontAndSize(bfChinese, 40); // 设置透明度 waterMar.setGState(gs); // 设置水印对齐方式 水印内容 X坐标 Y坐标 旋转角度 for (int x = 0; x <= 700; x += 200) { for (int y = 0; y <= 800; y += 200) { waterMar.showTextAligned(Element.ALIGN_RIGHT, text, x, y, 35); } } // 设置水印颜色 waterMar.setColorFill(Color.GRAY); //结束设置 waterMar.endText(); waterMar.stroke(); } }
100+评论
captcha