wkhtmltopdf: impossible de se connecter au serveur X

j'ai utilisé wkthmltopdf pour convertir des documents html en pdf à la volée sur mon serveur web linux. Le programme avait à l'origine besoin de X11 ou d'un serveur X similaire pour fonctionner correctement, mais grâce à de nombreuses requêtes de développeurs pour que cela fonctionne sur des serveurs sans GUI, je suis presque sûr qu'il exécute un serveur X virtuel dans la version statique . J'ai utilisé la version statique (autonome) du programme et cela fonctionne très bien! Je voudrais mettre l' fichier exécutable dans un dossier, et exécuter:

./wkhtmltopdf file1.html file2.pdf

Cependant, je voudrais installer ce programme à l'échelle du système. J'ai utilisé le apt-get install wkhtmltopdf (juste installé hier) et puisque je tourne sur un système 64 bits, j'avais aussi besoin de apt-get install ia32-libs . Après l'installation je peux trouver la version comme ceci:

wkhtmltopdf --version

sortie:

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.

Maintenant, quand j'essaie d'exécuter le programme installé via aptitude, j'obtiens l'erreur suivante:

wkhtmltopdf: cannot connect to X server

est-ce que quelqu'un sait comment je peux réparer ça? Je suppose que cette version manque un serveur X virtuel ou quelque chose comme ça.

104
demandé sur jeffery_the_wind 2012-03-07 19:48:14

18 réponses

