wkhtmltopdf: no se puede conectar al servidor X

He estado usando wkthmltopdf para convertir html a documentos PDF sobre la marcha en mi servidor web linux. El progtwig originalmente necesitaba X11 o un servidor X similar para ejecutarse correctamente, pero a través de muchas solicitudes de los desarrolladores para que esto se ejecute en servidores sin GUI, estoy bastante seguro de que ejecuta un servidor X virtual en la versión estática . He estado usando la versión estática (independiente) del progtwig y funciona muy bien. Pondría el archivo ejecutable en una carpeta y ejecutaré:

./wkhtmltopdf file1.html file2.pdf 

Sin embargo, me gustaría instalar este progtwig en todo el sistema. Utilicé el apt-get install wkhtmltopdf (recién instalado ayer) y como estoy ejecutando en un sistema de 64 bits, también necesitaba apt-get install ia32-libs . Después de la instalación, puedo encontrar la versión de esta manera:

 wkhtmltopdf --version 

salida:

 Name: wkhtmltopdf 0.9.9 License: Copyright (C) 2008,2009 Wkhtmltopdf Authors. License GPLv3+: GNU GPL version 3 or later . 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. 

Ahora, cuando bash ejecutar el progtwig instalado a través de aptitude, aparece el siguiente error:

 wkhtmltopdf: cannot connect to X server 

