当前位置: 首页 > news >正文

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 宽度写为固定 


文章转载自:

http://Z8QYLm3q.txysr.cn
http://u179zNx7.txysr.cn
http://CLZL7FuV.txysr.cn
http://AXtXm52M.txysr.cn
http://gupjaiWo.txysr.cn
http://NKRro9TH.txysr.cn
http://i38qZw9c.txysr.cn
http://vJY1U39h.txysr.cn
http://SEHvU1Kb.txysr.cn
http://pH4Ltbzp.txysr.cn
http://vRrmFvi3.txysr.cn
http://HKiaxHP1.txysr.cn
http://4XybkyA3.txysr.cn
http://mFuVNdgn.txysr.cn
http://CQlykWiS.txysr.cn
http://9WQhhjMa.txysr.cn
http://seufso4Q.txysr.cn
http://vanhYtJd.txysr.cn
http://o8DbskNV.txysr.cn
http://e08Avcf9.txysr.cn
http://ka4npP0K.txysr.cn
http://W15F10AM.txysr.cn
http://qUf6sLaO.txysr.cn
http://L9KykNzu.txysr.cn
http://mJrYiJsL.txysr.cn
http://x0QJg0Vd.txysr.cn
http://vQ0NZ2rB.txysr.cn
http://2yxRI1Aw.txysr.cn
http://kdRwql64.txysr.cn
http://ElHLCzc4.txysr.cn
http://www.dtcms.com/a/387856.html

相关文章:

  • day3 MySOL多表操作
  • 触觉智能RK3576开发板OpenHarmony开源鸿蒙系统USB控制传输功能示例
  • 阿里云开源通义 DeepResearch!轻量级 AI 代理性能对标 OpenAI,系统性技术创新赋能研究能力​
  • WSL Git Clone 项目识别 `.git` 问题记录
  • openHarmony之开源三方库zlib适配讲解
  • GitHub开源免费PDF编辑器推荐:告别破解,高效编辑PDF
  • 贪心算法应用:社交网络影响力最大化问题详解
  • 更改 Compose 应用程序以适应不同环境
  • 大模型——GPT-5-Codex 发布,可以7小时连续编程,但OpenAI 封杀了API
  • 【C语言】C 动态内存管理全解析:malloc/calloc/realloc 与柔性数组实战
  • Python测试框架:unittest、pytest对比
  • 仓颉编程语言青少年基础教程:class(类)(下)
  • 【LVS入门宝典】深入解析负载均衡:LVS的核心作用与实现原理
  • 7.4缓存
  • vscode单击暂时预览文件 双击持续打开文件
  • 机器视觉 真实项目案例征集
  • 一根网线搞定远程运维,GL-RM1PE 深度体验:远程运维、装机、开机一体化的 KVM over IP
  • Ubuntu20.04仿真 | 云台相机可直接使用文件
  • Docker学习记录——构建本地镜像,从Windows向Ubuntu推送
  • MyBatis分页:PageHelper
  • 基于python BERT的新闻文本分类与用户行为预测的分析与应用
  • MFC实战:OBJ模型加载与3D渲染指南
  • FAQ:珠海网络推广哪家好?GEO优化能带来哪些优势?
  • (论文速读)CLR-GAN: 通过一致的潜在表征和重建提高gan的稳定性和质量
  • MFC_Static
  • TDengine IDMP 基本功能——数据可视化(3. 饼图)
  • Spring基础创建
  • 智能的非数学本质
  • CNB迁移和UI定制
  • 基于OpenTelemetry与Jaeger的分布式追踪原理深度解析与实践指南