通过wkhtmltopdf导出支持CSS样式的pdf文件

本文介绍了如何通过wkhtmltopdf工具解决PHP项目中下载PDF文件无法识别CSS样式的问题。首先,详细讲解了wkhtmltopdf的下载与安装步骤,强调了安装路径不能含有中文和空格。接着,展示了在PHP中使用shell_exec函数调用wkhtmltopdf进行PDF生成的简单示例,以及如何结合HTML页面和PHP脚本实现在网站上下载带有CSS样式的PDF文件。
摘要由CSDN通过智能技术生成

在公司项目中发现有下载pdf文件的功能,但是不能识别CSS样式,导致下载的pdf文件格式显得很别扭,虽然能看但是难看。然后就是百度啊,google啊,最后找到一款能够识别CSS样式的软件—wkhtmltopdf。wkhtmltopdf可以直接把任何一个可以在浏览器中浏览的网页直接转换成一个pdf,首先说明一下它不是一个php 类,而是一个把html页面转换成pdf的一个软件(需要安装在服务器上),但是它并不是一个简单的桌面软件,而且它直接cmd批处理的,使用php中的 shell_exec()函数就可以调用它。

一,下载并安装wkhtmltopdf

1、下载地址:http://wkhtmltopdf.org/downloads.html 如图:
这里写图片描述

2、上面有各种平台下安装的安装包,英文不好的直接谷歌翻译一下。下面以 windows7平台上使用举例,我的下载的是stable(稳定版)的wkhtmltox-0.12.4_msvc2015-win64.exe这个版本。系统时几位就下载几位的安装包。下载好以后直接安装就可以了,注意安装路径要知道路径中不能含有中文和空格,所以不要安装在Program Files目录下,安装路径在下面会用到的。
这里写图片描述

3、安装好以后需要在系统环境变量变量名为”Path”的后添加:;D:\wkhtmltopdf\bin 也就是你安装的目录。安装好以后重启电脑。 这样就可以直接不带安装路径使用了。
这里写图片描述

二、PHP中测试使用效果

php里调用是很简单的,用shell_exec这个函数就可以了,如果shell_exec函数不能用看看php.ini里是否补禁用了(找到php.ini中的shell_exec函数,取消注释就可以了,一般都是可以直接用的)。简单举例:

<?php shell_exec("wkhtmltopdf http://www.baidu.com/ 1.pdf") ?>

你会发现在你php文件的同级目录中会生成一个1.pdf的文件
下面代码举例介绍如何在网站开发中使用它:主要功能是截取网页的部分传递到php中处理成pdf文档
html页面代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <script src="js/jquery-2.1.4.js"></script>
  <link rel="stylesheet" href="css/common.css" rel="external nofollow" rel="external nofollow" >
  <link rel="stylesheet" href="css/myCenter.css" rel="external nofollow" rel="external nofollow" >
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
回答: 使用wkhtmltopdf工具导出PDF时,可以使用一些参数来控制导出的结果。具体的参数可以参考以下命令模板:wkhtmltopdf 参数 shell_exec("D:\wkhtmltopdf\bin\wkhtmltopdf.exe --page-size A4 -q -B 0 -L 0 -R 0 -T 0 --no-pdf-compression 1html 1.pdf")。\[1\] 这个命令模板中的参数包括: - --page-size A4:设置页面大小为A4。 - -q:设置静默模式,不显示任何输出。 - -B 0 -L 0 -R 0 -T 0:设置页面的边距为0,即无边距。 - --no-pdf-compression:禁用PDF压缩,以保持原始质量。 这些参数可以根据具体需求进行调整,以满足导出PDF的要求。同时,wkhtmltopdf是一个开源的命令行工具,可以将HTML渲染为PDF和其他图像格式,使用Qt WebKit渲染引擎,完全“无头”运行,不需要显示器或显示服务。\[2\] 另外,如果需要在生成的PDF中添加水印,可以使用页眉设置HTML的方式来显示水印,通过设置before和after伪元素来添加水印图片。\[3\] #### 引用[.reference_title] - *1* [wkhtmltopdf 导出pdf 样例](https://blog.csdn.net/u011713224/article/details/90518707)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [使用Wkhtmltopdf导出PDF](https://blog.csdn.net/qq_40603422/article/details/115763450)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [wkhtmltopdf导出html到pdf](https://blog.csdn.net/weixin_30753873/article/details/95972499)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值