首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

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

后端 9.43MB 27 需要积分: 1
立即下载

资源介绍:

该源码对应个人博客【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(); } }

资源文件列表:

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
0评论
提交 加载更多评论
其他资源 python 模拟人工鼠标轨迹算法Demo
参考博客文章:https://codersrc.blog.csdn.net/article/details/140670756 AI大模型通过学习大量的人类鼠标操作数据,能够识别和模拟出自然且具有个体差异的鼠标轨迹。以下是实现这一技术的关键步骤: 数据收集:收集不同玩家在各种游戏环境中的鼠标操作数据,包括移动速度、停顿、加速度等。 模型训练:利用深度学习算法,训练AI模型识别鼠标操作中的模式和规律。 轨迹生成:在给定起点和终点的情况下,AI模型能够生成符合人类操作习惯的鼠标轨迹。 鼠标轨迹api底层实现采用C/C++语言,利用其高性能和系统级访问能力,开发出高效的鼠标轨迹模拟算法。通过将算法封装为DLL(动态链接库),可以方便地在不同的编程环境中调用,实现跨语言的兼容性。 通过DLL封装,开发者可以在C++、Python、易语言、按键精灵等多种编程语言中使用鼠标轨迹模拟技术。这种封装方式提供了一种简便的接口,使得不同背景的开发者都能够轻松集成和使用这一技术。
一图流Git下载与安装
该资源包含以下内容: 博客文章 - "git下载与安装"(md版):本篇markdown格式的博客文章详细介绍了git的下载和安装过程。文章结构清晰,步骤详细,旨在帮助初学者快速上手git这一版本控制系统。文章内容包括git的基本概念、下载链接、安装指南以及初步使用的说明,适合希望了解并开始使用git的用户。 博客文章 - "git下载与安装"(pdf版):为了方便用户在各种设备上阅读,我们还提供了上述博客文章的pdf版本。这个版本经过精心排版,可以在电脑、平板或手机上阅读,确保无论您在任何场合都能获得良好的阅读体验。 git安装包:为了让您能够顺利开始使用git,我们特别提供了官方git的最新版本安装包。此安装包适用于多个操作系统,包括windows、macos和linux等。请根据您的系统类型选择合适的安装包进行下载和安装。 总之,通过这些资源,无论是新手还是有经验的开发者,都能够有效地掌握git的下载、安装及基本使用方法。我们希望这些材料能为您的软件工程工作带来便利,提升您的工作效率。
一图流Git下载与安装 一图流Git下载与安装 一图流Git下载与安装
【JavaWeb学习笔记】登录实现与校验
此资源包括以下资源文件: 博客文章 - 【javaweb学习笔记】登录实现与校验(md版):本文深入讲述了登录功能的设计与实现,从功能开发到登录校验的每个环节都进行了详细的阐述。内容涵盖会话技术的应用、会话跟踪方案的选择,以及两种常见的会话跟踪机制:cookie和session。同时,文章还介绍了jwt(json web token)令牌的使用,包括生成和校验jwt的过程,如何将jwt用于登录流程,并详细说明了过滤器(filter)和拦截器(interceptor)在登录校验中的应用。此外,文章还提供了全局异常处理器的相关问题解决方案,帮助您构建一个安全且健壮的java web登录系统。 博客文章 - 【javaweb学习笔记】登录实现与校验(pdf版):为了适应您在不同设备上的阅读需求,我们同时提供了上述文章内容的pdf格式。优雅的排版设计确保了在各种设备上都能有良好的阅读体验,无论您是在桌面电脑、平板还是手机上,都能够轻松学习和参考。
【JavaWeb学习笔记】登录实现与校验 【JavaWeb学习笔记】登录实现与校验 【JavaWeb学习笔记】登录实现与校验
Typroa如何下载与安装
无论您是写作爱好者、博客作者还是专业的文档编写者,以下资源将帮助您轻松安装并开始使用这一广受欢迎的markdown编辑器。 typora安装文档:这份详细的安装文档提供了step-by-step的指导,帮助您在不同操作系统上顺利完成typora的安装过程。从下载到配置,每步都配有清晰的说明和图示,确保即使是初学者也能够毫无困扰地完成安装。 typora安装包:我们提供的是官方最新版本的typora安装包,支持多种操作系统,包括windows、macos和linux。只需根据您的电脑系统选择合适的版本进行下载,便可以开始安装过程。 安装工具:为了简化安装流程,我们还附上了一些有用的安装辅助工具。这些工具旨在自动化一些安装步骤,解决可能遇到的兼容性问题,以及帮助您保持typora处于最新状态。
YN50mm-F1.8S-DA-DSM-II-v02
永诺50mm1.8 固件
YN50mm-F1.8S-DA-DSM-II-v02
atlas图集分割与json图集分割
111
json图集分割111
11
atlas图集分割11
11