6

wkhtmltopdf を使用して、HTML コードから PDF を作成しようとしています。xhtml2pdf と pisa を使用しましたが、css スタイルに問題がありました。まあ、wkhtmltopdf は私の最後のオプションです。

私はこの手順に従いました。 https://github.com/incuna/django-wkhtmltopdf

sudo aptitude install libfontconfig
pip install django-wkhtmltopdf

INSTALLED_APPS に「wkhtmltopdf」を追加すると、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:

このチュートリアルに従って、miの問題を修正しました

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

解決済み:

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

0) ~/tmp/ ディレクトリを作成し、そこに移動します

cd ~
mkdir tmp
cd tmp

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

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/cear-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
4

4 に答える 4

2

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'

(つまり、 which によって返された場所)

注意which wkhtmltopdf: 空白が返される場合は、wkhtmltopdf が正しくインストールされていない可能性があります。https://wkhtmltopdf.org/downloads.htmlからダウンロードできます。

于 2016-11-08T02:38:23.353 に答える
2

別の解決策があります。pip インストールの上に、関連するバージョンの wkhtmltopdf バイナリをhttp://wkhtmltopdf.org/downloads.htmlからインストールするだけです。私の場合、これで問題は解決しました。

于 2016-12-11T19:23:05.137 に答える
1

次の手順に従って解決しました。

0) ~/tmp/ ディレクトリを作成し、そこに移動します

cd ~ 
mkdir tmp 
cd tmp

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

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/cear-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
于 2014-07-15T14:43:13.120 に答える