pdf 下载demo
最近写了个pdf下载的demo,在这里记录一下。。
1 要下载pdf首先要有pdf 模板 ,制作pdf 模板就是 word 另存为 pdf 。
2 用 Adobe Acrobat X Pro 这个软件编辑刚才保存的pdf,先打开 ,然后点击工具,点击编辑 。。。这个工具是收费的,网上有好多破解版的。。 注意用这个工具编辑pdf的时候 生成的 域 有文本域 ,单选框 ,复选框,这里要注意,如果是复选框,复制是没办法赋值文字的。
大概是上面的样子。。
3 编写java代码: 主要思路是 , 通过数据库查出来的数据 ,赋值到pdf表单上。。
赋值需要用到
<!--用于pdf模板-->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.4.3</version>
</dependency>
上面这个jar包,直接把pom粘贴到自己的pom中就可以。
4 具体的java代码:

1 @Override 2 public void downLoad(HttpServletResponse response) throws IOException, DocumentException { 3 System.setProperty("javax.xml.parsers.DocumentBuilderFactory", 4 "com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl"); 5 String fileName = "qqq.pdf"; 6 response.setContentType("application/pdf"); 7 OutputStream op = null; 8 PdfReader pr = null; 9 PdfStamper ps = null; 10 try { 11 response.setHeader("Content-Disposition", "attachment;fileName=" 12 + URLEncoder.encode(fileName, "UTF-8")); 13 14 op = response.getOutputStream(); 15 // 2 读入pdf表单 16 pr = new PdfReader("pdf/" + fileName); 17 // 3 根据表单生成一个新的pdf 18 ps = new PdfStamper(pr, op); 19 // 4 获取pdf表单 20 21 HashMap<String, Object> map = dealMap(); 22 // 6查询数据 23 24 // 7遍历data 给pdf表单表格赋值 25 for (String keySet : map.keySet()){ 26 if (map.get(keySet) != null && !map.get(keySet).equals("")){ 27 AcroFields acroFields = ps.getAcroFields(); 28 // 5给表单添加中文字体 这里采用系统字体。不设置的话,中文可能无法显示 29 BaseFont bf = BaseFont.createFont("C:/WINDOWS/Fonts/SIMSUN.TTC,1", 30 BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 31 acroFields.addSubstitutionFont(bf); 32 acroFields.setField(keySet,map.get(keySet).toString()); 33 } 34 35 } 36 //设置生成的pdf文件高量参数是否可见,true不可见,false可 37 ps.setFormFlattening(true); 38 System.out.println("===============PDF导出成功!============="); 39 40 } catch (Exception e) { 41 e.printStackTrace(); 42 }finally { 43 //这里关流顺序不能先关输出流,要不然会报错 44 ps.close(); 45 pr.close(); 46 op.close(); 47 48 } 49 50 51 }
上面的 dealMap()是我自己查询数据的方法,每个人用自己的就好。。
需要 把上面的模板直接粘贴,自己写查询数据的方法就可以了。
这里 附上 源码
链接:https://pan.baidu.com/s/1OuBCQJpJ23IV3sNQAt6BBw
提取码:nvut
标签:
demo
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)