这篇文章主要介绍“wkhtmltopdf实现html导出pdf的方法”,在日常操作中,相信很多人在wkhtmltopdf实现html导出pdf的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”wkhtmltopdf实现html导出pdf的方法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
创新互联致力于互联网网站建设与网站营销,提供网站设计制作、网站制作、网站开发、seo优化、网站排名、互联网营销、成都微信小程序、公众号商城、等建站开发,创新互联网站建设策划专家,为不同类型的客户提供良好的互联网应用定制解决方案,帮助客户在新的全球化互联网环境中保持优势。
在风控系统开发过程中,我使用到了wkhtmltopdf来完成后端生成pdf导出的功能。其中,为此功能,我也编写了一个wkhtmltopdf的工具类,可以反复采用。
本类是为了能够开个线程实现wkhtmltopdf这个过程:
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; public class HtmlToPdfInterceptor extends Thread { private InputStream is; public HtmlToPdfInterceptor(InputStream is) { this.is = is; } public void run() { try { InputStreamReader isr = new InputStreamReader(is, "utf-8"); BufferedReader br = new BufferedReader(isr); String line = null; while ((line = br.readLine()) != null) { System.out.println(line.toString()); //输出内容 } } catch (IOException e) { e.printStackTrace(); } } }
当然,首先是要在服务器上安装好了wkhtmltopdf这个软件,并且配置好环境变量和中文字符集。
import java.io.File; public class HtmlToPdf { // wkhtmltopdf在系统中的路径 //windows环境 // private static final String toPdfTool = "C:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf.exe"; //linux环境 // private static final String toPdfTool = "//usr//local//bin//wkhtmltopdf"; public static boolean convert(String toPdfTool, String srcPath, String destPath) { File file = new File(destPath); File parent = file.getParentFile(); // 如果pdf保存路径不存在,则创建路径 if (!parent.exists()) { parent.mkdirs(); } StringBuilder cmd = new StringBuilder(); //引入wkhtmltopdf cmd.append(toPdfTool); cmd.append(" "); //设置页面大小 cmd.append(" --page-size A4"); //左边间距 cmd.append(" --margin-left 4"); // 页眉下面的线 cmd.append(" --header-line"); //页眉中间内容 cmd.append(" --header-center 中之保金融科技(成都)有限公司 "); // (添加一个HTML页眉,后面是网址) cmd.append(" --margin-top 2cm "); // (设置页眉和内容的距离,默认0) cmd.append(" --header-spacing 5 "); //设置在中心位置的页脚内容 cmd.append(" --footer-center 第[page]页/共[topage]页"); //页脚字体大小 cmd.append(" --footer-font-size 7"); // * 显示一条线在页脚内容上) cmd.append(" --footer-line"); // (设置页脚和内容的距离) cmd.append(" --footer-spacing 0 "); cmd.append(srcPath); cmd.append(" "); cmd.append(destPath); boolean result = true; try { Process proc = Runtime.getRuntime().exec(cmd.toString()); HtmlToPdfInterceptor error = new HtmlToPdfInterceptor(proc.getErrorStream()); HtmlToPdfInterceptor output = new HtmlToPdfInterceptor(proc.getInputStream()); error.start(); output.start(); proc.waitFor(); } catch (Exception e) { result = false; e.printStackTrace(); } return result; } }
到此,关于“wkhtmltopdf实现html导出pdf的方法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!