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

如何将html转化为pdf

html转换为pdf

  1. html2pdf.js库,
    基于html2canvas和jspdf,只能打印2-3页pdf,比较慢,分页会截断
  2. html2canvas
    只能打印2-3页pdf,比较慢,分页会截断 // canvas
  3. Dom-to-image
    不支持某些css属性
  4. Pdfmake html-to-pdfmake配合使用
    比较不错的库,有一些兼容性问题
  5. wkhtmltopdf
    比较不错的库,基于webkit,支持性好,分页需要特殊处理,服务器需要安装wkhtmltopdf环境,但是转换之后会存在图表加载偏离,分页不均匀的问题
  6. node+puppeteer(无头浏览器) // 直接打印
    比较不错的解决方案,是和直接鼠标右键打印另存为pdf是一个效果,但是会出现排版问题
    目前还没有找到好的解决方案

示例代码

wkhtmltopdf

首先在这里下载wkhtmltopdf,并且要记住文件的下载位置,下面时python的代码示例:

import pdfkit
import osdef html2pdf():folder_path = "report_output"# 获取文件夹中的文件名file_names = os.listdir(folder_path)# 存储文件名的列表file_list = []# 遍历文件名for file_name in file_names:# 检查文件名是否以 .html 结尾if file_name.endswith(".html"):# 将 .html 后缀替换为 .pdfpdf_file_name = file_name[:-5] + ".pdf"path_wkthmltopdf = r'C:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf.exe'config = pdfkit.configuration(wkhtmltopdf=path_wkthmltopdf)input_html = f"./report_output/{file_name}"  # 替换为你的 HTML 文件路径# 替换为你要保存的 PDF 文件路径output_pdf = f"./report_output_pdf/{pdf_file_name}"# 将 HTML 打印为 PDFpdfkit.from_file(input_html, output_pdf, configuration=config)file_list.append(pdf_file_name)print(f"{pdf_file_name}!", f" 这是第{len(file_list)}个报告")if __name__ == "__main__":# 运行将本地 HTML 文件转换为 PDF 的函数html2pdf()

使用 puppeteer 进行html到pdf的转换

因为puppeteer是nodejs的一个库
要使用 Puppeteer 将当前页面转换为 PDF 文件,你可以按照以下步骤进行操作:

首先,确保你已经安装了 Puppeteer。你可以使用 npm 进行安装:

npm install puppeteer

在 JavaScript 文件中,引入 Puppeteer 并创建一个异步函数来处理 PDF 转换逻辑。以下是一个示例代码:

const puppeteer = require('puppeteer');async function convertPageToPDF() {// 启动 Puppeteerconst browser = await puppeteer.launch();// 创建一个新的页面const page = await browser.newPage();// 导航到指定的页面await page.goto('https://example.com');// 等待页面加载完成await page.waitForLoadState('networkidle0');// 将页面保存为 PDF 文件await page.pdf({ path: 'page.pdf', format: 'A4' });// 关闭浏览器await browser.close();console.log('PDF 文件已生成');
}

// 调用函数进行 PDF 转换

convertPageToPDF();

在上面的示例中,我们使用 puppeteer.launch() 启动了一个 Puppeteer 浏览器实例,然后通过 browser.newPage() 创建了一个新的页面。接下来,使用 page.goto() 导航到指定的页面,并使用 page.waitForLoadState() 等待页面加载完成。

一旦页面加载完成,我们使用 page.pdf() 将页面保存为 PDF 文件。在这个方法中,你可以指定保存的文件路径(path)和 PDF 的格式(format)。在示例中,我们将 PDF 格式设置为 A4。

http://www.lryc.cn/news/205392.html

相关文章:

  • ES6初步了解生成器
  • 飞桨大模型套件:一站式体验,性能极致,生态兼容
  • 【C++入门到精通】哈希 (STL) _ unordered_map _ unordered_set [ C++入门 ]
  • 创建 Edge 浏览器扩展教程(上)
  • container_of解析及应用
  • 搜维尔科技:Varjo-最自然和最直观的互动
  • Postman环境配置
  • Windows下Eclipse C/C++开发环境配置教程
  • 深入 Maven:构建杰出的软件项目的完美工具
  • 一文了解企业云盘和大文件传输哪个更适合企业传输
  • 在 history 模式下,为什么刷新页面会出现404?
  • 第二证券:“华为概念股”,怒刷13连板
  • 黑豹程序员-架构师学习路线图-百科:API接口测试工具Postman
  • 开源博客项目Blog .NET Core源码学习(5:mapster使用浅析)
  • Appium移动端自动测试框架,如何入门?
  • 外汇天眼:喜大普奔!困扰投资者的交易问题解决了!
  • UUID转16字节数组(Java)
  • 使用vue3 搭建一个H5手机端访问的项目
  • 【网络安全 --- 任意文件下载漏洞(1)】任意文件下载漏洞
  • 驱动开发day4(实现通过字符设备驱动的分布实现编写LED驱动,实现设备文件的绑定)
  • 《深入浅出.NET框架设计与实现》阅读笔记(一)
  • Flutter 类似onResume 监听,解决入场动画卡顿(2)
  • rabbitmq-3.8.15集群、集群镜像模式安装部署
  • import导入顺序杂乱的问题
  • Hadoop3教程(二十六):(生产调优篇)NameNode核心参数配置与回收站的启用
  • PaddleX场景实战:PP-TS在电压预测场景上的应用
  • pdf误删恢复如何恢复?分享4种恢复方法!
  • 简析新能源汽车充电桩设计与应用
  • Java零基础入门-算术运算符
  • java实现hbase数据导出