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

时间:2014-12-28 05:19:50

标签: python api python-2.7 pdfkit

我尝试在我的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')

10 个答案:

答案 0 :(得分:16)

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

if (is_array($myVars)) { //is_array === true
    return array_map(__METHOD__, $myVars); // This will call __METHOD__ (getMyVars); and pass $myVars to it (which is an array).
} else { //This will never be reached.
    return $myVars;
}

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

答案 1 :(得分:8)

请使用

安装wkhtmltopdf
sudo apt-get install wkhtmltopdf

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

安装它

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

答案 2 :(得分:5)

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

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

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

答案 3 :(得分:5)

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作为参数。

答案 4 :(得分:1)

您需要设置

pdfkit.from_url(&#39; http://google.com&#39;,&#39; out.pdf&#39;,configuration = config)

答案 5 :(得分:1)

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文件的目录中。

答案 6 :(得分:0)

发现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 :(得分:0)

def urltopdf(url,pdffile):
    import pdfkit
    '''
        input
        - url : target url
        - pdffile : target pdf file name
    '''
    path_wkthmltopdf = 'D:\\Program Files (x86)\\wkhtmltopdf\\bin\\wkhtmltopdf.exe'
    config = pdfkit.configuration(wkhtmltopdf=path_wkthmltopdf)
    #pdfkit.from_url(url=urlpath, output_path=pdffilepath,configuration=config)
    pdfkit.from_url(url,pdffile,configuration=config)


urltopdf('http://www.google.com','pdf/google.pdf')

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

答案 8 :(得分:0)

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

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

答案 9 :(得分:-1)

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

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

对我来说,这段代码正常运作。