package com.crc.commonreport.util;

import java.awt.Insets;
import java.io.ByteArrayOutputStream;
import java.io.StringReader; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.zefer.pd4ml.PD4Constants;
import org.zefer.pd4ml.PD4ML; import com.crc.accidentreport.util.WordUtil; public class HtmlToPdf {
private static final Log log = LogFactory.getLog(WordUtil.class); public static byte[] generatePDF(StringReader strReader) {
try {
ByteArrayOutputStream os = new ByteArrayOutputStream();
PD4ML pd4ml = new PD4ML();
pd4ml.setPageInsets(new Insets(5, 5, 5, 5));
pd4ml.setHtmlWidth(900);
pd4ml.setPageSize(PD4Constants.A4); // A4竖向显示
// pd4ml.changePageOrientation(PD4Constants.A4)横向显示
pd4ml.useTTF("java:fonts", true);
pd4ml.setDefaultTTFs("SimHei", "YouYuan", "SimSun"); // fonts.jar的配置文件中的值,用于中文乱码
pd4ml.enableDebugInfo();
pd4ml.render(strReader, os); // 如果用上面的fos,就是写出到指定的文件
return os.toByteArray();
} catch (Exception e) {
e.printStackTrace();
log.error("HtmlToPdf(方法:generatePDF,异常错误信息代码:" + e.getClass().getName() + "###"+ e.getMessage());
} return null; } public static void main(String[] args) throws Exception {
StringBuffer sb = new StringBuffer();
sb.append("<!DOCTYPE html>");
sb.append("<html lang=\"en\">");
sb.append("<head>");
sb.append("<meta charset=\"UTF-8\" />");
sb.append("<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9;IE=8;Chrome=1;IE=EDGE\" />");
sb.append("<title>法律报告导出模板</title>");
sb.append("<meta content=\"width=device-width, initial-scale=1\" name=\"viewport\" />");
sb.append("<style>.level-title { font-family: 华文仿宋; font-weight: bold; font-size: 22px; padding-top: 30px}.level-second-title { font-family: 华文仿宋; font-weight: bold; font-size: 20px; padding-left: 30px; padding-top: 25px}.level-second-title span { padding-right: 10px}.law-level-cont { font-family: 华文仿宋; font-size: 20px; text-indent: 30px; line-height: 24px; padding-top: 10px; word-wrap: break-word}</style>");
sb.append("</head>");
sb.append("<body class=\"table-body\" style=\"background:#fff;\">");
sb.append("<div class=\"start-issue\">");
sb.append("<div class=\"relieve-print-title\" style=\"text-align:center\">");
sb.append("<h2>华润集团2017年11月报告</h2>");
sb.append("</div> ");
sb.append("<div class=\"legal-opinion-box\"> ");
sb.append("<div class=\"panel panel-default floor\">");
sb.append("<div class=\"start-issue-mes form-horizontal clearfix\"> ");
sb.append("<div class=\"level-title\">");
sb.append("一、投资并购");
sb.append("</div>");
sb.append("<div class=\"level-second-title\">");
sb.append("<span>1.</span>当月首次参与的投资并购项目的数目:");
sb.append("</div>");
sb.append("<div class=\"law-level-cont\">");
sb.append("<p><br /></p>");
sb.append("<table border=\"1\" style=\"text-align:center; width:90%\">");
sb.append("<tbody>");
sb.append("<tr>");
sb.append("<td>5</td>");
sb.append("<td>5</td>");
sb.append("<td>5</td>");
sb.append("<td>5</td>");
sb.append("<td>5</td>");
sb.append("</tr>");
sb.append("<tr>");
sb.append(" <td>7</td>");
sb.append(" <td>7</td>");
sb.append("<td>7</td>");
sb.append("<td>7</td>");
sb.append("<td>7</td>");
sb.append("</tr>");
sb.append("<tr>");
sb.append("<td><br /></td>");
sb.append("<td><br /></td>");
sb.append("<td><br /></td>");
sb.append("<td><br /></td>");
sb.append("<td><br /></td>");
sb.append("</tr>");
sb.append("<tr>");
sb.append("<td><br /></td>");
sb.append("<td><br /></td>");
sb.append("<td><br /></td>");
sb.append("<td><br /></td>");
sb.append("<td><br /></td>");
sb.append("</tr>");
sb.append("</tbody>");
sb.append("</table>");
sb.append("<p><br /></p>");
sb.append("</div>");
sb.append("<div class=\"level-title\">");
sb.append("二、合同管理");
sb.append("</div>");
sb.append("<div class=\"level-second-title\">");
sb.append("<span>1.</span>合同管理制度性文件的制定、修订情况:");
sb.append("</div>");
sb.append("<div class=\"law-level-cont\"></div>");
sb.append("<div class=\"level-title\">");
sb.append("三、一级报告项");
sb.append("</div>");
sb.append("<div class=\"level-second-title\">");
sb.append("<span>1.</span>二级报告项01:");
sb.append("</div>");
sb.append("<div class=\"law-level-cont\"></div>");
sb.append("<div class=\"level-second-title\">");
sb.append("<span>2.</span>二级报告项02:");
sb.append("</div>");
sb.append("<div class=\"law-level-cont\"></div> ");
sb.append("</div> ");
sb.append("</div> ");
sb.append("</div> ");
sb.append("</div>");
sb.append("</body>");
sb.append("</html>");
StringReader strReader = new StringReader(sb.toString());
FileOperationUtil.writeFileFromByte(generatePDF(strReader), "D:\\test.pdf");
System.out.println(2);
}
}

