好久没写文章了,为什么会有这个标题呢
最近上篇文章不是写pdf生成吗,其中要加一个印章的图标,这个图标要跟pdf连体,就是不能单独被保存,基本上有几种保存图标的方法:
1.数据库
2.本地文件
我选择了本地的文件,没有放到应用里面,这样每次部署你都要事先把印章放到硬盘的某一个地方,换个服务器还得来一遍,为什么不直接放到应用呢。
应用因为不安全,怕被直接访问,然后图片就被保存下来了,最近开始看servlet,才知道,应用里面有很多保护去,比如web-inf,meta-inf,一般情况下meta-inf我们很少用这个文件夹,它作用是用来指定库的依赖性的。
开始正题:
我基本思路是读到img的绝对路径(防止应用里面访问不了,不用相对),然后把它设成背景,然后生成pdf,打印。
String sealPath = getServletContext().getRealPath(PropertySetting.getString("bop", "seal.root.path")+userinfo.getBeagency()+PropertySetting.getString("bop", "seal.file.suffix"));
sealPath = "\"file:/"+sealPath.replaceAll("\\\\", "/")+"\"";
1)getServletContext().getRealPath("path"),它生成的类似这样:D:\\Program files\\workspace\\cotton\\WebRoot\\WEB-INF\\seal\\371401.bmp
到页面的时候相当转译了一次。
2)但是在background-image:url(path),不识别,所以有了replaceall()这个方法,连同转译字符一起转成‘\’;
3) 发现前面得家‘file:/’才行,这个是我直接写死别的路径知道的,比如background-image:url(file:\D:seal\371401.bmp);
4)把上面的硬编码换了,发现有挂掉了,唯一的区别就是我生成的Program files里面有空格,网上看了一下他们的直接把路径用双引号(“”)引起来就ok了,测试通过!