php 使用html 生成pdf word wkhtmltopdf 系列2

php 使用html 生成 pdf word

项目有个需求 想同时生成word 和pdf 并且·对pdf要求比较高 为了一劳永逸 决定写成html 分别转成word 和pdf

系统环境
windows10+ 小皮面板(php8+)
linux centos 7.9 + 宝塔(php8+)
系统扩展 wkhtmltopdf
php扩展


wkhtmltopdf :是一个命令行工具,它使用 Qt WebKit 渲染引擎将 HTML 内容转换为 PDF 文档或各种图像格式


1.wkhtmltopdf 安装

1.1 Windows10 安装

官网:https://wkhtmltopdf.org/downloads.html

有的小伙伴下载不了:下载链接是通过github下载 这里需要翻墙 。


双击点击安装
在这里插入图片描述
在这里插入图片描述
点开在1处 搜索环境变量 点击编辑环境变量 点击2 点击编辑 3处 新建 将安装地址放入

在这里插入图片描述

Windows+r输入 cmd 回车
命令行输入 wkhtmltopdf -V
显示下边的就是安装成功了
在这里插入图片描述

1.2 linux centos 7.9 安装

# 下载wkhtmltopdf软件:
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.bionic_amd64.deb#复制代码
#安装wkhtmltopdf软件:
sudo dpkg -i wkhtmltox_0.12.6-1.bionic_amd64.deb
#复制代码
#安装完成后,可以在终端中输入 
wkhtmltopdf -V
#来检查是否安装成功。

2.wkhtmltopdf 命令

命令格式:wkhtmltopdf [GLOBAL OPTION]… [OBJECT]…

命令行工具自然是没有图形界面的。
下边给几个例子在下面。不愿意深入了解的就不必再浪费时间了。
把一个html文件转换成PDF

wkhtmltopdf http://example.com output.pdf

在这里插入图片描述

作用命令
把一个 url 指向的网页转换成PDFwkhtmltopdf http://example.com output.pdf
把html文件 和 url指向的网页 转换成图片wkhtmltoimage xxx.html xxx.jpg

3.详细介绍

命令参数包含五部分,分别是“全局参数”,“大纲参数选项”,“页面对象参数”,“页眉和页脚参数选项”和“目录对象参数”。

3.1 全局参数

    --collate             当输出多个副本时进行校验(这是默认设置)--no-collate          当输出多个副本时不进行校验--cookie-jar <path>   从提供的JAR文件中读写cookie数据--copies <number>     设置输出副本的数量(默认主1),其实为1就够了
-d, --dpi <dpi>           指定一个要分辨率(这在 X11 系统中并没有什么卵用)
-H, --extended-help       相对 -h 参数,显示更详细的说明文档
-g, --grayscale           指定以灰度图生成PDF文档。占用的空间更小
-h, --help                显示帮助信息  --htmldoc             输出程序的html帮助文档--image-dpi <integer> 当页面中有内嵌的图片时,会下载此命令行参数指定尺寸的图片(默认值是 600)--image-quality <interger> 当使用 jpeg 算法压缩图片时使用这个参数指定的质量(默认为 94)--license             输出授权信息并退出
-l, --lowquality          生成低质量的 PDF/PS ,能够很好的节约最终生成文档所占存储空间--manpage             输出程序的手册页
-B, --margin-bottom <unitreal> 设置页面的 底边距
-L, --margin-left <unitreal>   设置页面的 左边距 (默认是 10mm)
-R, --margin-right <unitreal>  设置页面的 右边距 (默认是 10mm)
-T, --margin-top <unitreal>    设置页面的 上边距
-O, --orientation <orientation> 设置为“风景(Landscape)”或“肖像(Portrait)”模式,默认是肖像模块(Portrait)--page-height <unitreal>   页面高度
-s, --page-size <Size>         设置页面的尺寸,如:A4,Letter等,默认是:A4--page-width <unitreal>    页面宽度--no-pdf-compression       不对PDF对象使用丢失少量信息的压缩算法,不建议使用些参数,因为生成的PDF文件会非常大。
-q, --quiet                    静态模式,不在标准输出中打印任何信息--read-args-from-stdin     从标准输入中读取命令行参数,后续会有针对此指令的详细介绍,请参见 **从标准输入获取参数**--readme                   输出程序的 readme 文档--title <text>             生成的PDF文档的标题,如果不指定则使用第一个文档的标题
-V, --version                  输出版本信息后退出
  1. 下边挑一下常用的用法 -g, --grayscale
    这个参数非常有用,使用这个参数可以有效压缩生成的PDF所占用的存储空间。当然这个压缩是要付出一定代价的,那就是最终生成的PDF文档将是灰度的,没有任何色彩。如果你能接受灰度PDF文档,并不影响实际使用,那就请使用这个参数吧。生成的PDF文档越大,使用此参数获得的惊喜就越大。

  2. -l, --lowquality 这个参数与 -g 参数有异曲同工之妙, -l 参数也会大大压缩PDF文档所占用的存储空间。只是它是通过降低PDF文档的质量来完成这一任务的。在纯文字的情况下他们的差别不大,此参数只是降低了PDF文档的质量,看上去是糙了一些,但不会影响阅读。生成的PDF文档中有大量图片,那就不要使用此参数了。

  3. -q, --quiet 使用这个参数后,你将得到一个干净的命令行输出,就连程序处理的进度和状态都没有。这个参数会抑制所有命令行输出,在程序的工作过程中,你看不到任何输出。

