无法使用 python PDFKIT 创建 pdf 错误:“找不到 wkhtmltopdf 可执行文件:”

Posted

技术标签:

【中文标题】无法使用 python PDFKIT 创建 pdf 错误:“找不到 wkhtmltopdf 可执行文件:”【英文标题】:Can't create pdf using python PDFKIT Error : " No wkhtmltopdf executable found:" 【发布时间】:2015-02-24 18:05:45 【问题描述】:

我尝试在我的 Windows 8 机器上安装 pdfkit Python API。我遇到了与路径相关的问题。

Traceback (most recent call last):
  File "C:\Python27\pdfcre", line 13, in <module>
    pdfkit.from_url('http://google.com', 'out.pdf')
  File "C:\Python27\lib\site-packages\pdfkit\api.py", line 22, in from_url
    configuration=configuration)
  File "C:\Python27\lib\site-packages\pdfkit\pdfkit.py", line 38, in __init__
    self.configuration = (Configuration() if configuration is None
  File "C:\Python27\lib\site-packages\pdfkit\configuration.py", line 27, in __init__
    'https://github.com/JazzCore/python-pdfkit/wiki/Installing-wkhtmltopdf' % self.wkhtmltopdf)
IOError: No wkhtmltopdf executable found: ""
If this file exists please check that this process can read it. Otherwise please install wkhtmltopdf - https://github.com/JazzCore/python-pdfkit/wiki/Installing-wkhtmltopdf

有人在 windows 机器上安装 Python PDFKIt 吗?如何解决此错误。

我的示例代码:

import pdfkit
import os
config = pdfkit.configuration(wkhtmltopdf='C:\\Python27\\wkhtmltopdf\bin\\wkhtmltopdf.exe')
pdfkit.from_url('http://google.com', 'out.pdf')

【问题讨论】:

【参考方案1】:

以下应该可以在不需要修改 windows 环境变量的情况下工作:

import pdfkit
path_wkhtmltopdf = r'C:\Program Files (x86)\wkhtmltopdf\bin\wkhtmltopdf.exe'
config = pdfkit.configuration(wkhtmltopdf=path_wkhtmltopdf)
pdfkit.from_url("http://google.com", "out.pdf", configuration=config)

当然假设路径是正确的(例如,在我的情况下,它是 r'C:\Program Files (x86)\wkhtmltopdf\bin\wkhtmltopdf.exe')。

【讨论】:

只是为了让可能没有管理员权限的读者明白,下载后不需要实际运行wkhtmltopdf安装程序,只需解压缩.exe,然后指向@987654323 @文件里面解压的.exe。对我来说(在没有权限的 Windows 机器上)这是我测试的所有 Python html-to-pdf 解决方案中最合适的(我也尝试过 weasyprint 和 xhtml2pdf)。 对于那些使用 VS Code 的人,重启 VS Code 或者只是终端。插入环境变量后。我得到了错误,但在重新启动 VS Code 后它工作了。【参考方案2】:

请使用 wkhtmltopdf 安装,

sudo apt install -y wkhtmltopdf

对于 Windows 机器,从下面的链接安装它,http://wkhtmltopdf.org/downloads.html

你需要将wkhtmltopdf路径添加到环境变量中

【讨论】:

您还需要根据此处的 pdfkit wiki 链接 github.com/JazzCore/python-pdfkit/wiki/Installing-wkhtmltopdf 将其添加到 Windows 上的 PATH【参考方案3】:

IOError: 'No wkhtmltopdf executable found'

确保您的 $PATH 中有 wkhtmltopdf 或通过自定义配置进行设置。 Windows 中的 where wkhtmltopdf 或 Linux 中的 which wkhtmltopdf 应该返回二进制文件的实际路径。

添加此配置行对我有用:

config = pdfkit.configuration(wkhtmltopdf="C:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf.exe")
pdfkit.from_string(html, 'MyPDF.pdf', configuration=config)

From github

看来您需要将configuration=config 作为参数传递。

【讨论】:

这是天赐之物......我一直在努力让 Weasyprint 或 PyQT5 做这样的事情一天。这很简单。谢谢!【参考方案4】:

