java生成PDF,并下载到本地
1、首先要写一个PDF工具类,以及相关工具
2、PDF所需jar包
iText是一种生成PDF报表的Java组件
freemarker是基于模板来生成文本输出
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.1.7</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.23</version>
</dependency>
3、需要使用Adobe Acrobat pro软件把要生成的模板转换为PDF格式
打开Adobe Acrobat pro,打开模板,选择 |—— 准备表单 ,它会自动检测并命名表单域,然后保存为pdf格式即可
PDF工具类
public class PDFTemplet {
private String templatePdfPath;
private String targetPdfpath;
private ServiceOrder order ;
public PDFTemplet() {
}
public void PDFTemplet(File file,String basePath)thows Exception{
/*模板路径*/
PdfReader reader = new PdfReader(templatePdfPath);
ByteArrayOutputStream bos=new ByteArrayOutputStream();
/* 读取*/
PdfStamper pdfStamper= new PdfStamper(reader,bos);
/*使用中文字体*/
BaseFont baseFont=BaseFont.createFont(basePath+"WEB-INF/static/SIMHEI.TTF",BaseFont.IDENTITY_H,BaseFont.EMBEDDED);
ArrayList<BaseFont> fontList=new ArrayList<>();
fontList.add(baseFont);
AcroFields s=pdfStamper.getAcroFields();
s.setSubstitutionFonts(fontList);
/*需要注意的是 setField的name和命名的表单域名字要一致*/
s.setField("enterpriseName",order.getEnerpriseName());
s.setField("incubatorName",order.getIncubatorName());
s.setField("recommend","");//孵化器推荐
s.setField("contacts",order.getContacts());
s.setField("phone",order.getPhone());
s.setField("email",order.getEmail());
s.setField("category ","");//服务类别
s.setField("demand",order.getDemand());
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ");
String createTime = formatter.format(order.getCreateTime());
String updateTime = formatter.format(order.getUpdateTime());
s.setField("createTime",createTime);
s.setField("updateTime", updateTime);
ps.setFormFlattenning(true);
ps.close();
FileOutputStream fileSteam =new FileOutPutStream(file);
fos.write(bos.toByteArray);
fos.close();}
}
调用方法
@RequestMapping(value ="downloadPdf", method = RequestMethod.GET)
public String downloadPDF(@PathVariable("id") Integer id,HttpServletRequest request) throws Exception {
ServiceOrder serviceOrder = serviceOrderService.getById(id);
PDFTemplet pdfTT = new PDFTemplet();
pdfTT.setOrder(serviceOrder);
String basePath = request.getSession().getServletContext().getRealPath("/");
String template = request.getSession().getServletContext().getRealPath("/") + "WEB-INF/static/excel/confirmation.pdf";
pdfTT.setTemplatePdfPath(template);
pdfTT.setTargetPdfpath("D:/企业服务确认单.pdf");
pdfTT.setOrder(serviceOrder);
File file = new File("D:/企业服务确认单.pdf");
file.createNewFile();
pdfTT.templetTicket(file,basePath);
return "/master/serviceOrder/orderList";
}
java生成PDF,并下载到本地的更多相关文章
- java生成pdf
介绍 本篇博客主要是为了介绍如何使用:flying-saucer+itext+freemark实现导出复杂点的pdf文件. 思路 先把pdf的内容以html形式准备好 使用freemarker将htm ...
- Java 生成pdf表格文档
最近在工作做一个泰国的项目,应供应商要求,需要将每天的交易生成pdf格式的报表上传到供应商的服务器,特此记录实现方法.废话不多说,直接上代码: THSarabunNew.ttf该文件是泰国字体自行网上 ...
- Java 使用itext生成pdf以及下载
使用方法: 1.需要两个jar包: iText-5.0.6.jar //必须使用该版本,否则缺少相关的方法 TextAsian.jar //是为了文档中正常显示中文所必须引用的包 TextAsi ...
- 电子凭证 : Java 生成 Pdf
来源:蛙牛, my.oschina.net/lujianing/blog/894365 如有好文章投稿,请点击 → 这里了解详情 1.背景 在某些业务场景中,需要提供相关的电子凭证,比如网银/支付宝中 ...
- JAVA 生成PDF报表()
许多应用程序都要求动态生成 PDF 文档.这些应用程序涵盖从生成客户对帐单并通过电子邮件交付的银行到购买特定的图书章节并以 PDF 格式接收这些图书章节的读者.这个列表不胜枚举.在本文中,我们将使用 ...
- Java生成PDF报表
一.前言 前几天,做ASN条码收货模块,需要实现打印下载收货报表,经一番查找,选定iText--用于生成PDF文档的一个Java类库.废话不多说,进入正题. 二.iText简介 iText是著名的开放 ...
- java生成PDF文件(itext)
itextpdf-5.4.3.jar下载地址: http://www.kuaipan.cn/file/id_58980483773788178.htm 导入itextpdf-5.4.3.jar ToP ...
- Java生成PDF文件(转)
原文地址:https://www.cnblogs.com/shuilangyizu/p/5760928.html 一.前言 前几天,做ASN条码收货模块,需要实现打印下载收货报表,经一番查找,选定iT ...
- [itext]Java生成PDF文件
一.前言 最近在做也导出试卷的功能,刚开始是导出为doc,可是导出来格式都有变化,最后说直接将word转为pdf,可是各种不稳定,各种报错.最后想到直接将文件写入pdf(参考:http://www.c ...
随机推荐
- JSTL1.2学习总结
1.0 JSTL的下载 JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的.JSTL只 ...
- Django 模型中DateField字段
DateField¶ class DateField([auto_now=False, auto_now_add=False, **options])¶ 这是一个使用Python的datetime.d ...
- 9.spring:事务管理(下):声明式事务管理
声明式事务管理 sprin的声明式事务是管理AOP技术实现的事务管理,其本质是是对方法前后进行拦截,然后 在目标方法开始之前创建或者加入一个事务,在执行完成目标方法之后根据执行情况提交或者回滚事务. ...
- 使用QT开发GoogleMap瓦片显示和下载工具
之前做项目的时候经常遇到需要大量地图背景数据,然后没有数据被逼着去Google上下载瓦片数据在拼接成整张影像的工作,其实遥感影像晚上有很多可以下载到的,但是大部分是作为研究用的,作为GIS的背景图或者 ...
- MVC 实现下拉框
MVC动态实现下拉框的方式有很多种,但是方便快捷的却是很少,现在记录一种常用的下拉框实现方式: 1.先看看视图代码是怎么写的 <div class="form-group col-xs ...
- pat——1017. Queueing at Bank (java中Map用法)
由PAT1017例题展开: Suppose a bank has K windows open for service. There is a yellow line in front of the ...
- mime中间件
mime中间件Demo,里面用到的有 1.path模块 //引入模块 var path=require('path'); 2.extname方法 //获取文件的扩展名 var extname=path ...
- FreeRTOS 查询任务 剩余的栈空间的 方法
FreeRTOS 源码下载地址 1.官方文档提供了 函数 用来查询 任务 剩余 栈 空间,首先是看官方的文档解释(某位大神 翻译 的 官方文档.) 参数解释: xTask:被查询任 ...
- C# abstract,virtual 修饰符
abstract(抽象):该abstract修饰符指示要修改的东西有缺失或不完整的实现.abstract修饰符可以与类,方法,属性,索引器和事件一起使用.abstract在类声明中使用修饰符来指示类仅 ...
- java ssm 后台框架平台 项目源码 websocket IM quartz springmvc
A代码编辑器,在线模版编辑,仿开发工具编辑器,pdf在线预览,文件转换编码B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,快速开发利器)+快速表单构建器freemaker模版技术 ,0个 ...