最近让座一个pdf报告,需要用到jsp转pdf,在网上找了好多文章看,但是都是讲的云里雾里,在这我给大家整理一下,希望能帮助到你。

首先我先贴出我的处理类:

package net.zkbc.mp.util;import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;import org.xhtmlrenderer.pdf.ITextFontResolver;
import org.xhtmlrenderer.pdf.ITextRenderer;import com.lowagie.text.pdf.BaseFont;import org.w3c.dom.Document;/*** 对html的规范要求极高,例如:页面中<mate></mate>必须闭合,必须: <br />* * <pre>* <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"* "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html* xmlns="http://www.w3.org/1999/xhtml">* * @author zsj**/
public class PdfUtil {public static void main(String[] args) throws Exception {System.out.println("开始了=====");htmlToPdf2("I:/pdf/11111.pdf","http://localhost:8081/Print/index2.html");System.out.println("结束了=====");//htmlToPdf("/data/fs/sinspector/BJ20150522001.pdf","http://localhost:8080/Print/index2.html");//htmlToPdf("/data/fs/sinspector/BJ20150522001.pdf","http://localhost:8080/Print/index2.html");}public static String getUrlContent(String uri){StringBuffer data=new StringBuffer();try {  //建立连接  URL url = new URL(uri);  HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();  httpUrlConn.setDoInput(true);  httpUrlConn.setRequestMethod("GET");  httpUrlConn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");//获取输入流  InputStream input = httpUrlConn.getInputStream();//将字节输入流转换为字符输入流InputStreamReader read = new InputStreamReader(input, "utf-8");//为字符输入流添加缓冲BufferedReader br = new BufferedReader(read);  // 读取返回结果  String s=null;while((s=br.readLine())!=null)  {System.out.println(s);data.append(s);}  // 释放资源  br.close();  read.close();  input.close();  httpUrlConn.disconnect();  } catch (Exception e) {e.printStackTrace();}return data.toString();}/*** 把URL转换为PDF* * @param outputFile*            , 示例:/data/fs/inspector/BJ20150522001.pdf* @param url*            ,示例:html 页面* @return* @throws Exception*/public static boolean htmlToPdf(String outputFile, String url)throws Exception {File outFile = new File(outputFile);if (!outFile.exists()) {outFile.getParentFile().mkdirs();}OutputStream os = new FileOutputStream(outputFile);//url样例 这是通过ajax传递过来的 我这个项目没有配置ssh 所以就给了一个样例//   url = "<?xml version='1.0' encoding='UTF-8'?><html xmlns='http://www.w3.org/1999/xhtml'><head><title>页面打印</title><style media= 'print' > @page{size:297mm 210mm;}; .page { page-break-after: always; } </style>  <style type='text/css'> .tab td {  border-bottom: 1 solid #000000;  border-left: 1 solid #000000;  border-right: 0 solid #ffffff;  border-top: 0 solid #ffffff;  }  .tab {  border-color: #000000 #000000 #000000 #000000;  border-style: solid;  border-top-width: 2px;  border-right-width: 2px;   border-bottom-width: 1px;  border-left-width: 1px;  }    .hr {  font-family: '宋体';  font-size: 9pt;  }   </style>  </head>   <body bgcolor='white' style='font-family:SimSun; height:100%;' screen_capture_injected='true' ryt11773='1'>   <table cellspacing='0' cellpadding='0' width='100%' align='center' >  <tr>  <td align='center' colspan='3' style='font-size: 24px'>  <b id ='pdf_text'>报告印章申请表</b>  </td>  </tr>   <tr>  <td align='left' >子账户:600117332664</td> <td align='left'  >户名:王树</td> <td align='center'  >起始日期:20170607</td>  </tr>   <tr> <td align='left' colspan='2' >开户行:深圳农商行 </td> <td align='center' >终止日期:20170607 </td> </tr>   <tr>   <td colspan='3'> <table class='tab' cellSpacing='0' cellPadding='0' width='100%' border='1' >  <tr align='center' height='23'>  <td width='10%' height='23' colspan='3'>子账户:000117332670</td> <td width='10%' colspan='4' >币种:000117332670</td> <td width='10%' colspan='4' >产品类型:个人人民币</td>   </tr>   <tr align='center' height='23'>  <td width='5%' height='23'>交易日期</td>  <td width='5%'>摘要</td>  <td width='12%'>借方交易金额</td>  <td width='12%'>贷方交易金额</td>   <td width='12%'>账户余额</td> <td width='12%'>对方户名</td>  <td width='12%'>对方行号</td>  <td width='7%'>凭证类型</td>  <td width='8%'>凭证号码</td>  <td width='10%'>交易机构</td>  <td width='10%'>备注</td> </tr>  <tr style='font-size: 13px' align='center' height='23'>  <td align='center'>20160101</td>  <td align='center' style='font-family:SimHei '>自助汇款</td>  <td  align='right' id ='pdf_text2' > 22.00</td>  <td align='right' >213123123.00</td>   <td align='right'>490000000.00</td>   <td align='center'>足足</td>  <td align='center' >中国工商银行</td>  <td align='center'>存折</td>  <td align='center'></td>  <td align='center'>00003</td> <td align='center'>拿去花</td> </tr>   <tr style='font-size: 13px' align='center' height='23'>  <td align='center'>20160101</td>  <td align='center' style='font-family:SimHei '>自助汇款</td>  <td  align='right' id ='pdf_text2' > 22.00</td>  <td align='right' >213123123.00</td>   <td align='right'>490000000.00</td>   <td align='center'>足足</td>  <td align='center' >中国工商银行</td>  <td align='center'>存折</td>  <td align='center'></td>  <td align='center'>00003</td> <td align='center'>拿去花</td> </tr>   <tr style='font-size: 13px' align='center' height='23'>  <td align='center'>20160101</td>  <td align='center' style='font-family:SimHei '>自助汇款</td>  <td  align='right' id ='pdf_text2' > 22.00</td>  <td align='right' >213123123.00</td>   <td align='right'>490000000.00</td>   <td align='center'>足足</td>  <td align='center' >中国工商银行</td>  <td align='center'>存折</td>  <td align='center'></td>  <td align='center'>00003</td> <td align='center'>拿去花</td> </tr>   <tr style='font-size: 13px' align='center' height='23'>  <td align='center'>20160101</td>  <td align='center' style='font-family:SimHei '>自助汇款</td>  <td  align='right' id ='pdf_text2' > 22.00</td>  <td align='right' >213123123.00</td>   <td align='right'>490000000.00</td>   <td align='center'>足足</td>  <td align='center' >中国工商银行</td>  <td align='center'>存折</td>  <td align='center'></td>  <td align='center'>00003</td> <td align='center'>拿去花</td> </tr>   <tr style='font-size: 13px' align='center' height='23'>  <td align='center'>20160101</td>  <td align='center' style='font-family:SimHei '>自助汇款</td>  <td  align='right' id ='pdf_text2' > 22.00</td>  <td align='right' >213123123.00</td>   <td align='right'>490000000.00</td>   <td align='center'>足足</td>  <td align='center' >中国工商银行</td>  <td align='center'>存折</td>  <td align='center'></td>  <td align='center'>00003</td> <td align='center'>拿去花</td> </tr>   <tr style='font-size: 13px' align='center' height='23'>  <td align='center'>20160101</td>  <td align='center' style='font-family:SimHei '>自助汇款</td>  <td  align='right' id ='pdf_text2' > 22.00</td>  <td align='right' >213123123.00</td>   <td align='right'>490000000.00</td>   <td align='center'>足足</td>  <td align='center' >中国工商银行</td>  <td align='center'>存折</td>  <td align='center'></td>  <td align='center'>00003</td> <td align='center'>拿去花</td> </tr>   <tr style='font-size: 13px' align='center' height='23'>  <td align='center'>20160101</td>  <td align='center' style='font-family:SimHei '>自助汇款</td>  <td  align='right' id ='pdf_text2' > 22.00</td>  <td align='right' >213123123.00</td>   <td align='right'>490000000.00</td>   <td align='center'>足足</td>  <td align='center' >中国工商银行</td>  <td align='center'>存折</td>  <td align='center'></td>  <td align='center'>00003</td> <td align='center'>拿去花</td> </tr>   <tr style='font-size: 13px' align='center' height='23'>  <td align='center'>20160101</td>  <td align='center' style='font-family:SimHei '>自助汇款</td>  <td  align='right' id ='pdf_text2' > 22.00</td>  <td align='right' >213123123.00</td>   <td align='right'>490000000.00</td>   <td align='center'>足足</td>  <td align='center' >中国工商银行</td>  <td align='center'>存折</td>  <td align='center'></td>  <td align='center'>00003</td> <td align='center'>拿去花</td> </tr>   <tr style='font-size: 13px' align='center' height='23'>  <td align='center'>20160101</td>  <td align='center' style='font-family:SimHei '>自助汇款</td>  <td  align='right' id ='pdf_text2' > 22.00</td>  <td align='right' >213123123.00</td>   <td align='right'>490000000.00</td>   <td align='center'>足足</td>  <td align='center' >中国工商银行</td>  <td align='center'>存折</td>  <td align='center'></td>  <td align='center'>00003</td> <td align='center'>拿去花</td> </tr>   <tr style='font-size: 13px' align='center' height='23'>  <td align='center'>20160101</td>  <td align='center' style='font-family:SimHei '>自助汇款</td>  <td  align='right' id ='pdf_text2' > 22.00</td>  <td align='right' >213123123.00</td>   <td align='right'>490000000.00</td>   <td align='center'>足足</td>  <td align='center' >中国工商银行</td>  <td align='center'>存折</td>  <td align='center'></td>  <td align='center'>00003</td> <td align='center'>拿去花</td> </tr>   <tr style='font-size: 13px' align='center' height='23'>  <td align='center'>20160101</td>  <td align='center' style='font-family:SimHei '>自助汇款</td>  <td  align='right' id ='pdf_text2' > 22.00</td>  <td align='right' >213123123.00</td>   <td align='right'>490000000.00</td>   <td align='center'>足足</td>  <td align='center' >中国工商银行</td>  <td align='center'>存折</td>  <td align='center'></td>  <td align='center'>00003</td> <td align='center'>拿去花</td> </tr>      </table>   </td>  </tr>  </table>   </body></html>";DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();String content=getUrlContent(url);System.out.println("content===:"+content);Document doc = builder.parse(new ByteArrayInputStream(url.getBytes("utf-8")));//Document document = new Document(PageSize.A4, 50, 50, 50, 50);ITextRenderer renderer = new ITextRenderer();renderer.setDocument(doc, null);//renderer.setDocument(url);String fontPath = PdfUtil.class.getClassLoader().getResource("").toString().replaceAll("file:/", "")+ "simsun.ttc";System.out.println(fontPath);// 解决中文支持问题ITextFontResolver fontResolver = renderer.getFontResolver();fontResolver.addFont(fontPath, BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);renderer.layout();renderer.createPDF(os);os.flush();os.close();System.out.println("文件转换成功");return true;}    /*** 把URL转换为PDF* * @param outputFile*            , 示例:/data/fs/inspector/BJ20150522001.pdf* @param url*            ,示例:http :xxxx* @return* @throws Exception*/public static boolean htmlToPdf2(String outputFile, String url)throws Exception {File outFile = new File(outputFile);if (!outFile.exists()) {outFile.getParentFile().mkdirs();}OutputStream os = new FileOutputStream(outputFile);ITextRenderer renderer = new ITextRenderer();renderer.setDocument(url);String fontPath = PdfUtil.class.getClassLoader().getResource("").toString().replaceAll("file:/", "")+ "simsun.ttc";System.out.println(fontPath);// 解决中文支持问题ITextFontResolver fontResolver = renderer.getFontResolver();fontResolver.addFont(fontPath, BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);renderer.layout();renderer.createPDF(os);os.flush();os.close();System.out.println("文件转换成功");return true;}}

期次是页面:

<html>
<head>
<title>页面打印</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type='text/css'>
.tab td {border-bottom: 1 solid #000000;border-left: 1 solid #000000;border-right: 0 solid #ffffff;border-top: 0 solid #ffffff;
}.tab {border-color: #000000 #000000 #000000 #000000;border-style: solid;border-top-width: 2px;border-right-width: 2px;border-bottom-width: 1px;border-left-width: 1px;
}.hr {font-family: '宋体';font-size: 9pt;
}
</style>
</head>
<body bgcolor='white' style='font-family:SimSun; height:100%;'screen_capture_injected='true' ryt11773='1'><table cellspacing='0' cellpadding='0' width='100%' align='center'><tr><td align='center' colspan='3' style='font-size: 24px'><bid='pdf_text'>报告印章申请表</b></td></tr><tr><td align='left'>子账户:600117332664</td><td align='left'>户名:王树</td><td align='center'>起始日期:20170607</td></tr><tr><td align='left' colspan='2'>开户行:深圳农商行</td><td align='center'>终止日期:20170607</td></tr><tr><td colspan='3'><table class='tab' cellSpacing='0' cellPadding='0' width='100%'border='1'><tr align='center' height='23'><td width='10%' height='23' colspan='3'>子账户:000117332670</td><td width='10%' colspan='4'>币种:000117332670</td><td width='10%' colspan='4'>产品类型:个人人民币</td></tr><tr align='center' height='23'><td width='5%' height='23'>交易日期</td><td width='5%'>摘要</td><td width='12%'>借方交易金额</td><td width='12%'>贷方交易金额</td><td width='12%'>账户余额</td><td width='12%'>对方户名</td><td width='12%'>对方行号</td><td width='7%'>凭证类型</td><td width='8%'>凭证号码</td><td width='10%'>交易机构</td><td width='10%'>备注</td></tr><tr style='font-size: 13px' align='center' height='23'><td align='center'>20160101</td><td align='center' style='font-family:SimHei '>自助汇款</td><td align='right' id='pdf_text2'>22.00</td><td align='right'>213123123.00</td><td align='right'>490000000.00</td><td align='center'>足足</td><td align='center'>中国工商银行</td><td align='center'>存折</td><td align='center'></td><td align='center'>00003</td><td align='center'>拿去花</td></tr><tr style='font-size: 13px' align='center' height='23'><td align='center'>20160101</td><td align='center' style='font-family:SimHei '>自助汇款</td><td align='right' id='pdf_text2'>22.00</td><td align='right'>213123123.00</td><td align='right'>490000000.00</td><td align='center'>足足</td><td align='center'>中国工商银行</td><td align='center'>存折</td><td align='center'></td><td align='center'>00003</td><td align='center'>拿去花</td></tr><tr style='font-size: 13px' align='center' height='23'><td align='center'>20160101</td><td align='center' style='font-family:SimHei '>自助汇款</td><td align='right' id='pdf_text2'>22.00</td><td align='right'>213123123.00</td><td align='right'>490000000.00</td><td align='center'>足足</td><td align='center'>中国工商银行</td><td align='center'>存折</td><td align='center'></td><td align='center'>00003</td><td align='center'>拿去花</td></tr><tr style='font-size: 13px' align='center' height='23'><td align='center'>20160101</td><td align='center' style='font-family:SimHei '>自助汇款</td><td align='right' id='pdf_text2'>22.00</td><td align='right'>213123123.00</td><td align='right'>490000000.00</td><td align='center'>足足</td><td align='center'>中国工商银行</td><td align='center'>存折</td><td align='center'></td><td align='center'>00003</td><td align='center'>拿去花</td></tr><tr style='font-size: 13px' align='center' height='23'><td align='center'>20160101</td><td align='center' style='font-family:SimHei '>自助汇款</td><td align='right' id='pdf_text2'>22.00</td><td align='right'>213123123.00</td><td align='right'>490000000.00</td><td align='center'>足足</td><td align='center'>中国工商银行</td><td align='center'>存折</td><td align='center'></td><td align='center'>00003</td><td align='center'>拿去花</td></tr><tr style='font-size: 13px' align='center' height='23'><td align='center'>20160101</td><td align='center' style='font-family:SimHei '>自助汇款</td><td align='right' id='pdf_text2'>22.00</td><td align='right'>213123123.00</td><td align='right'>490000000.00</td><td align='center'>足足</td><td align='center'>中国工商银行</td><td align='center'>存折</td><td align='center'></td><td align='center'>00003</td><td align='center'>拿去花</td></tr><tr style='font-size: 13px' align='center' height='23'><td align='center'>20160101</td><td align='center' style='font-family:SimHei '>自助汇款</td><td align='right' id='pdf_text2'>22.00</td><td align='right'>213123123.00</td><td align='right'>490000000.00</td><td align='center'>足足</td><td align='center'>中国工商银行</td><td align='center'>存折</td><td align='center'></td><td align='center'>00003</td><td align='center'>拿去花</td></tr><tr style='font-size: 13px' align='center' height='23'><td align='center'>20160101</td><td align='center' style='font-family:SimHei '>自助汇款</td><td align='right' id='pdf_text2'>22.00</td><td align='right'>213123123.00</td><td align='right'>490000000.00</td><td align='center'>足足</td><td align='center'>中国工商银行</td><td align='center'>存折</td><td align='center'></td><td align='center'>00003</td><td align='center'>拿去花</td></tr><tr style='font-size: 13px' align='center' height='23'><td align='center'>20160101</td><td align='center' style='font-family:SimHei '>自助汇款</td><td align='right' id='pdf_text2'>22.00</td><td align='right'>213123123.00</td><td align='right'>490000000.00</td><td align='center'>足足</td><td align='center'>中国工商银行</td><td align='center'>存折</td><td align='center'></td><td align='center'>00003</td><td align='center'>拿去花</td></tr><tr style='font-size: 13px' align='center' height='23'><td align='center'>20160101</td><td align='center' style='font-family:SimHei '>自助汇款</td><td align='right' id='pdf_text2'>22.00</td><td align='right'>213123123.00</td><td align='right'>490000000.00</td><td align='center'>足足</td><td align='center'>中国工商银行</td><td align='center'>存折</td><td align='center'></td><td align='center'>00003</td><td align='center'>拿去花</td></tr><tr style='font-size: 13px' align='center' height='23'><td align='center'>20160101</td><td align='center' style='font-family:SimHei '>自助汇款</td><td align='right' id='pdf_text2'>22.00</td><td align='right'>213123123.00</td><td align='right'>490000000.00</td><td align='center'>足足</td><td align='center'>中国工商银行</td><td align='center'>存折</td><td align='center'></td><td align='center'>00003</td><td align='center'>拿去花</td></tr></table></td></tr></table>
</body>
</html>

运行效果:

pdf类容截图:

好了效果和代码贴出来了,现在来说一下注意事项:

1.首先这里面需要jar包和一个中文处理的字符包,这些都在项目中可以找到,我会将项目上传到我的资源中

资源地址:https://download.csdn.net/download/huxiangen/10467823

2.注意页面中的body标签中的属性,很重要,很重要,很重要。重要的事情说三遍!!!!

好了大概就这么多,有需要探讨的可以给我评论,我看见了会及时给你们回复。

动态jsp页面转pdf项目示例相关推荐

