html页面转PDF
下载地址:https://wkhtmltopdf.org/downloads.html
下载以后安装到D盘
.
使用方法
点击bin 进入D:\wkhtmltopdf\bin cmd 输入命令
.\wkhtmltopdf.exe --footer-html "file:///C:/Users/Administrator/Desktop/footer.html" -L 0 -R 0 --no-stop-slow-scripts --enable-javascript --javascript-delay 5000 --enable-local-file-access "file:///C:/Users/Administrator/Desktop/enterprise-risk-report/taxReport.html?is_download=0" "C:\Users\Administrator\Desktop\tax.pdf"
.\wkhtmltopdf.exe
表示当前目录下的 wkhtmltopdf 可执行程序,是整个命令的核心工具,用于实现 HTML 到 PDF 的转换。
--footer-html "file:///C:/Users/Administrator/Desktop/footer.html"
指定 PDF 的页脚内容来自本地的 footer.html 文件
file:/// 是本地文件的协议标识,后面跟的是该 HTML 文件的完整路径
-L 0
设置 PDF 页面的左 margin(边距)为 0 单位(默认通常是毫米)
-R 0
设置 PDF 页面的右 margin(边距)为 0 单位
--no-stop-slow-scripts
指示工具不要因为脚本执行缓慢而停止处理,确保页面中的 JavaScript 有足够时间执行
--enable-javascript
启用对 HTML 页面中 JavaScript 代码的支持(默认可能不启用)
--javascript-delay 5000
设置等待 JavaScript 执行完成的延迟时间为 5000 毫秒(5 秒)
用于确保页面中需要动态加载的内容(如通过 JS 渲染的数据)有足够时间加载完成
--enable-local-file-access
允许访问本地文件(如页面中引用的本地图片、CSS、JS 等资源)
"file:///C:/Users/Administrator/Desktop/enterprise-risk-report/taxReport.html?is_download=0"
指定要转换的源 HTML 文件路径(本地文件)
?is_download=0 是该 HTML 页面的 URL 参数,可能用于控制页面在转换时的显示状态
"C:\Users\Administrator\Desktop\tax.pdf"
指定转换后生成的 PDF 文件的保存路径和文件名
footer.html 处理页码
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="utf-8"><style>.footer {font-family: "SimSun", "Times New Roman", serif;font-size: 10pt;color: #333333;text-align: center;width: 100%;}.hidden {display: none !important;}</style><script>function substitutePdfVariables() {// 获取原始页码和总页数var originalPage = getQueryVariable('page') || window.pageNumber;var totalPages = getQueryVariable('topage') || window.pageCount;// 转换为数字类型originalPage = parseInt(originalPage, 10);totalPages = parseInt(totalPages, 10);var footer = document.querySelector('.footer');var pageEl = document.querySelector('.page');var topageEl = document.querySelector('.topage');// 隐藏首页和尾页的页码if (originalPage === 1 || originalPage === totalPages) {footer.classList.add('hidden');return;}// 计算显示的页码(减去首页)var displayPage = originalPage - 1;// 计算实际显示的总页数(减去首页和尾页)var displayTotal = totalPages - 2;// 显示修正后的页码if (pageEl && !isNaN(displayPage)) {pageEl.textContent = displayPage;}if (topageEl && !isNaN(displayTotal)) {topageEl.textContent = displayTotal;}}// 从URL中获取参数的辅助函数function getQueryVariable(variable) {var query = window.location.search.substring(1);var vars = query.split('&');for (var i = 0; i < vars.length; i++) {var pair = vars[i].split('=');if (pair[0] === variable) {return decodeURIComponent(pair[1] || '');}}return null;}</script>
</head>
<body onload="substitutePdfVariables()"><div class="footer">第 <span class="page"></span> 页 / 共 <span class="topage"></span> 页</div>
</body>
</html>
注意各个文件的路径!!! pdf的名称建议每运行一次命令变一下比如tax1.pdf tax2.pdf 等它运行完在点开pdf 不然pdf会弹框提示文件格式损坏
使用的时候修改完html页面直接在bin cmd运行命令就可以
有相当一部分css样式是无法兼容的 需要百度或者一个一个试
比如display:flex;可以换成display:table来实现换行
color中的八进制无法转换需要处理成rbg格式nullhttps://www.sioe.cn/yingyong/yanse-rgb-16/
图片需要转换成base64格式 img图片转Baseimhttps://www.lddgo.net/convert/imagebasesix
为了防止base64太长 一些清晰度要求不是很高的图片建议压缩一下最优图像优化 - Recompressorhttps://zh.recompressor.com/echarts使用本地文件而不要使用在线地址 在线地址在html中可以看到效果 但是无法转换
下载 - Apache EChartshttps://echarts.apache.org/zh/download.html
高度不可以使用百分比 一般max-width:1200px 宽度写为固定