iText将html转化为pdf

1 将如下jar包导入工程:
core-renderer.jar
core-renderer-minimal.jar
iText-2.0.8.jar
iTextAsian.jar
xml-apis-xerces-2.9.1.jar

2 Code:
[/code]
//将html转化后并进行下载
public String reportPdf(MessageResources resources,
Locale locale, HttpSession session, HttpServletRequest request,
HttpServletResponse response) throws Exception {
response.reset();
response.setContentType("application/pdf");
response.setHeader("Content-Disposition","attachment;filename="+java.net.URLEncoder.encode("itextConvertHtml","UTF-8")+".pdf");
OutputStream os = response.getOutputStream();
ITextRenderer renderer = new ITextRenderer();
ITextFontResolver fontResolver = renderer.getFontResolver();
//用于window
fontResolver.addFont("C:/Windows/fonts/simsun.ttc",BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); //设置中文字体
//Linux系统需引用simsun.ttc(此文件在系统中创建),window系统直接引用c:/windows/font/simsun.ttc
//fontResolver.addFont(this.getServlet().getServletContext().getRealPath("/")+"/images/simsun.ttc",BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
StringBuffer html = new StringBuffer();
// DOCTYPE 必需写否则类似于 这样的字符解析会出现错误
html.append("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">");
html.append("<html xmlns=\"http://www.w3.org/1999/xhtml\">");
html.append("<head>");
html.append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />");
html.append("<style type=\"text/css\" mce_bogus=\"1\">body {font-family: SimSun;}</style>");
html.append("</head>").append("<body>");
html.append("<img src='itextConvertHtml1.jpg'/><img src='itextConvertHtml2.jpg'/>");
html.append("</body></html>");
try{
renderer.setDocumentFromString(html.toString());
// 解决图片的相对路径问题(在系统的images/upload去寻找itextConvertHtml1.jpg和itextConvertHtml1.jpg)
renderer.getSharedContext().setBaseURL("file:/"+this.getServlet().getServletContext().getRealPath("/")+"images/upload/");
renderer.layout();
renderer.createPDF(os);
os.flush();
os.close();
}catch(Exception ex){}
return null;
}


//将html转化后生成到本地磁盘
public String outPutPdf(MessageResources resources,
Locale locale, HttpSession session, HttpServletRequest request,
HttpServletResponse response) throws Exception {
String outputFile = "E:/itextConvertHtml.pdf";
OutputStream os = new FileOutputStream(outputFile);
ITextRenderer renderer = new ITextRenderer();
ITextFontResolver fontResolver = renderer.getFontResolver();
fontResolver.addFont("C:/Windows/fonts/simsun.ttc",
BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); //设置中文字体
StringBuffer html = new StringBuffer();
// DOCTYPE 必需写否则类似于 这样的字符解析会出现错误
html.append("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">");
html.append("<html xmlns=\"http://www.w3.org/1999/xhtml\">");
html.append("<head>");
html.append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />");
html.append("<style type=\"text/css\" mce_bogus=\"1\">body {font-family: SimSun;}</style>");
html.append("</head>").append("<body>");
html.append("<img src='itextConvertHtml1.jpg'/><img src='itextConvertHtml2.jpg'/>");
html.append("</body></html>");
try{
renderer.setDocumentFromString(html.toString());
// 解决图片的相对路径问题(在系统的images/upload去寻找itextConvertHtml1.jpg和itextConvertHtml1.jpg)
renderer.getSharedContext().setBaseURL("file:/"+this.getServlet().getServletContext().getRealPath("/")+"images/upload/");
renderer.layout();
renderer.createPDF(os);
os.flush();
os.close();
}catch(Exception ex){}
return null;
}

3 在使用itext将html转化为pdf时,html的标签必须是开始-结束,另外itext中有部分不支持html的标签。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值