ou essayez ceci (à partir de http://drupal.org/node/870058 )

  1. télécharger wkhtmltopdf. ou mieux l'installer avec un gestionnaire de paquets:

    sudo apt-get install wkhtmltopdf
    
  2. extraire et déplacer vers /usr/local/bin/

  3. renommez-le en wkhtmltopdf de sorte que maintenant vous avez un exécutable à /usr/local/bin/wkhtmltopdf
  4. Définir des autorisations: sudo chmod a+x /usr/local/bin/wkhtmltopdf
  5. installer les paquets de soutien requis.

    sudo apt-get install openssl build-essential xorg libssl-dev
    
  6. vérifier si ça marche: exécuter

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

    si ça marche, alors c'est fini. Si vous obtenez l'erreur "ne peut pas se connecter au serveur X" alors continuer au numéro 7.

  7. nous devons l'exécuter sans tête sur un serveur x 'virtuel'. Nous le ferons avec un paquet appelé xvfb.

    sudo apt-get install xvfb
    
  8. nous avons besoin d'écrire un petit script shell pour envelopper wkhtmltopdf dans xvfb. Créer un fichier appelé wkhtmltopdf.sh et ajouter ce qui suit:

    xvfb-run -a -s "-screen 0 640x480x16" wkhtmltopdf "$@"
    
  9. déplacez ce script shell vers /usr/local/bin , et définissez les permissions:

    sudo chmod a+x /usr/local/bin/wkhtmltopdf.sh
    
  10. vérifiez si cela fonctionne à nouveau: Lancez

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

notez que http://www.google.com peut lancer une erreur comme "un objet de Ressource fini a reçu un signal de chargement terminé. Cela pourrait être une indication d'une iframe longue à charger."Vous pouvez tester avec une page plus simple comme http://www.example.com .

195
répondu TimoSolo 2018-07-18 00:00:33

cela a résolu le problème pour moi:

sudo apt-get install xvfb
xvfb-run --server-args="-screen 0, 1024x768x24" wkhtmltopdf file1.html file2.pdf
60
répondu syzspectroom 2012-11-28 12:32:01

j'ai essayé de faire sudo apt-get install wkhtmltopdf mais sans succès. Au lieu de cela, je vous recommande d'essayer:

  1. télécharger le dernier exécutable (.11 rc1):

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

  2. uncpress it:

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

  3. renommer :

    mv wkhtmltopdf-i386 wkhtmltopdf

  4. chmod à exécutable :

    chmod a+x wkhtmltopdf

  5. placez-le dans / usr / bin:

    sudo mv wkhtmltopdf /usr/bin

27
répondu Yakob Ubaidi 2013-03-28 00:02:18

il vient de faire:

1-pour télécharger les dépendances wkhtmltopdf

# apt-get install wkhtmltopdf

2 - Télécharger à partir de la source

# wget http://downloads.sourceforge.net/project/wkhtmltopdf/xxx.deb

# dpkg -i xxx.deb

3 - Essayer

# wkhtmltopdf http://google.com google.pdf

son amende de travail

ça marche!

25
répondu Sfblaauw 2018-07-11 06:50:55

j'ai trouvé une méthode pour résoudre ce problème sans serveur x faux. Dans la version la plus récente de wkhtmltopdf n'a pas besoin de serveur X pour le travail, mais il pas dans les dépôts officiels linux.

Solution pour Ubuntu 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

Solution pour Ubuntu 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

Utilisateur felixhummel a obtenu très bon solution, mais le dépôt avec utilite a changé.

16
répondu PRIHLOP 2016-03-29 09:28:01

développant la réponse de Timothy...

si vous êtes un développeur web qui cherche à utiliser wkhtmltopdf dans le cadre de votre application web, vous pouvez simplement l'installer dans votre dossier /usr/bin/ comme suit:

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

vous pouvez maintenant l'exécuter n'importe où en utilisant wkhtmltopdf .

j'utilise personnellement la bibliothèque Snappy en PHP. Voici un exemple de la facilité avec laquelle il est possible de créer un 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
répondu Jonathan 2013-05-21 19:16:03

dernière mise à Jour de wkhtmltopdf version sur SourceForge (0,12 pouce de cette écriture). Il n'a pas besoin d'un serveur X pour fonctionner.

exemple pour 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
répondu felixhummel 2015-01-21 21:54:28

pour 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
7
répondu Matthias 2017-04-22 18:10:19
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
répondu GoTLiuM 2014-05-02 18:35:21

problème est probablement dans ancienne version de wkhtmltopdf - la version 0.9 du dépôt de distribution nécessitent l'exécution de serveur X, mais la version actuelle - 0.12.2.1 ne l'exige pas - peut exécuter sans tête.

paquet de téléchargement pour votre distribution de http://wkhtmltopdf.org/downloads.html et l'installer - Pour Ubuntu:

sudo apt-get install xfonts-75dpi
sudo dpkg -i wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
6
répondu Honza 2015-09-13 15:10:53

je viens de comprendre que je peux simplement déplacer l'exécutable statique dans le répertoire /usr/bin/ et l'exécuter de n'importe où.

5
répondu jeffery_the_wind 2012-03-08 16:55:39

wkhtmltopdf > 0.11 il n'a pas ce numéro de X-server .

Donc installer 0.12.2.1 sur un serveur linux.

  1. lors de la première installation du serveur xvfb:

    sudo apt-get install xvfb
    
  2. avoir besoin de la version de wkhtmltopdf de http://wkhtmltopdf.org/downloads.html

  3. Install wkhtmltopdf:

    sudo dpkg -i wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
    

    ou installer avec 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. installez la dépendance (si nécessaire):

    sudo apt-get -f install
    
  5. créer un lien symbolique dans /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. essayez maintenant ci-dessous et ça devrait marcher,

    /usr/local/bin/wkhtmltopdf http://www.google.com test.pdf
    
4
répondu Parag Tyagi -morpheus- 2016-07-21 13:16:03

Il est recommandé d'utiliser au moins 0.12.2.1.

à partir de wkhtmltopdf >= 0.12.2 il ne nécessite plus de serveur X ou d'émulation. Vous pouvez télécharger la nouvelle version de http://wkhtmltopdf.org/downloads.html

3
répondu David Ginanni 2017-01-12 11:23:27

j'ai suivi les instructions ici et j'ai fait travailler wkhtmltopdf pour moi mais je voudrais offrir un peu de perspective que j'ai découvert en faisant ma propre petite danse avec wkhtmltopdf - xvfb .

C'est important parce que la même raison qui l'amène à jeter l'infâme cannot connect to X server erreur provoque également fonctionner avec sever limites, même si vous ne les fournissez un serveur X. Ces limites incluent le fait de ne pas pouvoir prendre des entrées multiples sources, en-tête et pieds de page, etc (cochez la section du manuel ).

wkhtmltox par lui-même ne nécessite pas un X11, mais il fait usage des bibliothèques QT qui le font. Dans les versions de nevever de développeurs wkthmltox a fait un patch pour QT qui lui permet de fonctionner avec un X11.

actuellement, certaines versions sont construites contre QT patché et certaines ne le sont pas. Vous pouvez vérifier votre version en exécutant wkhtmltopds --version . Il devrait y avoir une ligne à la fin disant Compiled against wkhtmltopdf patched qt.

donc, pour conclure, si vous installez et utilisez une version qui utilise les bibliothèques patchées, elle devrait fonctionner sur un serveur linux sans le serveur xvfb , comme je peux le confirmer.

1
répondu Cristian Vrabie 2014-04-15 15:42:28

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

nous rencontrons ce problème à l'intérieur des conteneurs docker et l'installation ci-dessus a wkhtmltopdf avec Qt corrigé

1
répondu DmitrySemenov 2015-08-28 18:01:15

Ennemi 64 bits:

wget http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.9.9-static-amd64.tar.bz2

tar xvjf wkhtmltopdf-0.9.9-static-amd64.goudron.bz2

sudo mv wkhtmltopdf-amd64 / usr / bin /wkhtmltopdf

sudo chmod +x / usr / bin /wkhtmltopdf

0
répondu Thilina Hasantha 2016-06-25 11:09:31
  1. télécharger le fichier de ce lien
  2. Extraire et déplacer le fichier exécutable(/wkhtmltox/bin/wkhtmltopdf) /usr/bin/
  3. Renommer wkhtmltopdf si le nom n'est pas wkhtmltopdf. Donc maintenant vous avez un exécutable à /usr/bin/wkhtmltopdf
  4. Set permissions: sudo chmod a+x / usr / bin /wkhtmltopdf
  5. installer les paquets de soutien nécessaires. sudo apt-get install openssl build-essential xorg libssl-dev
  6. maintenant, vérifiez avec wkhtmltopdf http://www.google.com test.pdf conseil: informations détaillées à partir de ce lien
0
répondu Ratna Halder 2017-04-12 12:13:30

il suffit d'installer une version 0.12.4 ou plus. Cela semble résoudre le problème.

Voir Comment puis-je installer la dernière wkhtmltopdf sur Ubuntu 16.04? .

0
répondu Martin Thoma 2017-09-25 08:17:37