wkhtmltoimage/wkhtmltopdf 使用实践

这篇具有很好参考价值的文章主要介绍了wkhtmltoimage/wkhtmltopdf 使用实践。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 介绍

wkhtmltopdf/wkhtmltoimage 用于将简单的html页面转换为pdf或图片;

2.安装

downloads

2.1. mac os

下载64-bit 版本然后按照指示安装, 遇到 untrust developers 时,需要在 Settings -> Privacy 处信任下该安装包。
wkhtmltoimage/wkhtmltopdf 使用实践,toolswkhtmltoimage/wkhtmltopdf 使用实践,tools

2.2. debian

# 可用于Dockerfile中
apt update && apt install wkhtmltopdf

3. 使用

wkhtmltopdf&wkhtmltoimage 内嵌了一个QT浏览器,其原理是会使用该内嵌的浏览器打开html文件或链接,然后对该网页进行截图处理;

注意事项
(1) 导出的图片或pdf空白:由于wkhtmltopdf&wkhtmltoimage 0.12.6 最新版发布于 2020-7-11, 其使用的QT浏览器由于版本比较旧,可能会无法识别较新版本的javascript语法,比如我们使用的eCharts组件,那么此时我们需要降低echarts.js的版本, 可以参考example,这位老哥给出了一段html代码,经测试,可以被渲染出来;

(2) 导出的图片没有完全渲染完成:因为eChart生成的canvas通常有一个动画效果,我们可以通过添加 --javascript-delay 1000 参数延迟截取图片的时间。

3.1. eCharts Example

index.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.min.js"></script>
<style>
    .reportGraph {width:900px}
</style>
</head>
<body>

<div class="reportGraph"><canvas id="canvas"></canvas></div>

<script type="text/javascript">
// wkhtmltopdf 0.12.5 crash fix.
// https://github.com/wkhtmltopdf/wkhtmltopdf/issues/3242#issuecomment-518099192
'use strict';
(function(setLineDash) {
    CanvasRenderingContext2D.prototype.setLineDash = function() {
        if(!arguments[0].length){
            arguments[0] = [1,0];
        }
        // Now, call the original method
        return setLineDash.apply(this, arguments);
    };
})(CanvasRenderingContext2D.prototype.setLineDash);
Function.prototype.bind = Function.prototype.bind || function (thisp) {
    var fn = this;
    return function () {
        return fn.apply(thisp, arguments);
    };
};

function drawGraphs() {
    new Chart(
        document.getElementById("canvas"), {
            "responsive": false,
            "type":"line",
            "data":{"labels":["January","February","March","April","May","June","July"],"datasets":[{"label":"My First Dataset","data":[65,59,80,81,56,55,40],"fill":false,"borderColor":"rgb(75, 192, 192)","lineTension":0.1}]},
            "options":{}
        }
    );
}
window.onload = function() {
    drawGraphs();
};
</script>
</body>
</html>
wkhtmltoimage --debug-javascript --enable-local-file-access --no-stop-slow-scripts --javascript-delay 1000 ./index.html index.jpg

!!!注意我们需要开启debug-javascript,这样当本地测试正常,但是抛出syntax error的时候,我们就知道需要降低我们使用javascript的语法格式以及eChart的版本了!!!
wkhtmltoimage/wkhtmltopdf 使用实践,tools

3.2. python 使用

# imgkit 是对 wkhtmltoimage的一层简单封装, 因此我们需要先安装好wkhtmltopdf
pip install imgkit
import imgkit
# html 是整个index.html文件的字符串
imgkit --from_string(html, output_path="/tmp/xxx.jpg", options={
"no-stop-slow-scripts": "",
"javascript-delay": 1000
})

Reference

wkhtmltoimage&wkhtmltopdf文章来源地址https://www.toymoban.com/news/detail-719994.html

