189 8069 5689

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遇到的坑问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


文章名称:springboot怎样解决引入资源文件生成pdf遇到的坑
分享地址:http://cdxtjz.com/article/jsehpi.html

其他资讯