私は wkthmltopdf を使用して、Linux WebサーバーでHTMLをPDFドキュメントにオンザフライで変換しています。プログラムはもともと正しく実行するためにX11または同様のXサーバーを必要としましたが、GUIのないサーバー上でこれを実行するという開発者からの多くの要求を通じて、仮想Xサーバーを 静的バージョン で実行することはかなり確信しています。私は静的(スタンドアロン)バージョンのプログラムを使用していましたが、うまく機能します!実行可能ファイルをフォルダーに入れて実行します:
./wkhtmltopdf file1.html file2.pdf
ただし、このプログラムをシステム全体にインストールしたいと思います。 apt-get install wkhtmltopdf
(昨日インストールしたばかり)を使用しました。64ビットシステムで実行しているため、apt-get install ia32-libs
も必要でした。インストール後、次のようなバージョンを見つけることができます。
wkhtmltopdf --version
出力:
Name:
wkhtmltopdf 0.9.9
License:
Copyright (C) 2008,2009 Wkhtmltopdf Authors.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it. There is NO
WARRANTY, to the extent permitted by law.
Authors:
Written by Jakob Truelsen. Patches by Mário Silva, Benoit Garret and Emmanuel
Bouthenot.
Aptitudeを介してインストールされたプログラムを実行しようとすると、次のエラーが表示されます。
wkhtmltopdf: cannot connect to X server
誰も私がこれを修正する方法を知っていますか?このバージョンには仮想Xサーバーなどが欠けていると思います。
静的な実行可能ファイルを/usr/bin/
ディレクトリに移動して、どこからでも実行できることがわかりました。
またはこれを試してください( http://drupal.org/node/870058 から)
wkhtmltopdfをダウンロードします。 または、パッケージマネージャーでインストールすることをお勧めします。
Sudo apt-get install wkhtmltopdf
抽出して/usr/local/bin/
に移動します
wkhtmltopdf
に変更すると、/usr/local/bin/wkhtmltopdf
に実行可能ファイルができます。Sudo chmod a+x /usr/local/bin/wkhtmltopdf
必要なサポートパッケージをインストールします。
Sudo apt-get install openssl build-essential xorg libssl-dev
動作するかどうかを確認します:実行
/usr/local/bin/wkhtmltopdf http://www.google.com test.pdf
それが機能する場合、それで完了です。 「Xサーバーに接続できません」というエラーが表示された場合は、7番に進みます。
「仮想」xサーバーでヘッドレスで実行する必要があります。これを行うには、xvfbというパッケージを使用します。
Sudo apt-get install xvfb
Xvfbでwkhtmltopdfをラップする小さなシェルスクリプトを記述する必要があります。 wkhtmltopdf.sh
というファイルを作成し、次を追加します。
xvfb-run -a -s "-screen 0 640x480x16" wkhtmltopdf "$@"
このシェルスクリプトを/usr/local/bin
に移動し、アクセス許可を設定します。
Sudo chmod a+x /usr/local/bin/wkhtmltopdf.sh
もう一度機能するかどうかを確認します:実行します
/usr/local/bin/wkhtmltopdf.sh http://www.google.com test.pdf
http://www.google.com は、「完了したResourceObjectが読み込み完了信号を受信しました。これは、iframeの読み込みに時間がかかっていることを示している可能性があります。」 http://www.example.com
のような単純なページでテストすることもできます。
これで問題が解決しました:
Sudo apt-get install xvfb
xvfb-run --server-args="-screen 0, 1024x768x24" wkhtmltopdf file1.html file2.pdf
Sudo apt-get install wkhtmltopdf
を実行しようとしましたが、成功しませんでした。代わりに、以下を試すことをお勧めします。
最新の実行可能ファイル(.11 rc1)をダウンロードします。
wget https://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.11.0_rc1-static-i386.tar.bz2
それを解凍します:
tar -vxf wkhtmltopdf-0.11.0_rc1-static-i386.tar.bz2
名前を変更します:
mv wkhtmltopdf-i386 wkhtmltopdf
実行可能ファイルにchmodします:
chmod a+x wkhtmltopdf
/ usr/binに配置します。
Sudo mv wkhtmltopdf /usr/bin
ちょうどそれを作りました:
1- wkhtmltopdf依存関係をダウンロードするには
# apt-get install wkhtmltopdf
2-ソースからダウンロード
# wget http://downloads.sourceforge.net/project/wkhtmltopdf/xxx.deb
# dpkg -i xxx.deb
3-試してみる
# wkhtmltopdf http://google.com google.pdf
その作業はうまく
できます!
偽のXサーバーなしでこの問題を解決する方法を見つけました。 wkhtmltopdfの最新バージョンでは、作業にXサーバーは必要ありませんが、公式のlinuxリポジトリには必要ありません。
buntu 14.04.4 LTS(trusty)i386のソリューション
$ Sudo apt-get install xfonts-75dpi
$ wget http://download.gna.org/wkhtmltopdf/0.12/0.12.2/wkhtmltox-0.12.2_linux-trusty-i386.deb
$ Sudo dpkg -i wkhtmltox-0.12.2_linux-trusty-i386.deb
$ wkhtmltopdf http://www.google.com test.pdf
buntu 14.04.4 LTS(trusty)AMD64のソリューション
$ Sudo apt-get install xfonts-75dpi
$ wget http://download.gna.org/wkhtmltopdf/0.12/0.12.2/wkhtmltox-0.12.2_linux-trusty-AMD64.deb
$ Sudo dpkg -i wkhtmltox-0.12.2_linux-trusty-AMD64.deb
$ wkhtmltopdf http://www.google.com test.pdf
ユーザーfelixhummelは非常に優れたソリューションを取得しましたが、ユーティリティを使用したリポジトリは変更されました。
ティモシーの答えを拡大しています...
Webアプリの一部としてwkhtmltopdfを使用するWeb開発者の場合、次のように/usr/bin/
フォルダーにインストールするだけです。
cd /usr/bin/
curl -C - -O http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.11.0_rc1-static-i386.tar.bz2
tar -xvjf wkhtmltopdf-0.11.0_rc1-static-i386.tar.bz2
mv wkhtmltopdf-i386 wkhtmltopdf
これで、wkhtmltopdf
を使用してどこでも実行できます。
私は個人的に Snappy PHPのライブラリを使用しています。 PDFを簡単に作成できる例を次に示します。
<?php
// Create new PDF
$pdf = new \Knp\Snappy\Pdf('wkhtmltopdf');
// Set output header
header('Content-Type: application/pdf');
// Generate PDF from HTML
echo $pdf->getOutputFromHtml('<h1>Title</h1><p>Your content goes here.</p>');
SourceForgeから最新のwkhtmltopdfバージョンに更新します(この記事の執筆時点では0.12)。 X Serverを実行する必要はありません。
Ubuntu 14.04の例:
$ cd /tmp/
$ wget -q http://downloads.sourceforge.net/project/wkhtmltopdf/0.12.2.1/wkhtmltox-0.12.2.1_linux-trusty-AMD64.deb
$ dpkg -x wkhtmltox-0.12.2.1_linux-trusty-AMD64.deb foo
$ echo '<p>hi</p>' | ./foo/usr/local/bin/wkhtmltopdf - /tmp/hi.pdf
Loading pages (1/6)
Counting pages (2/6)
Resolving links (4/6)
Loading headers and footers (5/6)
Printing pages (6/6)
Done
$ head -n3 /tmp/hi.pdf
%PDF-1.4
1 0 obj
<<
14.04.1-Ubuntuの場合 https://wkhtmltopdf.org/downloads.html
wget https://downloads.wkhtmltopdf.org/0.12/0.12.4/wkhtmltox-0.12.4_linux-generic-AMD64.tar.xz -O mktemp.tar.xz
tar xf mktemp.tar.xz
Sudo cp wkhtmltox/bin/wkhtmltopdf /usr/bin/wkhtmltopdf
Sudo chmod +x /usr/bin/wkhtmltopdf
rm mktemp.tar.xz
rm wkhtmltox -rf
apt-get update
apt-get install -y libxrender1 libxtst6 libxi6
wkhtmltopdf http://www.google.com test.pdf
Sudo -i
apt-get install wkhtmltopdf xvfb libicu48
mv /usr/bin/wkhtmltopdf /usr/bin/wkhtmltopdf-Origin
touch /usr/bin/wkhtmltopdf && chmod +x /usr/bin/wkhtmltopdf && cat > /usr/bin/wkhtmltopdf << END
#!/bin/bash
/usr/bin/xvfb-run -a -s "-screen 0 1024x768x24" /usr/bin/wkhtmltopdf-Origin "\$@"
END
問題はおそらくwkhtmltopdfの古いバージョンにあります-ディストリビューションリポジトリのバージョン0.9ではXサーバーを実行する必要がありますが、現在のバージョン-0.12.2.1では必要ありません-実行できますヘッドレス。
http://wkhtmltopdf.org/downloads.html からディストリビューション用のパッケージをダウンロードしてインストールします-Ubuntuの場合:
Sudo apt-get install xfonts-75dpi
Sudo dpkg -i wkhtmltox-0.12.2.1_linux-trusty-AMD64.deb
wkhtmltopdf
> 0.11
にはこのX-server
問題はありません。
したがって、Linuxサーバーに0.12.2.1
をインストールします。
最初にxvfbサーバーをインストールします。
Sudo apt-get install xvfb
http://wkhtmltopdf.org/downloads.html からwkhtmltopdfの必要なバージョンを取得します
Wkhtmltopdfをインストールします。
Sudo dpkg -i wkhtmltox-0.12.2.1_linux-trusty-AMD64.deb
またはwget
でインストールします
URL='http://download.gna.org/wkhtmltopdf/0.12/0.12.2.1/wkhtmltox-0.12.2.1_linux-trusty-AMD64.deb'; FILE=`mktemp`; wget "$URL" -qO $FILE && Sudo dpkg -i $FILE; rm $FILE
インストールの依存関係(必要な場合):
Sudo apt-get -f install
/usr/local/bin/
にシンボリックリンクを作成します。
echo 'exec xvfb-run -a -s "-screen 0 640x480x16" wkhtmltopdf "$@"' | Sudo tee /usr/local/bin/wkhtmltopdf.sh >/dev/null
Sudo chmod a+x /usr/local/bin/wkhtmltopdf.sh
以下を試してみてください、それは動作するはずです、
/usr/local/bin/wkhtmltopdf http://www.google.com test.pdf
少なくとも0.12.2.1を使用することをお勧めします。
Wkhtmltopdf> = 0.12.2以降、Xサーバーやエミュレーションは不要になりました。 http://wkhtmltopdf.org/downloads.html から新しいバージョンをダウンロードできます
私はここの指示に従ってwkhtmltopdfを機能させましたが、wkhtmltopdf
-xvfb
を使って自分自身の小さなダンスをしているときに発見した少しの視点を提供したいと思います。
これは、悪名高いcannot connect to X server
エラーをスローする原因と同じ理由により、Xサーバーを提供したとしても、厳しい制限で実行されるため、重要です。これらの制限には、複数の入力ソースの取得、ヘッダーとフッターの設定などができないことが含まれます(マニュアルの Reduced Functionalityセクション を確認してください)。
wkhtmltox
自体はX11を必要としませんが、必要なQTライブラリを利用しています。 wkthmltoxの新しいバージョンでは、開発者はQTのパッチを作成し、X11で実行できるようにしました。
現在、パッチを適用したQTに対してビルドされているバージョンとそうでないバージョンがあります。 wkhtmltopds --version
を実行してバージョンを確認できます。最後にCompiled against wkhtmltopdf patched qt.
という行が必要です
結論として、パッチを適用したライブラリを使用するバージョンをインストールして使用する場合、確認できるように、xvfb
サーバーがなくてもLinuxサーバーで動作するはずです。
Centos7のソリューション:
yum -y install xorg-x11-fonts-75dpi \
xorg-x11-fonts-Type1 \
&& rpm -Uvh http://download.gna.org/wkhtmltopdf/0.12/0.12.2.1/wkhtmltox-0.12.2.1_linux-centos7-AMD64.rpm
Dockerコンテナ内でこの問題が発生し、上記のインストールにはパッチが適用されたQTでwkhtmltopdfがあります
/usr/bin/
に移動します/usr/bin/wkhtmltopdf
に実行ファイルがありますwkhtmltopdf http://www.google.com test.pdf
ヒントで確認します。 このリンクの詳細情報バージョン0.12.4以降をインストールするだけです。これで問題が解決したようです。
敵64ビット使用:
wget http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.9.9-static-AMD64.tar.bz2
tar xvjf wkhtmltopdf-0.9.9-static-AMD64.tar.bz2
Sudo mv wkhtmltopdf-AMD64/usr/bin/wkhtmltopdf
Sudo chmod + x/usr/bin/wkhtmltopdf
次のディレクトリにコピーする必要があります:/ usr/local/bin、実行可能にし、wkhtmltopdf.shのシンボリックリンクを追加します:
1-コマンド:
Sudo apt-get install wkhtmltopdf
2-ディレクトリにバイナリを挿入/ usr/binwkhtmltopdf.shをディレクトリにコピーする必要があります/ usr/local/binこのディレクトリでブラウザに次のような許可が与えられます。
Sudo cp /usr/bin/wkhtmltopdf.sh /usr/local/bin/wkhtmltopdf.sh
3-make surの後、バイナリに次のような実行許可が与えられます。
Sudo chmod a+x /usr/local/bin/wkhtmltopdf.sh
4-これでテストできるようになり、次のように動作します:
/usr/local/bin/wkhtmltopdf.sh http://www.google.com google.pdf
ターミナルの現在のディレクトリにPDFをダウンロードします
5-オプションで、ディレクトリにシンボリックリンクを追加できます/ usr/local/bin like
ln -s /usr/local/bin/wkhtmltopdf.sh /usr/local/bin/wkhtmltopdf