我今天在学python,遇到了同样的问题,最近设置了windows环境变量,一切正常。 我将wkhtml的安装路径添加到路径中,例如:“D:\developAssistTools\wkhtmltopdf\bin;”是我的wkhtml的安装路径,我把它添加到路径中,一切OK。

import pdfkit
pdfkit.from_url("http://google.com", "out.pdf")

最后,我找到了一个 out.pdf。

【讨论】:

【参考方案5】:
import pdfkit
path_wkthmltopdf = b'C:\Program Files\wkhtmltopdf\\bin\wkhtmltopdf.exe'
config = pdfkit.configuration(wkhtmltopdf=path_wkthmltopdf)
pdfkit.from_url("http://google.com", "rajul-url.pdf", configuration=config)
pdfkit.from_file("output.xml","rajul-pdf.pdf", configuration=config)

上面的代码块对我来说工作得很好。请注意,需要转换的文件与创建pdf文件的目录相同。

【讨论】:

对我来说就像一个魅力,与来自 Anaconda3 的 Spyder 一起运行。【参考方案6】:

在windows平台上发现解码需要是二进制字符串,试试:

        path_wkthmltopdf = b'C:\Program Files\wkhtmltopdf\\bin\wkhtmltopdf.exe'
        config = pdfkit.configuration(wkhtmltopdf=path_wkthmltopdf)
        pdfkit.from_url(url=urlpath, output_path=pdffilepath,configuration=config)

【讨论】:

【参考方案7】:

你需要设置:

pdfkit.from_url('http://google.com', 'out.pdf',configuration=config)

【讨论】:

【参考方案8】: def urltopdf(url,pdf文件): 导入pdfkit ''' 输入 - 网址:目标网址 - pdffile : 目标 pdf 文件名 ''' path_wkthmltopdf = 'D:\\Program Files (x86)\\wkhtmltopdf\\bin\\wkhtmltopdf.exe' 配置 = pdfkit.configuration(wkhtmltopdf=path_wkthmltopdf) #pdfkit.from_url(url=urlpath, output_path=pdffilepath,configuration=config) pdfkit.from_url(url,pdffile,配置=配置) urltopdf('http://www.google.com','pdf/google.pdf')

非常好的解决方案! 谢谢大家!

【讨论】:

【参考方案9】:

当我尝试了上述所有方法时,我一直面临权限错误,因为我没有工作站的管理员权限。 如果您也是这种情况,请确保在安装 wkhtmltopdf.exe 时。安装的目标文件夹在您的 python site-packages 文件夹中,或将目录添加到 sys.path。 通常它被安装在程序文件文件夹中。 我更改了安装目录,这对我有用:

import pdfkit
pdfkit.from_url("http://google.com", "out.pdf")

【讨论】:

【参考方案10】:

[适用于 Ubuntu/Debian]

第一次运行:sudo apt-get update --fix-missing

然后:sudo apt-get install -y wkhtmltopdf

希望它能解决你的问题。

【讨论】:

【参考方案11】:

在 Mac 上遇到了同样的问题。出于某种原因 - 在卸载 pip 安装并使用 brew 重新安装 wkhtmltopdf 后它工作了

pip 卸载 wthtmltopdf

并使用 brew

brew install Caskroom/cask/wkhtmltopdf

【讨论】:

【参考方案12】:

无需将 wkhtmltopdf 路径写入代码。只需为此定义一个环境变量,它就可以工作。

import pdfkit
pdfkit.from_url('http://google.com', 'out.pdf')

对我来说,这段代码是有效的。

【讨论】:

以上是关于无法使用 python PDFKIT 创建 pdf 错误:“找不到 wkhtmltopdf 可执行文件:”的主要内容,如果未能解决你的问题,请参考以下文章

PDFkit 无法读取 html 以转换为 pdf(html 文件存在)

使用 Swift 5 - PDFKit 在 iOS 中编辑和保存现有的 pdf 文档

如何从使用 pdfkit 相机拍摄的图像创建 pdf

从 html 转换的 pdf 中的页码 - pdfkit、python/django

如何创建应用了布局的 pdf 文件。使用 pdfkit 宝石

如何在 python 中使用 pdfkit 指定 PDF 页面大小