web-dev-qa-db-ja.com

wkhtmltopdf:Xサーバーに接続できません

私は 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サーバーなどが欠けていると思います。

108

静的な実行可能ファイルを/usr/bin/ディレクトリに移動して、どこからでも実行できることがわかりました。

5

またはこれを試してください( http://drupal.org/node/870058 から)

  1. wkhtmltopdfをダウンロードします。 または、パッケージマネージャーでインストールすることをお勧めします。

    Sudo apt-get install wkhtmltopdf
    
  2. 抽出して/usr/local/bin/に移動します

  3. 名前をwkhtmltopdfに変更すると、/usr/local/bin/wkhtmltopdfに実行可能ファイルができます。
  4. 権限を設定:Sudo chmod a+x /usr/local/bin/wkhtmltopdf
  5. 必要なサポートパッケージをインストールします。

    Sudo apt-get install openssl build-essential xorg libssl-dev
    
  6. 動作するかどうかを確認します:実行

    /usr/local/bin/wkhtmltopdf http://www.google.com test.pdf
    

    それが機能する場合、それで完了です。 「Xサーバーに接続できません」というエラーが表示された場合は、7番に進みます。

  7. 「仮想」xサーバーでヘッドレスで実行する必要があります。これを行うには、xvfbというパッケージを使用します。

    Sudo apt-get install xvfb
    
  8. Xvfbでwkhtmltopdfをラップする小さなシェルスクリプトを記述する必要があります。 wkhtmltopdf.shというファイルを作成し、次を追加します。

    xvfb-run -a -s "-screen 0 640x480x16" wkhtmltopdf "$@"
    
  9. このシェルスクリプトを/usr/local/binに移動し、アクセス許可を設定します。

    Sudo chmod a+x /usr/local/bin/wkhtmltopdf.sh
    
  10. もう一度機能するかどうかを確認します:実行します

    /usr/local/bin/wkhtmltopdf.sh http://www.google.com test.pdf
    

http://www.google.com は、「完了したResourceObjectが読み込み完了信号を受信しました。これは、iframeの読み込みに時間がかかっていることを示している可能性があります。」 http://www.example.comのような単純なページでテストすることもできます。

198
TimoSolo

これで問題が解決しました:

Sudo apt-get install xvfb
xvfb-run --server-args="-screen 0, 1024x768x24" wkhtmltopdf file1.html file2.pdf
60
syzspectroom

Sudo apt-get install wkhtmltopdfを実行しようとしましたが、成功しませんでした。代わりに、以下を試すことをお勧めします。

  1. 最新の実行可能ファイル(.11 rc1)をダウンロードします。

    wget https://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.11.0_rc1-static-i386.tar.bz2

  2. それを解凍します:

    tar -vxf wkhtmltopdf-0.11.0_rc1-static-i386.tar.bz2

  3. 名前を変更します:

    mv wkhtmltopdf-i386 wkhtmltopdf

  4. 実行可能ファイルにchmodします:

    chmod a+x wkhtmltopdf

  5. / usr/binに配置します。

    Sudo mv wkhtmltopdf /usr/bin

28
Yakob Ubaidi

ちょうどそれを作りました:

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

その作業はうまく

できます!

26
Sfblaauw

偽の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は非常に優れたソリューションを取得しましたが、ユーティリティを使用したリポジトリは変更されました。

16
PRIHLOP

ティモシーの答えを拡大しています...

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>');
11
Jonathan

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
<<
11
felixhummel

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
8
Matthias
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
6
GoTLiuM

問題はおそらく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
6
Honza

wkhtmltopdf> 0.11にはこのX-server問題はありません。
したがって、Linuxサーバーに0.12.2.1をインストールします。

  1. 最初にxvfbサーバーをインストールします。

    Sudo apt-get install xvfb
    
  2. http://wkhtmltopdf.org/downloads.html からwkhtmltopdfの必要なバージョンを取得します

  3. 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
    
  4. インストールの依存関係(必要な場合):

    Sudo apt-get -f install
    
  5. /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
    
  6. 以下を試してみてください、それは動作するはずです、

    /usr/local/bin/wkhtmltopdf http://www.google.com test.pdf
    

少なくとも0.12.2.1を使用することをお勧めします。

Wkhtmltopdf> = 0.12.2以降、Xサーバーやエミュレーションは不要になりました。 http://wkhtmltopdf.org/downloads.html から新しいバージョンをダウンロードできます

3
David Ginanni

私はここの指示に従って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サーバーで動作するはずです。

1
Cristian Vrabie

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があります

1
DmitrySemenov
  1. このリンク からファイルをダウンロードする
  2. 解凍して、実行可能ファイル(/ wkhtmltox/bin/wkhtmltopdf)を/usr/bin/に移動します
  3. 現在の名前がwkhtmltopdfでない場合、名前をwkhtmltopdfに変更します。これで、/usr/bin/wkhtmltopdfに実行ファイルがあります
  4. 権限を設定:Sudo chmod a + x/usr/bin/wkhtmltopdf
  5. 必要なサポートパッケージをインストールします。 Sudo apt-get install openssl build-essential xorg libssl-dev
  6. 次に、wkhtmltopdf http://www.google.com test.pdfヒントで確認します。 このリンクの詳細情報
0
Ratna Halder

バージョン0.12.4以降をインストールするだけです。これで問題が解決したようです。

buntu 16.04に最新のwkhtmltopdfをインストールするにはどうすればよいですか? を参照してください。

0
Martin Thoma

敵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

0

次のディレクトリにコピーする必要があります:/ 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
0
rapaelec