wkhtmltopdf Ошибка "Нет такого файла или каталога" (Django)

Я пытаюсь использовать wkhtmltopdf для создания PDF из кода HTML. Я использовал xhtml2pdf и Пизу, но у меня были проблемы со стилями CSS. хорошо, wkhtmltopdf - мой последний вариант.

Я следовал за этими шагами. https://github.com/incuna/django-wkhtmltopdf

sudo aptitude install libfontconfig
pip install django-wkhtmltopdf

и если я добавлю "wkhtmltopdf" в мой INSTALLED_APPS, он распознает путь wkhtmltopdf.

INSTALLED_APPS = ["wkhtmltopdf"]

Хорошо, когда я пытаюсь сгенерировать 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,
                                   )

В настройках:

WKHTMLTOPDF_CMD_OPTIONS = {
'quiet': True,
}

Моя ошибка:

 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

Я думаю, что это не может найти 'wkhtmltopdf'.

Мой путь установки wkhtmltopdf:

/home/user/.virtualenvs/app/local/lib/python2.7/site-packages/wkhtmltopdf/

ну добавлю в настройки:

WKHTMLTOPDF_CMD = '/home/user/.virtualenvs/app/local/lib/python2.7/site-packages/wkhtmltopdf/'

Чтобы найти wkhtmltopdf и appers "путь запрещен"

Что не так?, что не хватает?, в чем проблема?.

Я использую: Ububtu сервер 12.04/64 бит, Django 1.4, Pyrhon 2.7,

Спасибо за ваши ответы.

РЕДАКТИРОВАТЬ 1:

Я исправил эту проблему, следуя этой инструкции

http://www.cristalab.com/tutoriales/crear-pdf-en-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 

в настройках

WKHTMLTOPDF_CMD = "/usr/bin/wkhtmltopdf"

Но появилась новая ошибка:

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 

Решено:

----------- 14 июля -----------

0) Создайте каталог ~/tmp/ и перейдите в него

cd ~
mkdir tmp
cd tmp

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

 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

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

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 

4) доступ к "lib". там мы находим файл с именем 'libwkhtmltox.so', затем перемещаем его

cd ../libwkhtmltox/lib/
sudo cp libwkhtmltox.so /usr/local/lib/

5) доступ, чтобы включить, там мы находим папку с именем 'wkhtmltox', а затем переместите ее

cd ../include/
sudo cp -avr wkhtmltox/ /usr/local/include/

6) после распаковки файлов находим файл "wkhtmltopdf-amd64", перемещаем его.

cd ../../wkhtmltopdf/
sudo cp wkhtmltopdf-amd64 /usr/bin/

7) Я следил за этим постом. http://www.cristalab.com/tutoriales/crear-pdf-en-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

9) Я следил за этим постом, https://github.com/incuna/django-wkhtmltopdf

10) позже установить приложение

 pip install django-wkhtmltopdf

3 ответа

Решение

Я решил это следующим образом:

0) Создайте каталог ~/tmp/ и перейдите в него

cd ~ 
mkdir tmp 
cd tmp

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

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

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

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

4) доступ к "lib". там мы находим файл с именем 'libwkhtmltox.so', затем перемещаем его

cd ../libwkhtmltox/lib/ 
sudo cp libwkhtmltox.so /usr/local/lib/

5) доступ, чтобы включить, там мы находим папку с именем 'wkhtmltox', а затем переместите ее

cd ../include/ 
sudo cp -avr wkhtmltox/ /usr/local/include/

6) после распаковки файлов находим файл "wkhtmltopdf-amd64", перемещаем его.

cd ../../wkhtmltopdf/ 
sudo cp wkhtmltopdf-amd64 /usr/bin/

7) Я следил за этим постом. http://www.cristalab.com/tutoriales/crear-pdf-en-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

9) Я следил за этим постом, https://github.com/incuna/django-wkhtmltopdf

10) позже установить приложение

pip install django-wkhtmltopdf

Я столкнулся с этой проблемой после обновления Linux. Я нашел решение по этой ссылке: https://github.com/incuna/django-wkhtmltopdf/issues/75

В моем случае, основное решение - узнать, где хранится wkhtmltopdf, используя which:

$ which wkhtmltopdf
/usr/local/bin/wkhtmltopdf

Затем добавьте следующую строку в settings.py:

WKHTMLTOPDF_CMD = '/usr/local/bin/wkhtmltopdf'

(то есть местоположение, возвращаемое)

Есть и другое решение: поверх вашей pip-установки просто установите соответствующую версию двоичного файла wkhtmltopdf отсюда: http://wkhtmltopdf.org/downloads.html. В моем случае это решило проблему.

Самое простое решение этой проблемы:

Загрузите двоичную версию wkhtmltopdf в соответствии с вашей операционной системой

Ссылка для скачивания двоичного файла wkhtmltopdf

Добавьте ниже кодировку в settings.py вашего проекта.

WKHTMLTOPDF_CMD = '/usr/local/bin/wkhtmltopdf'
WKHTMLTOPDF_CMD_OPTIONS = {
    'quiet': True,
}

Это решит вашу проблему.

Другие вопросы по тегам