wkhtmltopdf: cannot connect to X server

This solved the issue for me:

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

I tried to do sudo apt-get install wkhtmltopdf but without any success. Instead I recommend you try:

  1. Download the latest executable (.11 rc1) :

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

  2. uncompress it :

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

  3. rename it :

    mv wkhtmltopdf-i386 wkhtmltopdf

  4. chmod it to executable :

    chmod a+x wkhtmltopdf

  5. place it into /usr/bin :

    sudo mv wkhtmltopdf /usr/bin


or try this (from http://drupal.org/node/870058)

  1. Download wkhtmltopdf. Or better install it with a package manager:

    sudo apt-get install wkhtmltopdf
    
  2. Extract it and move it to /usr/local/bin/

  3. Rename it to wkhtmltopdf so that now you have an executable at /usr/local/bin/wkhtmltopdf
  4. Set permissions: sudo chmod a+x /usr/local/bin/wkhtmltopdf
  5. Install required support packages.

    sudo apt-get install openssl build-essential xorg libssl-dev
    
  6. Check to see if it works: run

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

    If it works, then you are done. If you get the error "Cannot connect to X server" then continue to number 7.

  7. We need to run it headless on a 'virtual' x server. We will do this with a package called xvfb.

    sudo apt-get install xvfb
    
  8. We need to write a little shell script to wrap wkhtmltopdf in xvfb. Make a file called wkhtmltopdf.sh and add the following:

    xvfb-run -a -s "-screen 0 640x480x16" wkhtmltopdf "$@"
    
  9. Move this shell script to /usr/local/bin, and set permissions:

    sudo chmod a+x /usr/local/bin/wkhtmltopdf.sh
    
  10. Check to see if it works once again: run

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

Note that http://www.google.com may throw an error like "A finished ResourceObject received a loading finished signal. This might be an indication of an iframe taking to long to load." You may want to test with a simpler page like http://www.example.com.