  1. Puppeteer将动态html页面生成pdf(终极解决方案)

    开通掘金好几年一直没有写文章,近一年经常有朋友问我将动态的h5/vue/react/原生js 页面转成pdf,我觉得有必要写个文章,给大家提供一套经过多个项目验证的完整解决方案的思路:觉得有用可以点赞 ...

  2. mysql 页面跳转_Springboot+MyBatis+mysql+jsp页面跳转详细示例

    SpringBoot与MyBatis搭建环境,底层数据库为mysql,页面使用JSP(官网上不推荐使用jsp),完成从数据库中查询出数据,在jsp页面中显示,并且实现页面的跳转功能. 项目下载链接: ...

  3. 将jsp页面转pdf

    网上好多思路啊,大部分都是将html转pdf,这种方法我试了很多,都不能很好地支持jsp,稍微复杂一点根本不起作用,也不知他们的博客都怎么写的,还真是应了那句话天下博客一大抄,自己都不验证的 下面说下 ...

  4. 怎么在jsp页面获取当前项目的名字?

    用Myeclipse开发Web项目,发现Jsp页面的Servlet链接,会因为地址前面没有web项目的名字而404. 解决办法: 使用jsp内置对象pageContext即可 链接前加上${pageC ...

  5. java jsp导出pdf文件_JSP页面导出PDF格式文件

    JSP页面导出PDF格式文件基本在前端页面可以全部完成 添加下载链接的点击事件 var downPdf = document.getElementById("downLoad"); ...

  6. jsp 页面刷新_如何应用XML+XSLT+AJAX组合技术实现无刷新数据查询

    软件项目实训及课程设计指导--如何应用XML +XSLT +AJAX组合技术实现无刷新的数据查询的应用实例 1.在Web应用系统项目中添加一个实现查询的请求页面searchBook.jsp (1)创建 ...

  7. jsp 展示服务器pdf文件,pdf在线预览_jsp实现pdf在线预览功能

    摘要 腾兴网为您分享:jsp实现pdf在线预览功能,钻石星球,桌面时钟,学堂在线,新东方等软件知识,以及新游手柄游戏厅,qq6.2,硬盘坏道,录音盒,番茄花园rom,x架子,内蒙古科协,陕西交管121 ...

  8. jsp中获取当前项目名称

    在JSP页面获取当前项目名称的方法: 方法1: <%= this.getServletContext().getContextPath() %> 方法2: 使用EL表达式 ${pageCo ...

  9. 将jsp页面转化为图片或pdf(一)(qq:2798641729)

    在项目中遇见了将jsp页面转化为pdf的问题,试过itext,但是itext需要标准的html代码,我的页面中的一些属性是itext所不识别的,所以努力了一段时间后就放弃了,后来发现htmlutil抓 ...

最新文章

  1. 全球十大AI领军人物
  2. python解决实际问题的代码_Python代码规范问题及解决
  3. LPSTR、LPWSTR、LPCSTR、LPCWSTR、LPTSTR、LPCTSTR的区分与转化
  4. 互联网最强的下载工具:IDM
  5. 大漠插件最新版7.2123
  6. AD9833产生DDS调试总结
  7. 《昆虫记》思维导图|思维导图模板创意漂亮
  8. autojs识别二维码
  9. 模拟登录上海交大Jaccount
  10. 经常戴耳机对耳朵有危害?耳机这样用对耳朵伤害最小!
  11. 超详细 LaTex数学公式
  12. 【kali】kali2020.2安装 超级详细教程
  13. Veritas NetBackup8.1.1安装
  14. 《Linux那些事儿之我是USB》我是U盘(7)狂欢是一群人的孤单--总结
  15. 计算机组成原理_实验三:主存储器原理实验
  16. 免费开源Scada软件 RapidScada学习记录
  17. IDEA中,写代码在中间插入字符时会把后面的字符覆盖掉
  18. qss font-family常用的黑体宋体等字体中英文对照
  19. 回顾丨李开复哥大毕业演讲:工程师的AI银河系漫游指南
  20. 如何将Excel表格数据转换成柱状图

热门文章

  1. 湖南四大姓氏世家,李姓排第一,看看你是不是名门望族之后?
  2. Mac OS下搭建Hadoop3.2.1
  3. Python大数据培训课程培训费用是多少
  4. 计算机处理器i3性能,笔记本电脑的CPU i3/i5/i7处理器哪个好?
  5. 基于java web的网上书店系统
  6. 2022年最新cnpm的安装与使用
  7. bezier曲面制作,SU技巧 | Bezier Surface(贝兹曲面)
  8. ftp关键技术二:nobody进程创建和使用(一)
  9. Godaddy域名A记录解析详细教程
  10. 基于OFBiz的E-TICKET(在线咨询管理)模块