java 生成pdf 下载_java生成PDF,并下载到本地
1、首先要寫一個PDF工具類,以及相關工具2、PDF所需jar包iText是一種生成PDF報表的Java組件freemarker是基于模板來生成文本輸出
com.itextpdf
itext-asian
5.2.0
com.lowagie
itext
2.1.7
org.freemarker
freemarker
2.3.23
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 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,并下载到本地的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 几个简单的正则小例子
- 下一篇: 【转】Vector与ArrayList区