¿Alguien sabe como puedo arreglar esto? Supongo que a esta versión le falta un servidor X virtual o algo así.

    o prueba esto (de http://drupal.org/node/870058 )

    1. Descargue wkhtmltopdf. O mejor, instálalo con un administrador de paquetes:

       sudo apt-get install wkhtmltopdf 
    2. Extraelo y muévelo a /usr/local/bin/

    3. Cambie el nombre a wkhtmltopdf para que ahora tenga un ejecutable en /usr/local/bin/wkhtmltopdf
    4. Establecer permisos: sudo chmod a+x /usr/local/bin/wkhtmltopdf
    5. Instale los paquetes de soporte necesarios.

       sudo apt-get install openssl build-essential xorg libssl-dev 
    6. Verifica si funciona: ejecuta

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

      Si funciona, entonces has terminado. Si obtiene el error “No se puede conectar al servidor X”, continúe con el número 7.

    7. Necesitamos ejecutarlo sin cabeza en un servidor ‘virtual’ x. Haremos esto con un paquete llamado xvfb.

       sudo apt-get install xvfb 
    8. Necesitamos escribir un pequeño script de shell para envolver wkhtmltopdf en xvfb. Haga un archivo llamado wkhtmltopdf.sh y agregue lo siguiente:

       xvfb-run -a -s "-screen 0 640x480x16" wkhtmltopdf "$@" 
    9. Mueva este script de shell a /usr/local/bin , y configure los permisos:

       sudo chmod a+x /usr/local/bin/wkhtmltopdf.sh 
    10. Comprueba si funciona una vez más: ejecuta

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

    Tenga en cuenta que http://www.google.com puede arrojar un error como “Un ResourceObject terminado recibió una señal de carga finalizada. Esto podría ser una indicación de que un iframe tarda demasiado en cargarse”. Es posible que desee probar con una página más simple como http://www.example.com .

    Esto resolvió el problema para mí:

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

    Intenté hacer sudo apt-get install wkhtmltopdf pero sin éxito. En cambio, te recomiendo que intentes:

    1. Descargue el último ejecutable (.11 rc1):

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

    2. descomprimirlo:

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

    3. cambiarle el nombre:

      mv wkhtmltopdf-i386 wkhtmltopdf

    4. chmod a ejecutable:

      chmod a+x wkhtmltopdf

    5. colocarlo en / usr / bin:

      sudo mv wkhtmltopdf /usr/bin

    Acaba de hacerlo:

    1- Para descargar dependencias wkhtmltopdf

    # apt-get install wkhtmltopdf

    2- Descargar de la fuente

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

    # dpkg -i xxx.deb

    3- Prueba

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

    Funciona bien

    ¡Funciona!

    Encontré un método para resolver este problema sin el falso servidor X. En la versión más reciente de wkhtmltopdf no se necesita el servidor X para el trabajo, pero tampoco en los repositorys oficiales de Linux.

    Solución para Ubuntu 14.04.4 LTS (confiable) 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 

    Solución para Ubuntu 14.04.4 LTS (confiable) 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 

    El usuario felixhummel obtuvo una muy buena solución, pero el repository con utilite ha cambiado.

    Ampliando la respuesta de Timoteo …

    Si eres un desarrollador web que busca usar wkhtmltopdf como parte de tu aplicación web, simplemente puedes instalarlo en tu carpeta /usr/bin/ manera:

     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 

    Ahora puede ejecutarlo en cualquier lugar usando wkhtmltopdf .

    Yo personalmente uso la biblioteca de Snappy en PHP. Aquí hay un ejemplo de lo fácil que es crear 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('

    Title

    Your content goes here.

    ');

    Actualice a la última versión de wkhtmltopdf de SourceForge (0.12 al momento de escribir esto). No necesita un servidor X para ejecutarse.

    Ejemplo para 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 '

    hi

    ' | ./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 < <

    para 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 

    El problema es probablemente en la versión anterior de wkhtmltopdf – la versión 0.9 del repository de distribución requiere ejecutar el servidor X, pero la versión actual – 0.12.2.1 no lo requiere – puede ejecutarse sin cabeza.

    Descargue el paquete para su distribución desde http://wkhtmltopdf.org/downloads.html e instálelo – para Ubuntu:

     sudo apt-get install xfonts-75dpi sudo dpkg -i wkhtmltox-0.12.2.1_linux-trusty-amd64.deb 

    Acabo de descubrir que simplemente puedo mover el archivo ejecutable estático al directorio /usr/bin/ y ejecutarlo desde cualquier lugar.

    wkhtmltopdf > 0.11 no tiene este problema de X-server
    Entonces instalando 0.12.2.1 en un servidor Linux.

    1. Al principio instala el servidor xvfb:

       sudo apt-get install xvfb 
    2. Obtenga la versión necesaria de wkhtmltopdf desde http://wkhtmltopdf.org/downloads.html

    3. Instalar wkhtmltopdf:

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

      o instalar con 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. Instalar dependencia (si es necesario):

       sudo apt-get -f install 
    5. Crear enlace simbólico en /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. Ahora prueba debajo y debería funcionar,

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

    Se recomienda usar al menos 0.12.2.1.

    A partir de wkhtmltopdf> = 0.12.2 ya no requiere servidor X ni emulación. Puede descargar una nueva versión desde http://wkhtmltopdf.org/downloads.html

    Seguí las instrucciones aquí e hice wkhtmltopdf trabajo para mí, pero me gustaría ofrecer un poco de perspectiva que descubrí mientras hacía mi propio baile con wkhtmltopdfxvfb .

    Esto es importante porque la misma razón por la que lanza el infame cannot connect to X server error del cannot connect to X server también hace que se ejecute con limitaciones de servidor, incluso si le proporciona un servidor X. Estas limitaciones incluyen no poder tomar varias fonts de entrada, establecer encabezado y pie de página, etc. (consulte la sección de Funcionalidad reducida del manual ).

    wkhtmltox por sí mismo no requiere un X11, sin embargo, está haciendo uso de las bibliotecas de QT que sí lo hacen. En las últimas versiones de los desarrolladores de wkthmltox se creó un parche para QT que permite ejecutarlo con un X11.

    Actualmente, algunas versiones están comstackdas contra QT parcheado y otras no. Puede verificar su versión ejecutando wkhtmltopds --version . Debería haber una línea al final diciendo Compiled against wkhtmltopdf patched qt.

    Entonces, para concluir, si instalas y usas una versión que usa las bibliotecas parcheadas, debería funcionar en un servidor Linux sin el servidor xvfb , como puedo confirmar.

    solución para 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 

    Nos encontramos con este problema dentro de los contenedores acoplables y la instalación anterior tiene wkhtmltopdf con parche QT

    Foe de 64 bits de uso:

    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

    1. Descargar archivo desde este enlace
    2. Extraiga y mueva el archivo ejecutable (/ wkhtmltox / bin / wkhtmltopdf) a /usr/bin/
    3. Cambie el nombre a wkhtmltopdf si el nombre actual no es wkhtmltopdf. Entonces ahora tienes un ejecutable en /usr/bin/wkhtmltopdf
    4. Establecer permisos: sudo chmod a + x / usr / bin / wkhtmltopdf
    5. Instale los paquetes de soporte necesarios. sudo apt-get install openssl build-essential xorg libssl-dev
    6. Ahora, consulte con wkhtmltopdf http://www.google.com test.pdf sugerencia: información detallada de este enlace

    Simplemente instale una versión 0.12.4 o superior. Esto parece resolver el problema.

    Ver ¿Cómo puedo instalar el último wkhtmltopdf en Ubuntu 16.04? .