3.2 大纲参数选项

--dump-default-toc-xsl     输出默认的 TOC xsl 样式表到标准输出
--dump-outline <file>      输出“大纲”到指定的文件(文件内容为xml)
--outline                  在生成的PDF文档中输出“大纲”(这是默认设置)
--no-outline               不在pdf文档中输出大纲
--outline-depth <level>    设置生成大纲的深度(默认为 4)

–outline-depth

  • –outline-depth 用来指定生成的大纲的深度。默认值为 4。你可以指定一个大一些的数字,以保证所有在HTML中指定的H标签都能在大纲中生成对应的项,方便阅读时快速跳转。

    当指定了 --no-outline 参数时, 将不会输出大纲到PDF文档,所以再指定 --outline-depth 也就没有意义了。

3.3 页面对象参数

    --allow <path>                指定加载HTML中相对路径文件的目录(可重复使用此参数指定多个目录),这个参数会在后面进行更详细的讲解--background                  输出页面背景到PDF文档(这是默认设置)--no-background               不输出页面背景到PDF文档--cache-dir <path>            网页的缓存目录--checkbox-checked-svg <path> 使用指定的SVG文件渲染选中的复选框--checkbox-svg <path>         使用指定的SVG文件渲染未选中的筛选框--cookie <name> <value>       设置访问网页时的cookie,value 需要进行url编码(可重复使用此参数指定多个cookie)--custom-header <name> <value> 设置访问网页时的HTTP头(可重复使用此参数指定多个HTTP头)--custom-header-propagation   为每个要加载的资源添加由 --custom-header 指定的HTTP头--no-custom-header-propagation 不为每个要加载的资源添加由 --custom-header 指定的HTTP头--debug-javascript            显示javascript调试输出的信息--no-debug-javascript         不显示javascript调试输出的信息(这是默认设置)--default-header              添加一个默认的“头”,在页面的左头显示页面的名字,在页面的右头显示页码,这相对于进行了如下设置:--header-left='[webpage]'--header-right='[page]/[toPage]'--top 2cm--header-line--encoding <encoding>         为输入的文本设置默认的编码方式--disable-external-links      禁止页面中的外链生成超链接--enable-external-links       允许页面中的外链生成超链接(这是默认设置)--disable-forms               不转换HTML表单为PDF表单(这是默认设置)--enable-forms                转换HTML表单为PDF表单--images                      加载图片并输出到PDF文档(这是默认设置)--no-images                   在生成的PDF文档中过滤掉图片--disable-internal-links      禁止页面中的内链生成超链接--enable-internal-links       允许页面中的内链生成超连接(这是默认设置)