需导入包:pd4ml_demo.jar ss_css2.jar fonts.jar

下载:http://download.csdn.net/download/wy240036141/10016357

html模板导出pdf文件的更多相关文章

  1. 结合模板导出PDF文件

    @Action("report_exportJasperPdf")    public String exportJasperPdf() throws Exception{     ...

  2. BarTender 2016如何导出模板为pdf文件?

    最近有小伙伴来问,BarTender 2016能不能导出模板为pdf文件?这个是可以的,之前针对BarTender 10.1就介绍过一种方法了.本文,小编再针对BarTender 2016给大家讲下如 ...

  3. 史上最全的springboot导出pdf文件

    最近项目有一个导出报表文件的需求,我脑中闪过第一念头就是导出pdf(产品经理没有硬性规定导出excel还是pdf文件),于是赶紧上网查看相关的资料,直到踩了无数的坑把功能做出来了才知道其实导出exce ...

  4. java根据模板导出PDF详细教程

    原文:https://blog.csdn.net/pengyufight/article/details/75305128 题记:由于业务的需要,需要根据模板定制pdf文档,经测试根据模板导出word ...

  5. java根据模板导出PDF(利用itext)

    一.制作模板     1.下载Adobe Acrobat 9 Pro软件(pdf编辑器),制作模板必须使用该工具. 2.下载itextpdf-5.5.5.jar.itext-asian-5.2.0.j ...

  6. .Net导出pdf文件,C#实现pdf导出

    最近碰见个需求需要实现导出pdf文件,上网查了下代码资料总结了以下代码.可以成功的实现导出pdf文件. 在编码前需要在网上下载个itextsharp.dll,此程序集是必备的.楼主下载的是5.0版本, ...

  7. 利用ITextSharp导出PDF文件

    最近项目中需要到处PDF文件,最后上网搜索了一下,发现ITextSharp比较好用,所以做了一个例子: public string ExportPDF() { //ITextSharp Usage / ...

  8. 纯前端导出pdf文件

    纯前端js导出pdf,已经用于生产环境. 工具: 1.html2canvas,一种让html转换为图片的工具. 2.pdfmake或者jspdf ,一种生成.编辑pdf,并且导出pdf的工具. pdf ...

  9. .Net导出pdf文件,C#实现pdf导出 转载 http://www.cnblogs.com/hmYao/p/5842958.html

    导出pdf文件. 在编码前需要在网上下载个itextsharp.dll,此程序集是必备的.楼主下载的是5.0版本,之前下了个5.4的似乎不好用. 下载之后直接添加引用. <%@ Page Lan ...

随机推荐

  1. CCF2017-9-1

    题目: 分析:将所有可能列出来,80可以分为8个10块(这时候最多也是8个),在这种情况下,可以分为2个30块, 3个循环嵌套,判断是不是输入的总钱数,因为不是所有的都是加起来是80,就是分为买多少个 ...

  2. Nginx+Memcache+一致性hash算法 实现页面分布式缓存(转)

    网站响应速度优化包括集群架构中很多方面的瓶颈因素,这里所说的将页面静态化.实现分布式高速缓存就是其中的一个很好的解决方案... 1)先来看看Nginx负载均衡 Nginx负载均衡依赖自带的 ngx_h ...

  3. Kafka运维填坑(转)

    前提: 只针对Kafka 0.9.0.1版本; 说是运维,其实偏重于问题解决; 大部分解决方案都是google而来, 我只是作了次搬运工; 有些问题的解决方案未必一定是通用的, 若应用到线上请慎重; ...

  4. Office免费激活方法!亲测有效!2019年4月3日测试

    内容转载自:https://blog.csdn.net/qq_41785863/article/details/83619401 防止原博主删除,我先放上自己下载好了的工具分享链接. 链接:https ...

  5. Nginx之 try_files 指令

    location / { try_files $uri $uri/ /index.php; } 当用户请求 http://localhost/example 时,这里的 $uri 就是 /exampl ...

  6. (ZT)算法杂货铺——分类算法之决策树(Decision tree)

    https://www.cnblogs.com/leoo2sk/archive/2010/09/19/decision-tree.html 3.1.摘要 在前面两篇文章中,分别介绍和讨论了朴素贝叶斯分 ...

  7. leetcode125. Valid Palindrome

    Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignori ...

  8. java二分法搜索

    二分法就是要将数据每次都分成两份然后再去找到你想要的数据 在二分法查找时要求传入的数据必须已经有序,假设现在为升序,然后每次将所寻找的值与中间值(数组左边界+(右边界-左边界)/2)作比较,大了则去寻 ...

  9. 爬虫之pyspider

    1.简单的介绍 pyspider是由国人binux编写的强大的网络爬虫系统,其GitHub地址为 https://github.com/binux/pyspider 官方文档地址为 http://do ...

  10. tesseract的编译安装

    需要安装: <span style="font-family:'Microsoft YaHei';font-size:14px;">apt-get install au ...