无法使用 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 文档
从 html 转换的 pdf 中的页码 - pdfkit、python/django