-n, --disable-javascript          禁止WEB页面执行 javascript--enable-javascript           允许WEB页面执行 javascript(这是默认设置)--javascript-delay <msec>     延迟一定的毫秒等待javascript 执行完成(默认值是200)--load-error-handling <handler> 指定当页面加载失败后的动作,可以指定为:abort(中止)、ignore(忽略)、skip(跳过)(默认值是:abort)--load-media-error-handling <handler> 指定当媒体文件加载失败后的动作,可以指定为:abort(中止)、ignore(忽略)、skip(跳过)(默认值是:ignore)--disable-local-file-access   不允许一个本地文件加载其他的本地文件,使用命令行参数`--allow` 指定的目录除外。--enable-local-file-access    允许本地文件加载其他的本地文件(这是默认设置)--minimum-font-size <int>     设置最小的字号,除非必要不推荐使用该参数--exclude-from-outline        拒绝加载当前页面到PDF文档的目录和大纲中--include-in-outline          加载当前页面到PDF文档的目录和大纲中(这是默认设置)--page-offset <offset>        设置页码的起始值(默认值为0)--password <password>         HTTP身份认证的密码--disable-plugins             禁止使用插件(这是默认设置)--enable-plugins              允许使用插件,但插件可能并不工作--post <name> <value>         添加一个POST字段,可以重复使用该参数添加多个POST字段。--post-file <name> <value>    添加一个POST文件,可以重复使用该参数添加多个文件。--print-media-type            用显示媒体类型代替屏幕--no-print-media-type         不用显示媒体类型代替屏幕
-p, --proxy <proxy>               使用代理
--radiobutton-checked-svg <path>  使用指定的SVG文件渲染选中的单选框
--radiobutton-svg <path>          使用指定的SVG文件渲染未选中的单选框
--run-sript <js>                  页面加载完成后执行一个附加的JS文件,可以重复使用此参数指定多个要在页面加载完成后要执行的JS文件。
--disable-smart-shrinking         不使用智能收缩策略
--enable-smart-shrinking          使用智能收缩策略(这是默认设置)
--stop-slow-scripts               停止运行缓慢的javascript代码(这是默认设置)
--no-stop-slow-scripts            不停止运行缓慢的javascript代码
--disable-toc-back-links          禁止从标题链接到目录(这是默认设置)
--enable-toc-back-links           允许从标题链接到目录
--user-style-sheet <url>          设置一个在每个页面都加载的用户自定义样式表
--username <username>             HTTP身谁的用户名
--viewport-size <>                设置窗口大小,需要你自定义滚动条或css属性来自适应窗口大小。
--window-status <windowStatus>    Wait until window.status is equal tothis string before rendering page
--zoom <float>                    设置转换成PDF时页面的缩放比例(默认为1)

也是一样我们找一些常用的来说明

  1. –background AND --no-background
    这两个参数是一对,用来指定是否在生成的PDF中应用网页的背景,默认 --background 参数是开启的,也就是说默认生成的PDF文档中是带有HTML页面的背景图片或背景色的。如果开启 --no-backgroupd 参数,则生成的PDF文档中不会有HTML页面中的背景图片和背景色。

  2. –debug-javascript ADN --no-debug-javascript
    这两个参数用来指定是否在标准输出中输出javascript的调试信息,默认 --no-debug-javasript 参数是开启的,也就是说默认不会输出javascript的调试信息。下图是打开 --debug-javascript 参数的演示。

  3. –disable-external-links AND --enable-external-links
    这两个参数是用来设置在页面中的外链是否以超链接的形式出现在PDF文档中。关于“外链”的定义请移架 术语定义 。默认 --enable-external-links 参数被打开,所以默认情况是页面中的外链是以超链接的形式出现的PDF文档中的,点击可以打开指定的网页。

  4. –exclude-from-outline AND --include-in-outline
    这两个参数用来设置当前页面对象是否包含到目录和大纲中。
    默认情况下 --include-in-outline 参数是打开的。也就是说默认情况下生成的PDF文档目录和大纲中是包含当前页面的,如果你不想让当前页面加到目录和大纲中可以打开 --exclude-from-outline 参数。

  5. –user-style-sheet
    这个参数用来加载一个用户自定义的样式表,用来改变HTML页面原有的样式。需要高度自定义页面新式的同学可以尝试使用这个参数达到目的。

3.4 页眉和页脚参数选项

--footer-center <text>        在页脚的居中部分显示页脚文本 <text>
--footer-font-name <name>     设置页脚的字体 (默认为 Arial)
--footer-font-size <size>     设置页脚的字体大小 (默认为 12)
--footer-html <url>           添加一个html作为页脚
--footer-left <text>          在页脚的居左部分显示页脚文本 <text>
--footer-line                 在页脚上方显示一条直线分隔正文
--no-footer-line              不使用直线分隔页脚与正文(这是默认设置)
--footer-right <text>         在页脚的居右部分显示页脚文本 <text>
--footer-spacing <real>       页脚与正文之间的距离(默认为零)--header-center <text>        在页眉的居中部分显示页眉文本 <text>
--header-font-name <name>     设置页眉的字体 (默认为 Arial)
--header-font-size <size>     设置页眉的字体大小 (默认为 12)
--header-html <url>           添加一个html作为页眉
--header-left <text>          在页眉的居左部分显示页眉文本 <text>
--header-line                 在页眉下方显示一条直线分隔正文
--no-header-line              不使用直线分隔页眉与正文(这是默认设置)
--header-right <text>         在页眉的居右部分显示页眉文本 <text>
--header-spacing <real>       页眉与正文之间的距离(默认为零)

