HTML导出为PDF
安装wkhtmltopdf
官网:https://wkhtmltopdf.org/downloads.html
Github:https://github.com/wkhtmltopdf/packaging/releases/
添加环境变量
D:\Program Files\wkhtmltopdf\bin
本地HTML导出
wkhtmltopdf D:\html\test.html D:\html\test.pdf
注意
本地导出的时候引用的外部css和js并不会生效,要保证js和css都在html内。
导出在线网页
wkhtmltopdf https://www.psvmc.cn/ D:\html\test2.pdf
wkhtmltopdf https://www.baidu.com/ D:\html\test3.pdf
wkhtmltopdf https://www.psvmc.cn/zjtools/z/qrcode/index.html D:\html\test4.pdf
wkhtmltopdf https://www.psvmc.cn/zjtools/z/browserinfo/index.html D:\html\test5.pdf
注意
- 导出在线网页的时候,外部引用的JS和CSS是生效的,但是页面不能有渐渐显示的动画,因为导出的是页面刚加载完的状态。
- 不支持页面后来加载的数据
- 不支持Flex布局
- 不支持vw和vh
- 不支持JS更改页面样式
- Echarts也要取消动画效果
animation: false,
如下的方式是行不通的
本来想不支持Flex,只要使用JS来兼容Flex,但是实际测试是行不通的。
JS中判断引用JS
<script type="text/javascript">
var supportsFlex = CSS.supports("display", "flex");
if(!supportsFlex){
var flex_element = document.createElement("script");
flex_element.setAttribute("type", "text/javascript");
flex_element.setAttribute("src", "https://unpkg.com/flex-native@1.2.0/dist/flex.native.min.js");
document.body.appendChild(flex_element);
}
</script>
其他环境
Java:https://github.com/jhonnymertz/java-wkhtmltopdf-wrapper
NodeJS:https://github.com/devongovett/node-wkhtmltopdf
C#:https://github.com/codaxy/wkhtmltopdf
GO:https://github.com/SebastiaanKlippert/go-wkhtmltopdf
Python:https://github.com/JazzCore/python-pdfkit
小知识
判断是否支持Flex
JS中判断
JS里也提供了Window.CSS.supports()
方法,用来检查浏览器对css3属性是否支持:
使用两个参数:一个是属性名,另一个是属性值 。
var supportsFlex = CSS.supports("display", "flex");
REM
//判断是否支持rem单位
var supportsRem = CSS.supports("width","1rem");
CSS中判断
@supports ( display: flex ) {
body {
display: flex;
}
}
其它语法
/* 支持Flex布局 */
@supports (display: flex) {}
/* 不支持Flex布局 */
@supports not (display: flex) {}
/* 同时支持Flex布局和Grid布局 */
@supports (display: flex) and (display: grid) {}
/* 支持Flex布局或者支持Grid布局 */
@supports (display: flex) or (display: grid) {}
@supports (display: flex) and (display: grid) and (gap: 0) {}
支持Flex
但是wkhtmltopdf不支持这种方式。
https://github.com/skin2skin/flex-native/blob/master/README-zh_CN.md
在普通的HTML中使用
<script src="https://unpkg.com/flex-native@1.2.0/dist/flex.native.min.js"></script>
在模块化中使用
import('flex-native');
使用时请在CSS中的任何display: flex
声明之前添加一个 -js-display: flex
声明, 或在构建过程中使用PostCSS Flexibility自动添加-js前缀。
CSS中
.wrapper{
-js-display:flex;
display:flex;
align-items:center;
justify-content:center;
}
元素上
<div style='display:flex;align-items:center' />
相关文章
- excel中html批量转化为pdf文件,如何将大量的Excel转换成PDF?
- PDF Protector for Mac(pdf加密与解密工具)
- jsPDF 实现 Google 云端硬盘只读 PDF 文件下载导出
- PDF Expert for mac(pdf编辑工具)
- 斯坦福博士生自制PPT生成神器ChatBCG免费开放!一键生成自定义模版,还能导出PDF
- PDF工具:Adobe Acrobat 2020 Mac 版 pdf编辑器全版本下载
- PDF Expert for mac(专业pdf编辑工具)
- PDF Expert for mac(pdf编辑必备工具) 安装使用功能介绍
- java:POI导出excel详解编程语言
- Linux系统编程:从基础到实践的PDF手册(linux系统编程pdf)
- Linux操作:快速打开PDF文件的命令(linux打开pdf命令)
- Linux源码精要:PDF详解(linux源码pdf)
- MySQL部分数据导出:简单易行的方法(mysql部分数据导出)
- MySQL数据表导出:一步搞定(mysql数据表导出)
- 探索Linux网络:最全面的PDF资源汇总(linux网络pdf)
- MySQL教程PDF:完整入门指南及高级技巧(mysql教程pdf)
- Linux系统运维PDF全面深入的介绍了Linux系统的各种运维技巧!(linux系统运维pdf)
- Linux学习:从PDF开始(linux 学习 pdf)
- 转换Oracle文档快速转换至PDF格式(oracle入??pdf)
- 高效导出MySQL海量数据技巧,轻松应对亿级数据(mysql上亿数据导出)
- MySQL表无法进行导出操作(mysql不能到处表)
- Redis部分数据导出实战指南(redis 部分数据导出)
- 让你快速掌握Oracle的PDF教程(oracle pdf教程)
- Oracle终极手册完全掌握PDF书籍(oracle pdf书籍)
- php将数据库导出成excel的方法
- ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例