phantomjs导出html到pdf的方法总结


Posted in Javascript onOctober 19, 2017

最近要为我们的文章服务做一个转pdf的功能。经过比较,我觉得phantomjs是转化比较好的。现在讲讲如何使用。

环境

centos x86_64

下载

可以到官网下载: 官网

或者wget也可以:

wget -P /tmp/ https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2

安装

// 解压
tar xjf /tmp/phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/
// 重命名
mv /usr/local/phantomjs-2.1.1-linux-x86_64 /usr/local/phantomjs
// 建立软连接
ln -s /usr/local/phantomjs/bin/phantomjs /usr/local/bin/
现在可以在终端执行phantomjs --version查看是否安装成功

配置

现在还不够,光phantomjs用来转化,会存在一些问题:

  • 中文乱码
  • 字体粗细不一致

解决方式:

1:中文乱码

yum -y install bitmap-fonts bitmap-fonts-cjk
2:字体粗细不一致

这是centos不存在字体的原因,可以导入字体。

  • 安装字体管理工具: yum install -y fontconfig mkfontscale
  • 访问 c:\windows\fonts,把需要的字体copy出来。然后上传到服务器上的 /usr/share/fonts下
  • 执行 mkfontscale, mkfontdir, fc-cache -fv三个命令,然后重启服务器(Reboot)即可。

代码使用

现在开始,就可以写代码了:

import phantom from 'phantom';
const pageToPdf = (url) => {
 phantom.create().then((ph) {
 ph.createPage().then((page) => {
  page.open(url).then((status) => {
  // 配置存储的pdf地址
  page.render('存储的地址.pdf').then((status) => {
   console.log('Page rendered');
   ph.exit();
  });
  });
 });
 });
};
pageToPdf('https://www.tongbanjie.com');

结果

ok,现在可以部署代码试一下了。

phantomjs导出html到pdf的方法总结

总结

以上所述是小编给大家介绍的phantomjs导出html到pdf的方法总结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
[转]JS宝典学习笔记
Feb 07 Javascript
jquery.jstree 增加节点的双击事件代码
Jul 27 Javascript
jQuery的实现原理的模拟代码 -2 数据部分
Aug 01 Javascript
用js读、写、删除Cookie代码续篇
Dec 03 Javascript
jquery实现横向图片轮播特效代码分享
Nov 19 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(1)
Feb 20 Javascript
js实现手机发送验证码功能
Mar 13 Javascript
vue脚手架vue-cli的学习使用教程
Jun 06 Javascript
详解iframe跨域的几种常用方法(小结)
Apr 29 Javascript
细说Vue组件的服务器端渲染的过程
May 30 Javascript
vue实现弹幕功能
Oct 25 Javascript
vue视频播放插件vue-video-player的具体使用方法
Nov 08 Javascript
vue2.0设置proxyTable使用axios进行跨域请求的方法
Oct 19 #Javascript
vue resource post请求时遇到的坑
Oct 19 #Javascript
vue Element-ui input 远程搜索与修改建议显示模版的示例代码
Oct 19 #Javascript
JavaScript适配器模式详解
Oct 19 #Javascript
JavaScript门面模式详解
Oct 19 #Javascript
vue+Java后端进行调试时解决跨域问题的方式
Oct 19 #Javascript
AngularJS的$location使用方法详解
Oct 19 #Javascript
You might like
法兰绒滤网冲泡
2021/03/03 冲泡冲煮
discuz 首页四格:最新话题+最新回复+热门话题+精华文章插件
2007/08/19 PHP
php微信开发之带参数二维码的使用
2016/08/03 PHP
调用js时ie6和ie7,ff的区别
2009/08/19 Javascript
CSS+Jquery实现页面圆角框方法大全
2009/12/24 Javascript
Javascript load Page,load css,load js实现代码
2010/03/31 Javascript
JS数组array元素的添加和删除方法代码实例
2015/06/01 Javascript
js封装tab标签页实例分享
2016/12/19 Javascript
es6在react中的应用代码解析
2017/11/08 Javascript
实例分析js事件循环机制
2017/12/13 Javascript
webpack+vue+express(hot)热启动调试简单配置方法
2018/09/19 Javascript
js实现无限层级树形数据结构(创新算法)
2020/02/27 Javascript
vue实现购物车加减
2020/05/30 Javascript
详解vue中在父组件点击按钮触发子组件的事件
2020/11/13 Javascript
EXTJS7实现点击拖拉选择文本
2020/12/17 Javascript
[01:04:05]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python计算方程式根的方法
2015/05/07 Python
黑科技 Python脚本帮你找出微信上删除你好友的人
2016/01/07 Python
Python enumerate索引迭代代码解析
2018/01/19 Python
python障碍式期权定价公式
2019/07/19 Python
使用python实现kNN分类算法
2019/10/16 Python
Python imread、newaxis用法详解
2019/11/04 Python
谈一谈数组拼接tf.concat()和np.concatenate()的区别
2020/02/07 Python
利用Python中的Xpath实现一个在线汇率转换器
2020/09/09 Python
浅谈基于Canvas的手绘风格图形库Rough.js
2018/03/19 HTML / CSS
罗德与泰勒百货官网:Lord & Taylor
2016/08/12 全球购物
用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别
2012/11/04 面试题
公司承诺书怎么写
2014/05/24 职场文书
2015年乡镇纪检工作总结
2015/04/22 职场文书
小学班主任心得体会
2016/01/07 职场文书
职场新人刚入职工作总结该怎么写?
2019/05/15 职场文书
PHP基本语法
2021/03/31 PHP
Nginx配置SSL证书出错解决方案
2021/03/31 Servers
详解SQL的窗口函数
2022/04/21 Oracle
在 Python 中利用 Pool 进行多线程
2022/04/24 Python
docker 制作mysql镜像并自动安装
2022/05/20 Servers