java导出pdf
2016-04-19 11:25
489 查看
原理
先把导出的页面,做成ftl页面,用freemarker或其它模板技术替换里面动态数据,生成html页面,在利用itext5生成pdf即可
jar
代码分享
先把导出的页面,做成ftl页面,用freemarker或其它模板技术替换里面动态数据,生成html页面,在利用itext5生成pdf即可
jar
<dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.23</version> </dependency> <dependency> <groupId>org.xhtmlrenderer</groupId> <artifactId>flying-saucer-pdf-itext5</artifactId> <version>9.0.8</version> </dependency>
代码分享
package com.bigluobo.utils; import com.itextpdf.text.DocumentException; import com.itextpdf.text.pdf.BaseFont; import org.xhtmlrenderer.pdf.ITextRenderer; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; /** * Created by simon on 2016/4/19. */ public class PdfUtils { public static final String getPath() { return PdfUtils.class.getResource("/").getPath().substring(1); } public static final void exportPdf(String url, String pdf) throws IOException, DocumentException { ITextRenderer renderer = new ITextRenderer(); String path = getPath(); //添加字体,以支持中文 renderer.getFontResolver().addFont(path + "fonts/arialuni.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); renderer.getFontResolver().addFont(path + "fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); renderer.setDocument(url); OutputStream os = null; try { os = new FileOutputStream(pdf); renderer.layout(); renderer.createPDF(os); os.close(); os = null; } finally { if (os != null) { try { os.close(); } catch (IOException e) { // ignore } } } } public static void main(String[] args) { // System.out.println(PdfUtils.getPath()); try { PdfUtils.exportPdf("http://localhost:8080/template/test.html", "d:/test.pdf"); } catch (IOException e) { e.printStackTrace(); } catch (DocumentException e) { e.printStackTrace(); } } }
坑点:
需要自己去下载字体,如果没有对应的字体...你懂的,下载地址(http://www.ztxz.org/),修改下代码中字体的存放路径即可。
相关文章推荐
- [转]SpringMVC 中文件上传 MultipartResolver--经典
- Eclipse 启动时提示“发现了以元素'd:skin'开头的无效内容,此处不应含有子元素“
- maven+springMVC+mybatis+junit详细搭建过程
- 主题:Maven实战(三)Eclipse构建Maven项目
- Java基本概念(未完)
- java只使用try和finally不使用catch的原因和场景
- Struts 原理
- Java_处理日期的工具类
- 1、eclipse
- java Spring配置数据单元
- JAVA-文件读写模板
- spring+springmvc+ibatis整合注解方式实例
- maven3常用命令、java项目搭建、web项目搭建详细图解
- 【Eclipse】--修改项目访问地址头
- 蘑菇街笔试--剪桌腿的最小代价
- 使用Eclipse构建Maven项目 (step-by-step)
- Win7系统中如何用命令行方式查看JDK版本
- SpringMVC中从一个控制器方法跳转到另一个控制器方法(亲测)
- java的(PO,VO,TO,BO,DAO,POJO)解释
- SpringMVC使用RESTful风格后对静态资源的处理