springboot怎样解决引入资源文件生成pdf遇到的坑
springboot怎样解决引入资源文件生成pdf遇到的坑,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
最近项目中,需求是将设备信息生成pdf .首先想到的就是thymeleaf + flying-saucer-pdf 来实现动态html 转pdf,经过一番折腾,终于解决了,期间想过放弃这个方式,但是觉得只有遇到问题,解决问题,理解能力和编程水平才能提高!奔着这一目的,终于搞定了!
码云上demo 地址 https://gitee.com/wanjianning_code/springboot-generate-pdf
代码量很少,但是却开箱即用,避免少走很多弯路
第一个坑,在开发工具中运行一切正常,打成jar 包后,部署出现模板文件和字体文件无法读取 ,首先想到在配置文件中添加外部资源路径提供给springboot 读取,但是项目是运维人员部署,考虑到部署会创建外部目录。这样容易出错,最后通过一下代码解决
public String test() throws IOException { String str = ""; InputStream instream = getClass().getClassLoader().getResourceAsStream("templates/test.txt"); InputStreamReader isr = new InputStreamReader(instream); BufferedReader br = new BufferedReader(isr); StringBuffer content = new StringBuffer(); while ((str = br.readLine()) != null) { content = content.append(str); } return content.toString();}
将资源转为流,然后获取,避免读取物理路径产生的资源不存在
第二个坑,我们的项目使用的springboot 2.0.1版本的,但是thyleaf 却需要高版本的,此时需要调整版本依赖关系,最后在pom文件中定义了这样的关系
高版本的springboot 比如2.3.0 ,使用一下的依赖
org.thymeleaf thymeleaf org.xhtmlrenderer flying-saucer-pdf 9.1.6
低版本的springboot 比如2.0.1 使用以下的依赖
org.springframework.boot spring-boot-starter-thymeleaf 2.3.1.RELEASE ognl ognl 3.1.12 org.xhtmlrenderer flying-saucer-pdf 9.1.6
第三个坑 字体文件在打成jar包发现字体文件在window 电脑无法识别 ,字体文件被损坏.此时我们需要排序资源目录里面文件类型
taskmanage org.apache.maven.plugins maven-resources-plugin ttf TTC ttc TTF woff woff2 org.springframework.boot spring-boot-maven-plugin com.isoft.system.BootApplication repackage org.codehaus.mojo cobertura-maven-plugin 2.7 html xml lombok.Generated clean org.apache.maven.plugins maven-resources-plugin 3.0.2 default-resources validate copy-resources target/classes false # src/main/resources/ true src/main/resources.${spring.profiles.active} false src/main/java **/*.properties **/*.xml **/*.yml false src/main/resources **/*.* false
排除TTF和TTC 后缀的文件,最后打成jar包解压后查看,发现字体文件正常!
关于springboot怎样解决引入资源文件生成pdf遇到的坑问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。