在实际开发中,很多时候需要通过把数据库中的数据添加到pdf模板中,然后供客户下载,那我们该如何中呢?

本文主要内容是:用java在pdf模板中加入数据,图片

直接举例:

第一步,对pdf模板添加文本域

         使用Adobe Acrobat  Pro软件,选择表单,就可以添加文本域很简单。这里也可以设置字体大小,是否换行等

第二步、pom文件导入相关jar包

 <!--  注意:我一开始把这个放到pom.xml文件中,发现报错了,原因是我的本地mevan库中没有5.5.10版的,只有5.1.1和5.1.3于是我在网上下了个,再放到本地库,更新下项目就可以了 --><!-- itext 图片转pdf --><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.10</version></dependency>

第三步,把pdf和照片素材放到项目中                      

      这里我在resources下面新建了pdf文件夹,放到这里面          

第四步、PdfController.java

import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;import com.itextpdf.text.Image;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.AcroFields;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;@Controller
@RequestMapping("/jsp/exportpdf")
public class PdfController {@RequestMappingpublic String pdfexport(HttpServletResponse response) {// 指定解析器System.setProperty("javax.xml.parsers.DocumentBuilderFactory","com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl");String filename = "resume.pdf";response.setContentType("application/pdf");try {//设置文件头:最后一个参数是设置下载文件名(这里我们叫:个人简历.pdf)response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode("个人简历.pdf", "UTF-8"));} catch (UnsupportedEncodingException e1) {e1.printStackTrace();}OutputStream os = null;PdfStamper ps = null;PdfReader reader = null;try {os = response.getOutputStream(); // 生成的新文件路径 ,这里指页面/*** class.getResource("/") --> 返回class文件所在的顶级目录,一般为包名的顶级目录* 在这个目录中src/main/java和src/main/resources和src/test/java都是属于顶级目录* 这里pdf/就属于顶级目录下的子目录了* */// 2 读入pdf表单reader = new PdfReader(PdfController.class.getResource("/pdf/") + "resume.pdf");// 3 根据表单生成一个新的pdfps = new PdfStamper(reader, os);// 4 获取pdf表单中所有字段AcroFields form = ps.getAcroFields();// 5给表单添加中文字体 这里采用系统字体。不设置的话,中文可能无法显示BaseFont bf = BaseFont.createFont("C:/WINDOWS/Fonts/SIMSUN.TTC,1", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);form.addSubstitutionFont(bf);// 6查询数据Map<String, Object> data = new HashMap<String, Object>();data.put("xh", "1021229");data.put("xm", "徐小筱");// 7遍历data 给pdf表单表格赋值for (String key : data.keySet()) {form.setFieldProperty(key, "textfont", bf, null);// 设置字体form.setField(key, data.get(key).toString());}// 如果为false那么生成的PDF文件还能编辑,一定要设为true  ps.setFormFlattening(true);//添加图片: 通过域名获取所在页和坐标,左下角为起点int pageNo = form.getFieldPositions("zp").get(0).page;Rectangle signRect = form.getFieldPositions("zp").get(0).position;float x = signRect.getLeft();float y = signRect.getBottom();// 读图片String imgpath = PdfController.class.getResource("/pdf/") + "zhaopian.jpg";Image image = Image.getInstance(imgpath);// 获取操作的页面PdfContentByte under = ps.getOverContent(pageNo);// 根据域的大小缩放图片image.scaleToFit(signRect.getWidth(), signRect.getHeight());// 添加图片image.setAbsolutePosition(x, y);under.addImage(image);System.out.println("===============PDF导出成功=============");} catch (Exception e) {System.out.println("===============PDF导出失败=============");e.printStackTrace();} finally {try {ps.close();reader.close();os.close();} catch (Exception e) {e.printStackTrace();}}return null;}}

第五步、jsp文件映射到Controller层

         只要点击下载,文件就自动下载了

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<html>
<body>
<form action="exportpdf"><input type="submit" value="下载"></form>
</body>
</html>

最终结果:完美!

springMVC(3)---利用pdf模板下载相关推荐

  1. wps制作pdf模板,Adobe Acrobat DC利用pdf模板做填充数据表单域,在maven项目中利用java生成pdf

    如做pdf建议http://www.xdocin.com/index.html 以下方法仅供参考 首先制作一个pdf模板: 1.先用word做出模板界面 2.文件另存为pdf格式文件 3.通过Adob ...

  2. .net core 使用 iTextSharp 导入 Adobe Acrobat Pro 创建的PDF模板及生成表格,然后导出PDF

