Java Html转pdf实战

Java Html转pdf实战 - 简书年尾手头没啥事,干起了打杂工作,最近帮忙解决后端项目里一个html批量转pdf速度慢的问题,项目里用到的转换工具是 wkhtmltopdf ,这货转单个html还好,批量转速...https://www.jianshu.com/p/d07bca50daed?from=groupmessage

年尾手头没啥事,干起了打杂工作,最近帮忙解决后端项目里一个html批量转pdf速度慢的问题,项目里用到的转换工具是 wkhtmltopdf ,这货转单个html还好,批量转速度就慢了。几经摸索(各种baidu、google......)各种测试后,终于找到个性能不错的工具 —— phantomjs

Phantomjs安装

官网地址:PhantomJS - Scriptable Headless Browser
下载地址:Download PhantomJS

选择合适自己系统的版本,解压就行,目录结构如下图(mac为例)

新建 html2pdf.js 文件,把下面代码拷进去,文件最好放在phantomjs的bin目录下

var page = require('webpage').create();
var system = require('system');读取命令行参数,也就是js文件路径。
if (system.args.length === 1) {console.log('Usage: loadspeed.js <some URL>');
//这行代码很重要。凡是结束必须调用。否则phantomjs不会停止phantom.exit();
}
page.settings.loadImages = true;  //加载图片
page.settings.resourceTimeout = 30000;//超过10秒放弃加载
//截图设置,
//page.viewportSize = {
//  width: 1000,
//  height: 3000
//};
var address = system.args[1];
page.open(address, function(status) {function checkReadyState() {//等待加载完成将页面生成pdfsetTimeout(function () {var readyState = page.evaluate(function () {return document.readyState;});if ("complete" === readyState) {page.paperSize = { width:'1500px',height:'2000px',orientation: 'portrait',border: '1cm' };var timestamp = Date.parse(new Date());var pdfname = 'HT_'+timestamp + Math.floor(Math.random()*1000000);var outpathstr = "/Users/zachary/Downloads/phantomjs2/bin/"+pdfname+".pdf";page.render(outpathstr);//console.log就是传输回去的内容。console.log("生成成功");console.log("$"+outpathstr+"$");phantom.exit(); } else {checkReadyState();}},1000);}checkReadyState();
});

Phantomjs使用

打开终端,进入phantomjs的bin目录,执行命令phantomjs html2pdf.js "网址或html文件路径",注意空格

image.png

生成路径在 html2pdf.js 文件里设置,可以看到bin目录下生成pdf成功


打开看下效果,相当Nice ! ! !

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/537335.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hadoop生态圈-Ambari控制台功能简介

Hadoop生态圈-Ambari控制台功能简介 作者&#xff1a;尹正杰 版权声明&#xff1a;原创作品&#xff0c;谢绝转载&#xff01;否则将追究法律责任。 在经历一系列安装过程之后&#xff08;部署过HDP后我终于发现为什么大家喜欢用它了&#xff0c;部署比CDH简单是他优势之一&…

oracle监听启动很慢

TNS-12531: TNS:cannot allocate memory 首先查看内存&#xff0c;free -m 发现当前的空闲内存还有很多&#xff0c;那就不是内存不足的问题 想到之前重启过数据库服务器&#xff0c;查看主机名hostname,然后在查看etc/hosts 中的主机名&#xff0c;发现两者不一致&#xff0c;…

python地图标注_Python 给定的经纬度标注在地图上的实现方法

博主最近发现了python中一个好玩的包叫basemap,使用这个包可以绘制地图。值得说一下的是&#xff0c;basemap还没有pip检索&#xff0c;因此不能直接使用pip install basemap&#xff0c;来安装这个包。所以需要自己把下面两个包自行下载&#xff0c;然后在该目录下使用pip安装…

剪映专业版PC端清理缓存与日志

清理缓存 这个简单&#xff0c;在全局设置里&#xff0c;点击删除键&#xff0c;就可以 清理日志 软件每次剪辑都会生成日志&#xff0c;日志路径在 C:\Users\zengm\AppData\Local\JianyingPro\User Data\Log C:\Users\zengm\AppData\Local\JianyingPro\User Data\VELog

nodejs源码_nodejs之setTimeout源码解析

setTimeout是在系统启动的时候挂载的全局函数。代码在timer.js。function setupGlobalTimeouts() {const timers NativeModule.require(timers);global.clearImmediate timers.clearImmediate;global.clearInterval timers.clearInterval;global.clearTimeout timers.clear…

百度网盘PC端缓存文件夹

在C:\Users\zengm\AppData\Roaming\baidu\BaiduNetdisk\users\下面 BaiduYunCacheFileV0.db 文件为百度网盘目录数据&#xff0c;结构为&#xff1a; 百度网盘BaiduYunCacheFileV0.db数据库研究_wqq1027的博客-CSDN博客_百度网盘数据库最近研究了一下百度网盘的本地数据库文件…

python 图片转文字错误_python3把base64字符串写成图片文件出错

下面的代码在python2下正常的&#xff0c;是一个微信图标&#xff0c;文件md5是a1be719025844a1918ec6a338eaa8456我对python3不熟悉&#xff0c;不知道要怎么改#!/usr/bin/python3import base64def filePutContents(file, content):fp open(file, a)fp.write(content)fp.clos…

从业回忆录,最后悔的事

被一篇文章误导 我清楚地记得,在我毕业第一年,我看到了一篇关于程序员怎么学技术的文章,观点是程序员要多学技术,文章引用了典故:“高筑墙,广积粮,缓称王”。当时读这篇文章,感觉很有道理,认同了文章里的观点。 这么些年,学了不少技术:C#、Asp.net、Java Web套餐、A…

kodexplorer开源网盘php程序配置解析

config/setting_user.php 追加内容&#xff08;一下都是&#xff0c;注意不要使用中文引号、双引号及分号&#xff09; //【指定多语言只保留中文】 $GLOBALS[config][settings][language] zh-CN; //【自定义群组创建时自动新建的目录】 $GLOBALS[config][settingSystemDefaul…

实现三元组表示的两个稀疏矩阵的加法_K-BERT | 基于知识图谱的语言表示模型

1.研究背景BERT曾被应用在多项NLP任务中&#xff0c;并且取得了很好的结果。它通过在大规模开放语料库上进行预训练以获得通用的语言表示&#xff0c;然后在特定的下游任务中进行微调&#xff0c;吸收特定领域的知识。但这些模型在不同的领域执行知识驱动任务时&#xff0c;效果…

Excel单元格“删除线”的添加与删除

软件&#xff1a;windows&#xff0c;WPS 点击字体设计的小角标&#xff0c;进入更多设置&#xff0c;勾选“删除线”

excel 表格复制到word后,宽超出word如何调整?

网上很多方法是用“选择性粘贴----excel表格对象”&#xff0c;这个适用表格行数少的&#xff0c;不超过一页word的。 步骤 复制到word里后&#xff0c;选中表格&#xff0c;右键---自动调整--选择具体的调整方式。 调整后效果

sql 查询上个月的数据_数据分析-SQL 进阶篇 多表查询

知识点一、表的加法Union&#xff1a;删除表中的重复值union al&#xff1a;包含表中所有内容&#xff0c;包括重复值二、表的联结联结&#xff1a;join联结分为以下五种&#xff1a;交叉联结&#xff08;cross join&#xff09;又称为笛卡尔积&#xff1a;将表中的每一行与另外…

jenkins部署三种构建方式的详细步骤

部署背景&#xff1a;jenkins&#xff1a; CentOS 7.4C IP&#xff1a;172.16.3.74gitlab-11.5.3&#xff1a; CentOS 7.4D IP&#xff1a;172.16.4.74此上部署都是根据我之前的博客配置完成的&#xff1b;jenkins有三种构建方…

从业回忆,一次大胆的冒险,程序员转岗项目经理

有些事不必知道得太早 程序员这个行业,被“中年危机”言论导向后,就和洗脚城女技师差不多,年轻,漂亮,技术好,体力好的技师收入高,一边拿着高薪,赚着外快,一边吐槽是青春饭,经常熬夜,干不长久。 2010年之前,网上宣传程序员是青春饭,程序员中年危机的文章很少。近几…

python中控脚本_Python3.7实现中控考勤机自动连接

由于考勤机与oa对接&#xff0c;oa会在每天定时取考勤机数据&#xff0c;但是需要考勤机是连接状态&#xff0c;所以搜索了下相关教程&#xff0c;写了个脚本自动连接。完全是个python小白&#xff0c;代码烂&#xff0c;仅作为笔记。理论上支持所有程序的每天自动开启与关闭# …

word转freemarker和修改的步骤

第一步 编写好word&#xff0c;用freemarker语法替换内容 第二步 word另存为 word xml 第三步 修改后缀名为&#xff1a;.ftl 第四步 notepad XML插件美化显示&#xff0c;插件安装教程&#xff1a;Notepad 7.6以上版本安装XML Tools插件_lingquan0809的博客-CSDN博客Note…

python编程首选_为什么说学编程首选是python

为什么学编程你可能不会成为一名专业的程序员&#xff0c; 不过学编程的确是有很多的原因的1. 最重要的是你想学&#xff01;不论是因为业余爱好还是作为职业&#xff0c;编程都是十分有意思的&#xff0c; 都会让你收获很多2. 如果你是对计算机感兴趣的&#xff0c; 想更多的了…

程序员的职业规划,程序员的未来趋势

作者2008年入行,至今15个年头,从程序员到管理。当初一起入行的,当初带我的技术大佬,也都转管理了。 回顾 2008年-2015年:程序员,会ASP.NET、Java、JSP Servlet、SSH、SSM、Mysql、Oracle、Sqlserver、DB2、Sql、H5、Javascript、Jquery、Bootstrap、easy-UI、Android、…