113 votes

wkhtmltopdf: impossible de se connecter au serveur X

J'ai été en utilisant wkthmltopdf pour convertir html en documents pdf à la volée sur mon serveur web linux. Le programme d'origine nécessaires X11 ou similaire serveur X pour s'exécuter correctement, mais grâce à de nombreuses demandes par les développeurs pour avoir cette exécutent sur des serveurs sans interface graphique, je suis assez sûr qu'elle fonctionne un serveur X virtuel dans la version statique. J'ai été à l'aide de la statique (stand-alone) de la version du programme et il fonctionne très bien! Je mettrais le fichier exécutable dans un dossier, puis exécutez:

./wkhtmltopdf file1.html file2.pdf

Cependant, je voudrais installer ce programme à l'échelle du système. J'ai utilisé l' apt-get install wkhtmltopdf (juste installé hier) et depuis que je suis en cours d'exécution sur un système 64 bits, j'ai aussi besoin d' 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

Personne ne sait comment je peux résoudre ce problème? Je suppose que cette version est manquant virtuel serveur X ou quelque chose.

208voto

Timothy Points 1322

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

  1. Télécharger wkhtmltopdf. Ou mieux de l'installer avec un gestionnaire de paquets:

    sudo apt-get install wkhtmltopdf
    
  2. L'extraire et de le déplacer à l' /usr/local/bin/

  3. Renommez - wkhtmltopdf , de sorte que maintenant vous avez un fichier exécutable à l' /usr/local/bin/wkhtmltopdf
  4. Définir des autorisations: sudo chmod a+x /usr/local/bin/wkhtmltopdf
  5. Installer le soutien nécessaire paquets.

    sudo apt-get install openssl build-essential xorg libssl-dev
    
  6. Vérifiez pour voir si ça fonctionne: run

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

    Si elle fonctionne, vous avez terminé. Si vous obtenez le message d'erreur "Impossible de se connecter au serveur X", puis continuer jusqu'au n ° 7.

  7. Nous avons besoin de l'exécuter sans tête sur un "virtuel" x server. 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. Rendre un fichier appelé wkhtmltopdf.sh et ajoutez la ligne suivante:

    xvfb-run -a -s "-screen 0 640x480x16" wkhtmltopdf "$@"
    
  9. Déplacer ce script shell pour l' /usr/local/bin, et de définir des autorisations:

    sudo chmod a+x /usr/local/bin/wkhtmltopdf.sh
    
  10. Vérifiez pour voir si elle fonctionne encore une fois: run

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

61voto

syzspectroom Points 421

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

28voto

abigoroth Points 227

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 fichier exécutable (.11 rc1) :

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

  2. décompresser :

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

  3. renommer :

    mv wkhtmltopdf-i386 wkhtmltopdf

  4. la commande chmod à l'exécutable :

    chmod a+x wkhtmltopdf

  5. le placer dans /usr/bin :

    sudo mv wkhtmltopdf /usr/bin

11voto

Jonathan Points 2381

L'expansion sur de Timothée de réponse...

Si vous êtes un développeur web à la recherche d'utiliser wkhtmltopdf dans le cadre de votre application web, vous pouvez simplement installer dans votre /usr/bin/ le dossier 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 exécuter de n'importe où à l'aide de wkhtmltopdf.

Personnellement, j'utilise la Dynamique de la bibliothèque en PHP. Voici un exemple de la façon dont il est facile de créer un fichier 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>');

11voto

felixhummel Points 51

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 exécuter.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X