千家信息网

springboot怎样解决引入资源文件生成pdf遇到的坑

发表于:2024-12-13 作者:千家信息网编辑
千家信息网最后更新 2024年12月13日,springboot怎样解决引入资源文件生成pdf遇到的坑,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。最近项目中,需求是将设备信息
千家信息网最后更新 2024年12月13日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遇到的坑问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

0