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


113

私はLinux Webサーバー上でオンザフライでHTMLをPDFドキュメントに変換するためにwkthmltopdfを使用しています。プログラムは元々、正しく実行するために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サーバーか何かが欠けていると思います。

回答:


206

またはこれを試してください(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は「AはResourceObjectがローディング終了信号を受信し終えた。これは、長い負荷へのIFRAMEの撮影の指示かもしれない。」のようなエラーをスローすることが のような単純なページでテストすることもできますhttp://www.example.com


1
私は最初にそのチュートリアルを試しましたが、うまくいきませんでした。また、シンボリックリンクでラッパーを作成する必要がありませんでした。私の回答で書いたように、静的実行可能ファイルを/usr/bin/ディレクトリに移動するだけで、どこからでも使用できます。彼らは静的な実行可能ファイルに仮想xサーバーを追加したので、ラッパースクリプトを作成する必要はありません。
jeffery_the_wind

それは私のために働いた..いくつかの状況で。不足している32ビットライブラリをインストールすることで問題が解決したと思います-そのヒントをありがとう
TimoSolo

番号6のステートメントはIf you get the error "Cannot connect to X server" then continue to number 6.どういう意味ですか?私はこれに非常に混乱しています。あなたは7番に続くと言うつもりですか?
Noz 2013

はい、それが意味することです...元の記事はアイテムに間違った番号を付けていました。それでは#7に進んでください
dwaz

おかげで、番号を付け直しました。提案された回答はほとんどの場合に機能するはずなので、まず試してください
TimoSolo

61

これは私のために問題を解決しました:

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

wkhtmltopdfの標準インストールにはxサーバーが含まれていないため、これが最も簡単で安全な方法です。
Peter

これは、ほとんどの場合に「Xサーバーに接続できない」ことを解決する方法です。
tripleee 2016年

2
Redhatベースのディストリビューションでは、sudo yum install xorg-x11-server-Xvfbrespを使用します。sudo dnf install xorg-x11-server-Xvfb
TNT

28

私はやろうとした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


code.google.com/p/wkhtmltopdf/issues/detail?id=730は、vs 11.0_rc1に問題があるようです
montrealmike

これは私にとってはうまくいきましたが、pdfの生成に失敗したため、上記の指示をhttps://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.9.9-static-i386.tar.bz2
martincarlin87

1
wkhtmltox-linux-amd64_0.12.0-03c001d.tar.xzをダウンロードすると、今はうまくいきます。どういうわけか、最新のものはそうではありません。
chasetheskyforever 2014

1
(ATM最新の安定バージョンを取得)のwget:私は私のために働いたこれを確認することができますdownload.gna.org/wkhtmltopdf/0.12/0.12.3/...タール-vxf wkhtmltox-0.12.3_linux汎用-amd64.tar.xzます。chmod A + x wkhtmltox / bin / wkhtmltopdf sudo mv wkhtmltopdf / usr / local / bin / wkhtmltopdf
Magico

27

ちょうどそれを作った:

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

正常に動作しています

できます!


apt-get install -f依存関係を取得するには、パッケージのインストール後に実行する必要がありました。そうでなければ魅力のように働いた。説明されている他の方法よりもこの方法を優先します。
dmuir 2015年

2
同意する。この解決策により、現在の収益が得られました。dpkg -iコマンドはいくつかのあいまいな情報を生成しましたが、それにもかかわらず、それは機能しました: wget -q http://downloads.sourceforge.net/project/wkhtmltopdf/0.12.2.1/wkhtmltox-0.12.2.1_linux-trusty-amd64.deb続いてsudo dpkg --install wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
Bill Butler

これは、この質問に提供されるより良い解決策です。
versvs、2015

1
私は実行する必要がありましたsudo mv wkhtmltopdf /usr/binから/usr/local/bin/、ディレクトリが、これは素晴らしい仕事を!私はこのページで他のすべての方法を試しましたが、事前に運がありません
でした。– shaneparsons

これにより、他のパッケージに依存することなく、最新かつよりシンプルなソリューションとしてより高い賛成票が得られるはずです(これにより、「Xサーバーに接続できない」問題も解決されます)。xvfbを使用すると、相対CSSパスがロードされないという問題があります。
ザニック

16

偽のXサーバーなしでこの問題を解決する方法を見つけました。wkhtmltopdfの最新バージョンでは、作業にXサーバーは必要ありませんが、公式のLinuxリポジトリには必要ありません。

Ubuntu 14.04.4 LTS(信頼できる)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

Ubuntu 14.04.4 LTS(信頼できる)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は非常に優れたソリューションを手に入れましたが、utiliteを含むリポジトリが変更されました。


何らかの理由でこれは私にとってはうまくいき、新しいバージョン(0.13)はあなたに感謝しませんでした!
talsibony 2016

これは私のために働いた解決策です、私は他の多くの解決策を試しましたが、どれもうまくいきませんでした。私はphp / Laravel環境に慣れていないので、これらのライブラリと依存関係の深い知識はありませんが、このソリューションは素晴らしいです。時間を節約できただけです:)
Amit

