spring Boot jar包工程下引用静态资源

     最近在写一个sprin-boot项目。其中涉及到了PDF跟字体文件的引用。

     由于主工程打的是jar包,所以,他不像传统的web项目那样,可以把静态资源放在web-info下面。而我们引用的jar包,给pdf设置水印需要传入引用的路径。

     期初在网上查了很多资料,他们jar包下的引用用的是用流引用

    如下

ClassPathResource classPathResource = new ClassPathResource("template/contractTemplate.pdf");
try {
InputStream inputStream = classPathResource.getInputStream();
byte b[]=new byte[2048]; 
inputStream.read(b);
inputStream.close();

} catch (IOException e) {
e.printStackTrace();
}

但是 PdfReader reader = new PdfReader (“路径”)

这里需要传入一个路径,所以用流就不能引用这个给PDF加水印的方法。

后来想到了:

URL url = PdfSetWaterPrint.class.getClassLoader().getResource(".");
//        String path = resource.toString();
//        System.out.println(path);
 //       path += "font/msyh.ttf";

或者:

Enumeration<URL> url =  ClassLoader.getSystemResources("font/msyh.ttf");
// String url1 = url.getClass().getClassLoader().getResource("font/msyh.ttf")+"";
// ClassPathResource resource = new ClassPathResource("font/msyh.ttf");

来获取路径的方法,

但是一打jar包后就引入不到文件

后来发现只要是静态的资源打jar包就引入不到。

<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.tld</include>
<include>**/*.jsp</include>
<include>**/*.ftl</include>
<include>**/*.html</include>
<include>**/*.txt</include>
<include>**/*.pdf</include>   
  <include>**/*.ttf</include>
 
</includes> 
  <excludes>  
    <exclude>template/*.pdf</exclude>  
    <exclude>font/*.ttf</exclude>  
  </excludes>  
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.tld</include>
<include>**/*.ftl</include>
<include>**/*.html</include>
</includes>
<filtering>true</filtering>
</resource>


</resources>


后来就想到把标红的给删除,但是删除后就不能引用PDF了,会报空指针。后来就想到了加

<excludes>  
     <exclude>template/*.pdf</exclude>  
     <exclude>font/*.ttf</exclude>  
   </excludes> 

打包的过程中把静态资源给过滤掉。




ClassPathResource resource = new ClassPathResource("template/contractTemplate.pdf");
// System.out.println(resource.getFile());
// InputStream stream = resource.getInputStream();
// File targetFile = new File("hetong.pdf");
// FileUtils.copyInputStreamToFile(stream, targetFile);
// BufferedReader br = new BufferedReader(new InputStreamReader(resource.getInputStream()));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值