    因为是第一次接触这种东西,对于我这个工作经验不到一年的新人程序员来说,头已经快爆炸了,在查询了"巨多"的资料后,终于给弄出来了 = = ,代码应该不是很好看,能跑就行( 创建PDF ...

  3. 利用velocity模板以及itext生成pdf

    利用velocity模板以及itext生成pdf 我整理的源码:http://download.csdn.net/download/u012174571/8748897 首先是velocity的使用: ...

  4. 利用Adobe Acrobat DC制作pdf模板后,使用java直接生成pdf至本地指定路径或导出pdf文件

    参考文章来源: springboot+itextpdf按模板生成PDF文件及在线下载PDF文件 JAVA根据模板生成PDF文件并导出 java将字符串按照指定长度分割成字符串数组 感谢上述博主大大,救 ...

  5. 利用PDF.JS插件解决了本地pdf文件在线浏览问题(根据需要隐藏下载功能,只保留打印功能)

    利用PDF.JS插件解决了本地pdf文件在线浏览问题(根据需要隐藏下载功能,只保留打印功能) 参考文章: (1)利用PDF.JS插件解决了本地pdf文件在线浏览问题(根据需要隐藏下载功能,只保留打印功 ...

  6. java 填写pdf_新知识:Java 利用itext填写pdf模板并导出(昨天奋战到深夜四点,知道今天两点终于弄懂)...

    标签: 废话少说,不懂itext干啥用的直接去百度吧. ***************制作模板******************* 1.先用word做出界面 2.再转换成pdf格式 3.用Adobe ...

  7. java 写数据到pdf模板_java利用itext填写pdf模板并导出

    1.先用word做出界面 2.再转换成pdf格式 3.用Adobe Acrobat 打开你刚刚用word转换成的pdf 会出现如下界面 下一步 点击浏览,选择刚才你转换好的pdf 下一步 4.打开后它 ...

  8. 利用itext复制pdf模板并插入图片

    java源码 String conName =getContName(map);try {Map beans = new HashMap(1);beans.put("name",c ...

  9. java pdf工具类_Java PDF工具类(一)| 使用 itextpdf 根据PDF模板生成PDF(文字和图片)...

    Java PDF工具类(一)| 使用 itextpdf 根据设置好的PDF模板填充PDF(文字和图片) 相关文章: Java PDF工具类(二)| 使用 wkhtmltox 实现 HTML转PDF(文 ...

最新文章

  1. android 快应用原理,快应用初探——写一个快应用练练手。
  2. 人脸识别成创业热门,统计企业超1万家,刷脸支付项目将迎来热潮
  3. WINCE下实现USB转RS232
  4. VMP分析之VMP1.09虚拟化架构分析(二)
  5. creo如何更改打开时显示方式_Creo4.0入门教程(3):设置工作目录和打开以及保存文件...
  6. GO tcp server demo
  7. 复制oracle9i数据库,Oracle 10g 中Duplicate 复制数据库
  8. 【礼仪大赛策划方案手段】 问穿正装的礼节是什么?到底何为正装?休闲正装?
  9. 中国精算师资格考试-考试指南
  10. PHPWAMP自启异常,服务器重启后Apache等服务不会自动重启的原因分析
  11. GO语言中中文占3个字节,英文占1个字节
  12. 微信小程序审核未通过的 “N” 种原因
  13. 惊蛰(insects awaken)
  14. 常用的做外链方法总结
  15. Xmind激活版双击文件无法打开的解决方案
  16. 金纳米颗粒上装载DNA四面体|金核(75-100nm左右)sio2壳层(3-5nm)产品描述/信息/详情
  17. 手把手撸一个小而美的日历组件
  18. GR-MnO2 石墨烯修饰纳米二氧化锰/CD-MnO2碳点修饰二氧化锰复合材料/CMSs@MnO2碳微球包覆二氧化锰
  19. 名编辑电子杂志大师教程 | 添加页码
  20. nginx 做均衡负载

热门文章

  1. 【C++进阶】哈希(万字详解)—— 运用篇(下)
  2. 谷歌推翻乔布斯论断:7英寸平板并非毫无价值
  3. 爬虫框架Scrapy初步使用
  4. CF1285D Dr. Evil Underscores 01Trie+贪心
  5. 销售团队管理和激励怎么做
  6. 知道古埃及人是怎么做乘法的么?
  7. 史上最全App推广渠道,免填邀请码很重要
  8. 从头条挖角知乎谈跳槽选择
  9. AMD Threadripper 3990X 评测
  10. 什么是人心?人心是义利的结合体