3.5 目录对象参数

--disable-dotted-lines        在目录中不使用虚线
--toc-header-text <text>      设置目录的页眉文本
--toc-level-indentation <width> 第级标题在目录中的缩进宽度(默认为1em)
--disable-toc-links           在目录中不生成指向内容锚点的超链接
--toc-text-size-shrink <real> 在目录中每级标题的缩放比例(默认为0.8)
--xsl-style-sheet <file>      使用自定义的 XSL 样式表显示目录内容

默认的页面尺寸是 A4,你可以使用 --page-size 参数指定你想要的页面尺寸,如:A3,Letter 和 Legal等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/96161.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/96161.shtml
英文地址,请注明出处:http://en.pswp.cn/web/96161.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git常用命令大全:高效开发必备

目录 常用Git命令清单 1. 新建代码库 2. 配置 3. 增加/删除文件 4. 代码提交 5. 分支 6. 标签 7. 查看信息 8. 远程同步 9. 撤销 10. 常用操作组合 修改本地分支名和远程分支名 附录&#xff1a;Git命令思维导图 安装gitlab 常用Git命令清单 一般来说&#xff0…

AJAX入门-URL

本系列可作为前端学习系列的笔记&#xff0c;代码的运行环境是在VS code中&#xff0c;小编会将代码复制下来&#xff0c;大家复制下来就可以练习了&#xff0c;方便大家学习。 HTML、CSS、JavaScript系列文章 已经收录在前端专栏&#xff0c;有需要的宝宝们可以点击前端专栏查…

【深度学习新浪潮】什么是具身智能?

具身智能(Embodied AI)是人工智能与机器人技术深度融合的前沿领域,其核心是通过物理实体与环境的实时交互闭环,实现感知-认知-决策-行动的一体化自主进化。这类系统不仅能理解语言指令,更能通过高精度传感器(如触觉、视觉、力觉融合)感知物理世界,依托多模态大模型完成…

动画蓝图与动画状态机:从 Unity Mecanim 到 Unreal Animation Blueprint 的一把梭

动画蓝图与动画状态机&#xff1a;从 Unity Mecanim 到 Unreal Animation Blueprint 的一把梭这篇是系列的第一篇。目标很简单&#xff1a;把 Unreal 的 Animation Blueprint 和 Unity 的 Animator Controller&#xff08;Mecanim&#xff09; 放在同一张桌子上&#xff0c;系统…

实战案例:数字孪生+可视化大屏,如何高效管理智慧能源园区?

摘要&#xff1a; 当智慧遇上能源&#xff0c;一场管理革命正在悄然发生。想象一下&#xff1a;一个占地千亩的能源园区&#xff0c;光伏板、储能站、风力机组星罗棋布&#xff0c;传统管理模式下&#xff0c;数据分散、响应滞后、故障频发... 但某园区引入“数字孪生可视化大屏…

Django 从环境搭建到第一个项目

作为一名刚接触 Django 的开发者&#xff0c;我在学习过程中整理了这份入门笔记&#xff0c;涵盖 Django 框架基础、环境搭建、第一个项目创建以及核心配置&#xff0c;希望能为同样刚入门的小伙伴提供清晰的学习思路。 一、Django 框架基础认知 在开始实际操作前&#xff0c…

机器学习实操项目02——Pandas入门(基本操作、创建对象、查看数据、数据选择、处理缺失数据、数据合并、数据分组、时间序列、绘图、文件导出)

上一章&#xff1a;机器学习实操项目01——Numpy入门&#xff08;基本操作、数组形状操作、复制与试图、多种索引技巧、线性代数&#xff09; 下一章&#xff1a; 机器学习核心知识点目录&#xff1a;机器学习核心知识点目录 机器学习实战项目目录&#xff1a;【从 0 到 1 落地…

springboot超市货品信息管理系统

开发环境开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Mave…

c# .net中using的使用

using示例代码 示例代码1&#xff1a; using HttpContent httpContent new StringContent(postData, Encoding.UTF8);示例代码2&#xff1a; using (var process Process.Start(info)) {output process.StandardOutput.ReadToEnd(); }示例代码1写法&#xff1a; using HttpC…

STM32HAL 快速入门(二十):UART 中断改进 —— 环形缓冲区解决数据丢失

