wkhtmltopdf错误“没有这样的文件或目录”(Django)

Jav*_*per 6 python django pisa wkhtmltopdf xhtml2pdf

我正在尝试使用wkhtmltopdf从HTML代码创建PDF。我使用过xhtml2pdf和pisa,但是我在使用CSS样式时遇到了问题。好吧,wkhtmltopdf是我的最后选择。

我已经按照这个步骤了。 https://github.com/incuna/django-wkhtmltopdf

sudo aptitude install libfontconfig
pip install django-wkhtmltopdf
Run Code Online (Sandbox Code Playgroud)

如果我在INSTALLED_APPS中添加“ wkhtmltopdf”,它将识别出wkhtmltopdf路径。

INSTALLED_APPS = ["wkhtmltopdf"]
Run Code Online (Sandbox Code Playgroud)

好吧,当我尝试生成PDF时会生成错误。

这是我的代码:

from wkhtmltopdf.views import PDFTemplateResponse 

 context = {
            'linkedin1':self.linkedin1,
            'twitter1':self.twitter1,
            'facebook1':self.facebook1,
            'current': get_current_base_url,
           }


    html_path = "app/folder/page1_1.html"
    response = PDFTemplateResponse(request=request,
                                   template=html_path,
                                   filename="hello.pdf",
                                   context= context,
                                   show_content_in_browser=False,
                                   cmd_options=settings.WKHTMLTOPDF_CMD_OPTIONS,
                                   )
Run Code Online (Sandbox Code Playgroud)

在设置中:

WKHTMLTOPDF_CMD_OPTIONS = {
'quiet': True,
}
Run Code Online (Sandbox Code Playgroud)

我的错误:

 File "/home/user/.virtualenvs/app/local/lib/python2.7/site-   packages/django/core/handlers/base.py", line 136, in get_response
response = response.render()
 File "/home/user/.virtualenvs/app/local/lib/python2.7/site-packages/django/template/response.py", line 104, in render
self._set_content(self.rendered_content)
File "/home/user/.virtualenvs/app/local/lib/python2.7/site- packages/wkhtmltopdf/views.py", line 144, in rendered_content
footer_filename=footer_filename)
File "/home/user/.virtualenvs/app/local/lib/python2.7/site-packages/wkhtmltopdf/views.py", line 103, in convert_to_pdf
return wkhtmltopdf(pages=[filename], **cmd_options)
File "/home/user/.virtualenvs/app/local/lib/python2.7/site-packages/wkhtmltopdf/utils.py", line 92, in wkhtmltopdf
return check_output(ck_args, **ck_kwargs)
File "/usr/lib/python2.7/subprocess.py", line 537, in check_output
process = Popen(stdout=PIPE, *popenargs, **kwargs)
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1259, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
Run Code Online (Sandbox Code Playgroud)

我认为找不到'wkhtmltopdf'。

我的wkhtmltopdf安装路径为:

/home/user/.virtualenvs/app/local/lib/python2.7/site-packages/wkhtmltopdf/
Run Code Online (Sandbox Code Playgroud)

好吧,我添加设置:

WKHTMLTOPDF_CMD = '/home/user/.virtualenvs/app/local/lib/python2.7/site-packages/wkhtmltopdf/'
Run Code Online (Sandbox Code Playgroud)

查找wkhtmltopdf和appers“路径许可被拒绝”

有什么问题吗?缺少什么?有什么问题?

我正在使用:Ububtu服务器12.04 / 64位,Django 1.4,Pyrhon 2.7,

感谢您的回答。

编辑1:

我在本教程后解决了mi问题

http://www.cristalab.com/tutoriales/crear-pdf-zh-CN-django-y-virtualenv-c110664l/

apt-get build-dep libqt4-gui libqt4-network libqt4-webkit
apt-get install openssl build-essential xorg git-core git-doc libssl-dev wkhtmltopdf 
Run Code Online (Sandbox Code Playgroud)

在设置中

WKHTMLTOPDF_CMD = "/usr/bin/wkhtmltopdf"
Run Code Online (Sandbox Code Playgroud)

但是出现了新的错误:

File "/home/user/.virtualenvs/app/local/lib/python2.7/site- packages/django/template/response.py", line 104, in render
self._set_content(self.rendered_content)
File "/home/user/.virtualenvs/app/local/lib/python2.7/site-  packages/wkhtmltopdf/views.py", line 144, in rendered_content
footer_filename=footer_filename)
File "/home/user/.virtualenvs/app/local/lib/python2.7/site-packages/wkhtmltopdf/views.py", line 103, in convert_to_pdf
return wkhtmltopdf(pages=[filename], **cmd_options)
File "/home/user/.virtualenvs/app/local/lib/python2.7/site-packages/wkhtmltopdf/utils.py", line 92, in wkhtmltopdf
return check_output(ck_args, **ck_kwargs)
File "/usr/lib/python2.7/subprocess.py", line 544, in check_output
raise CalledProcessError(retcode, cmd, output=output)
CalledProcessError: Command '['/usr/bin/wkhtmltopdf', '--encoding', u'utf8', '--quiet', '/tmp/wkhtmltopdfE_THjv.html', '-']' returned non-zero exit status 
Run Code Online (Sandbox Code Playgroud)

解决了:

----------- 7月14日-----------

0)创建一个〜/ tmp /目录并切换到该目录

cd ~
mkdir tmp
cd tmp
Run Code Online (Sandbox Code Playgroud)

1)来自http://code.google.com/p/wkhtmltopdf/downloads/list的 libwkhtmltox-0.11.0_rc1-amd64.tar.bz2和wkhtmltopdf-0.11.0_rc1-static-amd64.tar.bz2

 wget https://wkhtmltopdf.googlecode.com/files/libwkhtmltox-0.11.0_rc1-amd64.tar.bz2

 wget https://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.11.0_rc1-static-amd64.tar.bz2
