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代码:
@Override
public void downLoad(HttpServletResponse response) throws IOException, DocumentException {
System.setProperty("javax.xml.parsers.DocumentBuilderFactory",
"com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl");
String fileName = "qqq.pdf";
response.setContentType("application/pdf");
OutputStream op = null;
PdfReader pr = null;
PdfStamper ps = null;
try {
response.setHeader("Content-Disposition", "attachment;fileName="
+ URLEncoder.encode(fileName, "UTF-8")); op = response.getOutputStream();
// 2 读入pdf表单
pr = new PdfReader("pdf/" + fileName);
// 3 根据表单生成一个新的pdf
ps = new PdfStamper(pr, op);
// 4 获取pdf表单 HashMap<String, Object> map = dealMap();
// 6查询数据 // 7遍历data 给pdf表单表格赋值
for (String keySet : map.keySet()){
if (map.get(keySet) != null && !map.get(keySet).equals("")){
AcroFields acroFields = ps.getAcroFields();
// 5给表单添加中文字体 这里采用系统字体。不设置的话,中文可能无法显示
BaseFont bf = BaseFont.createFont("C:/WINDOWS/Fonts/SIMSUN.TTC,1",
BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
acroFields.addSubstitutionFont(bf);
acroFields.setField(keySet,map.get(keySet).toString());
} }
//设置生成的pdf文件高量参数是否可见,true不可见,false可
ps.setFormFlattening(true);
System.out.println("===============PDF导出成功!============="); } catch (Exception e) {
e.printStackTrace();
}finally {
//这里关流顺序不能先关输出流,要不然会报错
ps.close();
pr.close();
op.close(); } }
上面的 dealMap()是我自己查询数据的方法,每个人用自己的就好。。
需要 把上面的模板直接粘贴,自己写查询数据的方法就可以了。
这里 附上 源码
链接:https://pan.baidu.com/s/1OuBCQJpJ23IV3sNQAt6BBw
提取码:nvut
pdf 下载demo的更多相关文章
- 深度学习Tensorflow相关书籍推荐和PDF下载
深度学习Tensorflow相关书籍推荐和PDF下载 baihualinxin关注 32018.03.28 10:46:16字数 481阅读 22,673 1.机器学习入门经典<统计学习方法&g ...
- Spring Boot 系列教程18-itext导出pdf下载
Java操作pdf框架 iText是一个能够快速产生PDF文件的java类库.iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的.它的类库尤其与java Servlet有很好 ...
- 肖秀荣8套卷2018pdf下载|2018肖秀荣冲刺8套卷pdf下载电子版
肖秀荣8套卷2018pdf下载|2018肖秀荣冲刺8套卷pdf下载电子版 下载链接: https://u253469.ctfile.com/fs/253469-229815828
- [原]Jenkins(一)---我理解的jenkins是这样的(附全套PDF下载)
/** * lihaibo * 文章内容都是根据自己工作情况实践得出. *版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horizonli/p/5330 ...
- 蘑菇街支付架构 PDF 下载
蘑菇街支付架构 PDF 下载 下载地址:链接:https://pan.baidu.com/s/1ZffetaUhVMOzb9j2PSQJIQ 密码:iays http://www.java1234.c ...
- pdf 下载整理
pdf下载整理: using System; using System.Collections.Generic; using System.Linq; using System.Web; using ...
- swift user guide.pdf下载
日志以便日后查找.谢谢 1 Swift User Guide.pdf下载 http://download.csdn.net/detail/swifttrain/7442921 2 The Swift ...
- 码书:编码与解码的战争 PDF 下载
码书:编码与解码的战争 PDF 下载 下载地址:https://pan.baidu.com/s/14Y_krHh-unOv4g2KYFFDgQ 如需分享码:[打开微信]->[扫描右侧二维码]-& ...
- Javascript/CSS/HTML/vue/angularJS/react/jquery/DOM前端编程经典电子书pdf下载
高级进阶必读 你所不知道的系列,高级开发必掌握. JavaScript这门语言简单易用,很容易上手,但其语言机制复杂微妙,即使是经验丰富的JavaScript开发人员,如果没有认真学习的话也无法真正理 ...
随机推荐
- Solr 05 - Solr Web管理界面的基本使用
目录 1 Dashboard - 仪表盘 2 Logging - 日志信息 3 CoreAdmin - Solr核心 4 Java Properties - Java参数 5 Thread Dump ...
- iterm2 快捷键(转载)
Mac 下 iterm2 的快捷键,转自:https://github.com/sumiaowen/iterm2-shortcuts iterm2-shortcuts(iterm 2 快捷键) 标签 ...
- Chapter 5 Blood Type——1
The rest of the morning passed in a blur. 早上剩下的时间都在模糊中度过了. It was difficult to believe that I hadn't ...
- 大战Java虚拟机【1】—— 内存
前言 要了解Java虚拟机首先要知道的基础就是内存.虚拟机存在的意义就是对内存进行管理,因为不用人为的去管理每个对象的内存,所以才让java使用起来那么方便,不用像c.c++那样去free. 运行时数 ...
- 设计模式总结篇系列:抽象工厂模式(Abstract Factory)
在上一篇的工厂方法模式中,通过一个公用的类对其他具有相同特性(实现相同接口或继承同一父类)的类的对象进行创建.随之带来的问题在于:当新定义了一个具有相同特性的类时,需要修改工厂类.这与设计模式中的开闭 ...
- DHTMLX 常用技术
GRID的行设置前景色和背景色 $dataItem->set_row_color("red"); // 设置背景色 $dataItem->set_row_style(& ...
- 开源分布式数据库SequoiaDB在去哪儿网的实践
编者注: 中国的数据库行业也迎来了一波新的热点事件.分布式数据库这块新消息不断,也让大家开始关注中国的分布式数据库.首先是短短一周内,Pingcap和SequoiaDB巨杉数据库陆续宣布了C轮的数千万 ...
- CAN总线学习记录之四:位定时与同步
一.位定时 1.1 比特率和波特率 1)位速率:又叫做比特率(bit rata).信息传输率,表示的是单位时间内,总线上传输的信息量,即每秒能够传输的二进制位的数量,单位是bit per second ...
- c#委托中的同步和异步方法即BeginInvoke和EndInvoke
学习多线程之前我们先了解一下电脑的一些概念,比如进程,线程,这个参考https://www.cnblogs.com/loverwangshan/p/10409755.html 这篇文章.今天我们接着来 ...
- Aspose.Word邮件合并之自定义数据源
Aspose.Word在进行邮件合并时,默认的几个重载方法对Database支持比较友好,但是也可以通过自定义数据源来实现从集合或者对象中返回数据进行邮件合并. 自定义数据源主要是通过实现IMailM ...