前言 大家好&#xff0c;这里是 Hello_Embed。上一篇我们用中断方式实现了 UART 收发&#xff0c;但发现一个关键问题&#xff1a;若 CPU 在处理其他任务时未及时重新使能接收中断&#xff0c;新数据会覆盖旧数据&#xff0c;导致丢失。本篇的核心改进方案是 ——“中断接收 环…

使用Docker搭建MaxKB智能体平台

1、系统要求 详见&#xff1a; https://maxkb.cn/docs/v2/quick_start https://maxkb.cn/docs/v2/installation/offline_installtion https://maxkb.cn/docs/v2/installation/online_installtion 2、安装Docker 合集&#xff1a;Docker安装与使用 3、安装MaxKB 详见&#xf…

宠物电商痛点破解:智能客服的关键作用

在宠物电商蓬勃发展的当下&#xff0c;行业面临着诸多痛点。从客户咨询的高频率到订单处理的复杂性&#xff0c;每一个环节都可能成为制约发展的瓶颈。而智能客服的出现&#xff0c;为这些痛点提供了有效的解决方案&#xff0c;成为宠物电商行业不可或缺的助力。一、宠物电商的…

基于GraphRAG+Ollama验证知识图谱和检索增强融合

之前介绍了知识图谱与检索增强的融合探索GraphRAG。 https://blog.csdn.net/liliang199/article/details/151189579 这里尝试在CPU环境&#xff0c;基于GraphRAGOllama&#xff0c;验证GraphRAG构建知识图谱和检索增强查询过程。 1 环境安装 1.1 GraphRAG安装 在本地cpu环境…

36页可编辑PPT | 某制造集团灯塔工厂解决方案

制造业企业订单种类多&#xff0c;传统产线换型慢&#xff0c;库存高&#xff0c;财务压力大。工人年龄大&#xff0c;招工难&#xff0c;工资涨&#xff0c;效率低。海外对手用低价和柔性产线抢单&#xff0c;国内同行用数字化缩短交期。企业想扩产&#xff0c;又怕投资重、回…

Redis 非缓存核心场景及实例说明

Redis 非缓存核心场景及实例说明 一、分布式锁 分布式锁用于解决分布式系统中多节点竞争同一资源的问题&#xff0c;确保操作原子性。Redis 实现分布式锁的核心思路是利用键的唯一性和原子命令&#xff0c;通常基于 Redisson 框架简化实现&#xff08;底层依赖 Redis 命令&…

【技术教程】如何将ONLYOFFICE文档集成到使用Spring Boot框架编写的Java Web应用程序中

在现代协作办公环境中&#xff0c;将功能强大的文档编辑器无缝集成到自有业务系统中&#xff0c;已成为提升工作效率和用户体验的关键需求。ONLYOFFICE 文档服务器提供了一套成熟的在线文档编辑解决方案&#xff0c;而 Java Spring Boot 则是构建高效、模块化 Web 应用的热门框…

openharmony之AV_CodeC音视频编解码模块详解(二)

1. 音频解码器函数调用流程 1.1 音频解码器架构概览 decoder:解码器 encoder:编码器 前面文章介绍了关于openHarmony的AV_CodeC模块,这篇文章将详细讲解编解码时函数的调用流程 音频解码器采用插件化架构,核心实现位于: services/engine/codec/audio/decoder/audio_ffmpeg…

PDF24 Creator:免费的多功能PDF工具

在处理PDF文件时&#xff0c;一个功能强大且免费的PDF工具是许多用户的首选。PDF24 Creator作为一款免费的PDF工具&#xff0c;提供了丰富的功能&#xff0c;帮助用户创建、编辑和转换PDF文件&#xff0c;满足从初学者到专业用户的各种需求。它不仅支持PDF与Word、Excel等15种以…

VBA 中使用 ADODB 操作 SQLite 插入中文乱码问题

问题 使用 VBA 的 ADODB 对象的 command 对象、parameter 对象&#xff0c;插入的中文数据为乱码 驱动下载、安装、引用 驱动网址(下载路径) 使用的 ODBC 驱动&#xff08;需要梯子才能下载&#xff0c;感谢大佬开源&#xff09; http://www.ch-werner.de/sqliteodbc/ 版本…

执行select * from a where rownum<1;,数据库子进程崩溃,业务中断。

文章目录环境症状触发条件解决方案环境 系统平台&#xff1a;Linux x86-64 Red Hat Enterprise Linux 7 版本&#xff1a;4.5.2 症状 执行select * from a where rownum<1;&#xff0c;数据库子进程崩溃&#xff0c;业务中断。 触发条件 select 和 where条件带有rownum…