xserver — wkhtmltopdf: не удается подключиться к X-серверу

Я использую wkthmltopdf конвертировать HTML в PDF документы на лету на моем веб-сервере Linux. Первоначально программе требовался X11 или аналогичный X-сервер для правильной работы, но благодаря многочисленным запросам разработчиков, чтобы он запускался на серверах без графического интерфейса, я почти уверен, что он запускает виртуальный 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-сервер или что-то в этом роде.

106

Решение

или попробуйте это (из 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. Нам нужно написать небольшой скрипт оболочки, чтобы обернуть wkhtmltopdf в xvfb. Сделайте файл с именем 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 может выдать ошибку типа «Завершенный ResourceObject получил сигнал о завершении загрузки. Это может указывать на то, что iframe слишком долго загружается». Вы можете проверить с более простой страницей, как http://www.example.com,

196

Другие решения

Это решило проблему для меня:

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

Я пытался сделать 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

28

Просто сделал это:

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

Работает нормально

Оно работает!

25

Я нашел способ решить эту проблему без поддельного 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 получил очень хорошее решение, но хранилище с утилитой изменилось.

16

Расширяя ответ Тимофея …

Если вы веб-разработчик и хотите использовать wkhtmltopdf как часть вашего веб-приложения, вы можете просто установить его в свой веб-приложение. /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. Вот пример того, как легко создать 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

Обновление до последней версии wkhtmltopdf из SourceForge (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
<<
11

для 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
8
По вопросам рекламы [email protected]