1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 使用wkhtmltopdf 完成html文件转pdf

使用wkhtmltopdf 完成html文件转pdf

时间:2018-10-30 15:45:42

相关推荐

使用wkhtmltopdf 完成html文件转pdf

使用wkhtmltopdf 完成html文件转pdf

步骤1:下载wkhtmltopdf驱动并安装

安装步骤https://pnpdjie.github.io/docs/guides/releasetool/wkhtmltopdf-install.html

步骤2:调用工具类

拼接命令调用驱动

public class HtmlToPdf {//wkhtmltopdf在系统中的路径private static final String toPdfTool = "C:\\ruanjian\\wkhtmltopdf\\bin\\wkhtmltopdf.exe";/*** html转pdf* @param srcPath html路径,可以是硬盘上的路径,也可以是网络路径* @param destPath pdf保存路径* @return 转换成功返回true*/public static boolean convert(String srcPath, String destPath){File file = new File(destPath);File parent = file.getParentFile();//如果pdf保存路径不存在,则创建路径if(!parent.exists()){parent.mkdirs();}StringBuilder cmd = new StringBuilder();cmd.append(toPdfTool);cmd.append(" ");cmd.append(" --header-line");//页眉下面的线cmd.append(" --header-center 这里是页眉这里是页眉这里是页眉这里是页眉 ");//页眉中间内容//cmd.append(" --margin-top 30mm ");//设置页面上边距 (default 10mm) cmd.append(" --header-spacing 10 ");// (设置页眉和内容的距离,默认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;}}

提供实例

**html模板:**HTML2.html

<html><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=ProgId content=Word.Document><meta name=Generator content="Microsoft Word 12 (filtered)"><meta name=Originator content="Microsoft Word 12 (filtered)"></head><body lang=ZH-CN style='text-justify-trim:punctuation'><style>*{margin:0;padding:0;}.MsoNormalTable{margin:0 1%;width:98%;}.MsoNormalTable-toolbar{position: fixed;right:10px;z-index: 2;}.MsoNormalTable-toolbar input{min-width: 24px;line-height: 20px;cursor: pointer;color: #444;background: #fafafa;background-repeat: repeat-x;border: 1px solid #bbb;background: -webkit-linear-gradient(top,#ffffff 0,#eeeeee 100%);background: -moz-linear-gradient(top,#ffffff 0,#eeeeee 100%);background: -o-linear-gradient(top,#ffffff 0,#eeeeee 100%);background: linear-gradient(to bottom,#ffffff 0,#eeeeee 100%);background-repeat: repeat-x;filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#eeeeee,GradientType=0);-moz-border-radius: 5px;-webkit-border-radius: 5px;border-radius: 5px;/*对于特殊符号无影响*/padding:0 2px;}body{min-width: 988px;font-family: "微软雅黑";}@media (min-width: 998px) {.MsoNormalTable-toolbar{right: 50px;margin-right: 50px;margin-top:3px;}}</style><table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0style='border-collapse:collapse;border:none'><tr><td width=100% colspan=13 valign=top style='border:solid #BFBFBF 1.0pt;background:#4f81bd;padding:0cm 5.4pt 0cm 5.4pt'><h3 class="text-center">学校【${schoolName}】,学院【${className}】的人员信息</h3></td></tr><tr><td width=100% colspan=13 valign=top style='border:solid #BFBFBF 1.0pt;border-top:none;background:#8064a2;padding:0cm 5.4pt 0cm 5.4pt'><p class=MsoNormal><span style='font-size:11pt;color:white'>姓名</span></p></td></tr><tr><td width=25% colspan=3 valign=top style='border:solid #BFBFBF 1.0pt;border-top:none;padding:0cm 5.4pt 0cm 5.4pt'><p class=MsoNormal><span style='font-size:9.0pt;color:#404040'>姓名</span></p></td><td width=18.6% colspan=3 valign=top style='border-top:none;border-left:none;border-bottom:solid #BFBFBF 1.0pt;border-right:solid #BFBFBF 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'><p class=MsoNormal><span style='font-size:9.0pt;color:#404040'>别名</span></p></td><td width=18.5% colspan=2 valign=top style='border-top:none;border-left:none;border-bottom:solid #BFBFBF 1.0pt;border-right:solid #BFBFBF 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'><p class=MsoNormal><span lang=EN-US style='font-size:9.0pt;color:#404040'>年龄</span></p></td><td width=18.6% colspan=3 valign=top style='border-top:none;border-left:none;border-bottom:solid #BFBFBF 1.0pt;border-right:solid #BFBFBF 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'><p class=MsoNormal><span style='font-size:9.0pt;color:#404040'>地址</span></p></td></tr><#list student as user><tr><td width=25% colspan=3 valign=top style='border:solid #BFBFBF 1.0pt;border-top:none;padding:0cm 5.4pt 0cm 5.4pt'><p class=MsoNormal><span lang=EN-US style='font-size:6.5pt;color:#888888'>${user.username}</span></p></td><td width=18.6% colspan=3 valign=top style='border-top:none;border-left:none;border-bottom:solid #BFBFBF 1.0pt;border-right:solid #BFBFBF 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'><p class=MsoNormal><span lang=EN-US style='font-size:6.5pt;color:#888888'>${user.secondName}</span></p></td><td width=18.5% colspan=2 valign=top style='border-top:none;border-left:none;border-bottom:solid #BFBFBF 1.0pt;border-right:solid #BFBFBF 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'><p class=MsoNormal><span lang=EN-US style='font-size:6.5pt;color:#888888'>${user.age}</span></p></td><td width=18.6% colspan=3 valign=top style='border-top:none;border-left:none;border-bottom:solid #BFBFBF 1.0pt;border-right:solid #BFBFBF 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'><p class=MsoNormal><span lang=EN-US style='font-size:6.5pt;color:#888888'>${user.address}</span></p></td></tr></#list></body></html>

生成的pdf

总结:

wkhtmltopdf是一个免费实用的工具,可用于html转pdf等地方,这次的任务是实现对pdf文件签名大概流程为

建立ftl模板,通过freemarker将数据填充进去生成html,再将html转化为用户所需要的pdf,签名通过签字板会生成一个签名的图片,将图片贴在pd’f即可。

记录一下

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。