本当にこのソリューションは素晴らしいです。今日、本番環境に移行して同じ問題が発生しました。これらのソリューションを実行するだけで無駄にならず、スムーズに機能しました:)
Amit

gna.orgはシャットダウンされました。:(
Jya

11

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

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

私は個人的にPHPでSnappyライブラリを使用しています。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

SourceForgeから最新のwkhtmltopdfバージョンに更新します(この執筆時点では0.12)。実行にXサーバーは必要ありません。

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

1
0.12.1をインストールしましたが、それでもXサーバーに接続できないというプロンプトが表示されます。何か不足していますか?
Ales Maticic 2015年

もう一度試してみましたが、これでうまくいきました(インストールしないで、箱をきれいに保つためだけに)。上記の編集を参照してください。
felixhummel、2015年

9

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

6
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

問題はおそらく古いバージョンの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

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

  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
    

5

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



1

私はここの指示に従い、wkhtmltopdfを機能させましたが、自分で小さなダンスをしているときに発見した少しの視点を提供したいと思いますwkhtmltopdf-xvfbます。

悪名高いcannot connect to X serverエラーをスローさせるのと同じ理由で、Xサーバーを提供したとしても、重大な制限付きで実行されるため、これは重要です。これらの制限には、複数の入力ソースを取得できない、ヘッダーとフッターを設定できない、などがあります(マニュアルの「機能制限」セクションを確認してください)。

wkhtmltoxそれ自体はX11を必要としませんが、それを行うQTライブラリを利用しています。wkthmltoxの新しいバージョンでは、開発者はX11で実行できるQTのパッチを作成しました。

現在、パッチが適用されたQTに対してビルドされているバージョンとそうでないバージョンがあります。を実行してバージョンを確認できますwkhtmltopds --version。最後に一行あるはずですCompiled against wkhtmltopdf patched qt.

結論として、パッチを当てたライブラリを使用するバージョンをインストールして使用する場合、サーバーがなくてもLinuxサーバーで動作するはずxvfbです。


1

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


2
私にとってはURLが機能していなかったため、これを使用しました:sudo rpm -Uvh https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.2.1/wkhtmltox-0.12.2.1_linux-centos7-amd64.rpm
WebOrCode

1

ご注意:お使いのファイルは可能性wkhtmltopdf.shwkhtmltopdf、第二段階でそれをチェック

それをディレクトリ/ usr / local / binにコピーし、実行可能にして、次のようにwkhtmltopdf.shのシンボリックリンクを追加する必要があります。

1-コマンド:

sudo apt-get install wkhtmltopdf

2-バイナリをディレクトリ/ usr / binに挿入して、ブラウザがこのディレクトリで実行する権限を持たないようにします。wkhtmltopdf.sh をディレクトリ/ usr / local / binにコピーする必要があります。これにより、ブラウザはこのディレクトリで次のように権限を持つようになります。

sudo cp /usr/bin/wkhtmltopdf.sh /usr/local/bin/wkhtmltopdf.sh

3-バイナリを作成した後、バイナリに次のような実行許可が与えられます。

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 /ビンのような

ln -s /usr/local/bin/wkhtmltopdf.sh /usr/local/bin/wkhtmltopdf

0
  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

CentosでRailsまたは何かのためにwkhtmltopdfを構成する場合は、次の手順に従います。

  1. https://wkhtmltopdf.org/downloads.htmlに移動し、rpmファイルのリンクをコピーします。

CentOSサーバーbash。

  1. wget link_of_wkhtmltopdf_rpm.rpm

  2. rpm -ivh link_of_wkhtmltopdf_rpm.rpm

  3. which wkhtmltopdf

=> wkhtmltopdfのパスを取得します。

  1. 手順4のパスを使用したwicked_pdfまたはpdfkitのセットアップ。これはwickedpdfを使用したサンプル構成です。config / initializers / wicked_pdf.rb

    if Rails.env != "production"
        path = %x[which wkhtmltopdf].gsub(/\n/, "")
    else
        path = "path_of_wkhtmltopdf_in_step_4"
    end
    WickedPdf.config = { exe_path: path }
    
  2. サーバーを再起動します。

できました。


0

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

QtバックエンドにXを使用しないように伝えます。

QT_QPA_PLATFORM=offscreen wkhtmltopdf <input> <outfile.pdf>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.