Run Code Online (Sandbox Code Playgroud)

2)创建子文件夹并将文件移动到其中:

 mkdir libwkhtmltox
 mkdir wkhtmltopdf

 mv libwkhtmltox-0.11.0_rc1-amd64.tar.bz2 libwkhtmltox
 mv wkhtmltopdf-0.11.0_rc1-static-amd64.tar.bz2 wkhtmltopdf
Run Code Online (Sandbox Code Playgroud)

3)进入先前创建的文件夹并解压缩文件。

 cd libwkhtmltox
 tar -xvjf libwkhtmltox-0.11.0_rc1-amd64.tar.bz2 
 cd ../wkhtmltopdf
 tar -xvjf wkhtmltopdf-0.11.0_rc1-static-amd64.tar.bz2 
Run Code Online (Sandbox Code Playgroud)

4)访问“ lib”。在那里我们找到了一个名为“ libwkhtmltox.so”的文件,然后将其移动

cd ../libwkhtmltox/lib/
sudo cp libwkhtmltox.so /usr/local/lib/
Run Code Online (Sandbox Code Playgroud)

5)访问include,我们在其中找到一个名为“ wkhtmltox”的文件夹,然后将其移动

cd ../include/
sudo cp -avr wkhtmltox/ /usr/local/include/
Run Code Online (Sandbox Code Playgroud)

6)解压缩文件后,我们找到文件“ wkhtmltopdf-amd64”,将其移动。

cd ../../wkhtmltopdf/
sudo cp wkhtmltopdf-amd64 /usr/bin/
Run Code Online (Sandbox Code Playgroud)

7)我一直在关注这个帖子。http://www.cristalab.com/tutoriales/crear-pdf-zh-CN-django-y-virtualenv-c110664l/

8)安装

sudo aptitude install libfontconfig

sudo apt-get build-dep libqt4-gui libqt4-network libqt4-webkit 

sudo apt-get install openssl build-essential xorg git-core git-doc libssl-dev wkhtmltopdf
Run Code Online (Sandbox Code Playgroud)

9)我正在关注这篇文章,https://github.com/incuna/django-wkhtmltopdf

10)以后安装应用程序

 pip install django-wkhtmltopdf
Run Code Online (Sandbox Code Playgroud)

Jav*_*per 1

我按照以下步骤解决了它:

\n\n

0) 创建 ~/tmp/ 目录并进入其中

\n\n
cd ~ \nmkdir tmp \ncd tmp\n
Run Code Online (Sandbox Code Playgroud)\n\n

1) libwkhtmltox-0.11.0_rc1-amd64.tar.bz2 和 wkhtmltopdf-0.11.0_rc1-static-amd64.tar.bz2 来自http://code.google.com/p/wkhtmltopdf/downloads/list

\n\n
wget https://wkhtmltopdf.googlecode.com/files/libwkhtmltox-0.11.0_rc1-amd64.tar.bz2\n\nwget https://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.11.0_rc1-static-amd64.tar.bz2\n
Run Code Online (Sandbox Code Playgroud)\n\n

2)创建子文件夹并将文件移入其中:

\n\n
mkdir libwkhtmltox \nmkdir wkhtmltopdf\n\nmv libwkhtmltox-0.11.0_rc1-amd64.tar.bz2 libwkhtmltox \nmv wkhtmltopdf-0.11.0_rc1-static-amd64.tar.bz2 wkhtmltopdf\n
Run Code Online (Sandbox Code Playgroud)\n\n

3)进入之前创建的文件夹并解压缩文件。

\n\n
cd libwkhtmltox tar -xvjf libwkhtmltox-0.11.0_rc1-amd64.tar.bz2 \ncd   ../wkhtmltopdf tar -xvjf wkhtmltopdf-0.11.0_rc1-static-amd64.tar.bz2\n
Run Code Online (Sandbox Code Playgroud)\n\n

4) 访问\xe2\x80\x98lib\xe2\x80\x99。在那里我们找到一个名为 \xe2\x80\x98libwkhtmltox.so\xe2\x80\x99 的文件,然后将其移动

\n\n
cd ../libwkhtmltox/lib/ \nsudo cp libwkhtmltox.so /usr/local/lib/\n
Run Code Online (Sandbox Code Playgroud)\n\n

5)访问include,在那里我们找到一个名为\xe2\x80\x98wkhtmltox\xe2\x80\x99的文件夹,然后将其移动

\n\n
cd ../include/ \nsudo cp -avr wkhtmltox/ /usr/local/include/\n
Run Code Online (Sandbox Code Playgroud)\n\n

6) 解压文件后,我们找到文件 \xe2\x80\x9cwkhtmltopdf-amd64\xe2\x80\x9d,将其移动。

\n\n
cd ../../wkhtmltopdf/ \nsudo cp wkhtmltopdf-amd64 /usr/bin/\n
Run Code Online (Sandbox Code Playgroud)\n\n

7)我正在关注这篇文章。http://www.cristalab.com/tutoriales/crear-pdf-en-django-y-virtualenv-c110664l/

\n\n

8)安装

\n\n
sudo aptitude install libfontconfig\n\nsudo apt-get build-dep libqt4-gui libqt4-network libqt4-webkit\n\nsudo apt-get install openssl build-essential xorg git-core git-doc libssl-dev wkhtmltopdf\n
Run Code Online (Sandbox Code Playgroud)\n\n

9)我正在关注这篇文章,https://github.com/incuna/django-wkhtmltopdf

\n\n

10)稍后安装应用程序

\n\n
pip install django-wkhtmltopdf\n
Run Code Online (Sandbox Code Playgroud)\n