到了这里,关于wkhtmltoimage/wkhtmltopdf 使用实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • NDI Tools使用介绍

    NDI是个好东西。在网络流媒体时代,低延迟高质量的视频传输是大家普遍的追求。NDI很好的解决了这一点、 NDI(Network Device Interface)即网络设备接口,是由美国NewTek公司开发的版权免费的标准,可使兼容的视频产品以高质量、低延迟、精确到帧的方式通讯、传输和接收广播级

    2024年02月05日
    浏览(25)
  • GNU Tools使用笔记

    选项 作用 -Og 优化调试体验 -Wall选项 作用:使能所有的警告。 -g选项 作用:生成操作系统原生格式的调试信息,GDB能够与这些调试信息协同工作。 -gdwarf-version选项 作用:生成DWARF格式的调试信息。 示例:-gdwarf-2。 -c选项 作用:指示编译器仅编译或汇编源文件,但不进行链

    2024年02月02日
    浏览(67)
  • UI Tool Kit 使用

    Unity 2021 已经把UIBuilder 内置了,项目组也打算 后续工具采用 toolkit来写,这边也是找了一下教程熟悉了一下。 UI 工具包 - Unity 手册  首先 先创建一个EditorWindow  会生成相应的C#,UXML,USS代码  默认会把显示的MenuItem代码生成,以及Root VisualElement生成,会默认加载对应的uxml文件

    2024年02月12日
    浏览(38)
  • WPF 项目使用 Grpc.Tools

    1.1 方法一 把 proto 文件和 Grpc.Tools 单独建一个类库项目,WPF 项目引用这个类库项目。 解决 Grpc.Tools 自动生成的 CSharp 类无法被 WPF 项目识别引用的问题,使 WPF 项目能够成功通过编译。 参考链接: https://docs.microsoft.com/en-us/aspnet/core/grpc/troubleshoot?view=aspnetcore-6.0#wpf-projects-unabl

    2024年02月09日
    浏览(36)
  • Android中tools属性的使用

    参考: 1.Android:Tools命名空间原来是有大用处的 2.Android中tools属性的使用 3.工具属性参考文档 4. 命名空间介绍 5. 注解 6. lint 7. 资源压缩shrink-resources   Android Studio在tools命名空间中支持一些XML属性来开关设计功能和编译时行为。当构建应用时,构建工具会删除这些属性,从而

    2024年01月20日
    浏览(37)
  • kafka tool下载安装和使用

    下载连接:https://www.kafkatool.com/download.html kafka tool官网介绍 Kafka工具是用于管理和使用Apache Kafka集群的GUI应用程序。 它提供了一种直观的UI,可让用户快速查看Kafka集群中的对象以及集群主题中存储的消息。 它包含面向开发人员和管理员的功能。 主要功能如下: 1. 快速查看所

    2024年02月05日
    浏览(66)
  • 【Tools】如何在VSCode上使用C++ 保姆教程

    VSCode(Visual Studio Code)是一款轻量级的代码编辑器,拥有丰富的插件生态系统,支持多种语言开发。在本文中,将介绍如何在 VSCode 中配置 C++ 环境,以便于开发和调试 C++ 代码。 VSCode 具有以下优势: 轻量级:相比于其他 IDE,VSCode 占用的资源更少,启动更快。 插件丰富:

    2024年02月09日
    浏览(41)
  • WPF 3D 使用3D Tools简单实现鼠标控制模型

    CSDN上下载一个资源, 3D模型导入wpf_wpf加载obj模型光线和相机配置-C#代码类资源-CSDN下载 从VS中打开,运行如下; 出来一个模型;   可以用鼠标旋转,翻转模型,从不同角度方位查看模型;    项目结构如下;  看一下鼠标功能是如何实现的; 在整个解决方案中找不到任何和

    2024年02月09日
    浏览(39)
  • [ tool ] Xpath选择器和selenium工具基本使用

    是一门在XML文档中查找信息的语言 以后查找标签有三种方式 bs4的find系列(find find_all) css选择器 xpath选择器 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如

    2024年01月21日
    浏览(37)
  • 使用VMware安装Ubuntu虚拟机和VMware Tools

    【前言】 本教程将演示通过 VMware 安装 Ubuntu ,请提前下载好以下文件哦: ① VMware 软件 ② Ubuntu 的 光盘镜像文件(.iso) 【下载地址】 VMware 官网链接 https://www.vmware.com/ 本教程使用版本:VMware Workstation 16 Pro Ubuntu 官网链接 https://www.ubuntu.org.cn/global 下载链接:https://releases.u

    2024年02月05日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包