Команда merb - wkhtmltopdf завершилась неудачно

Когда я запускаю команду, как это его генерирующий PDF-документ:

$ wkhtmltopdf http://google.com google.pdf
Loading pages (1/5)
Resolving links (2/5)                                              
Counting pages (3/5)                                                      
Printing pages (5/5)                                                      
Done   

Но при использовании внутри приложения от pdfkit gem он показывает ошибку

merb : worker (port 4000) ~ command failed: "/usr/local/bin/wkhtmltopdf" "--page-size" "Letter" "--print-media-type" "--margin-right" "0.0in" "--encoding" "UTF-8" "--margin-top" "0.5in" "--margin-bottom" "0.5in" "--margin-left" "0.0in" "--quiet" "-" "-" - (RuntimeError)

что попробовал:

установка пути

config.wkhtmltopdf = '/usr/local/bin/wkhtmltopdf '

установка зависимостей

sudo aptitude install openssl build-essential xorg libssl-dev

Среда

  • Ubuntu 12.04 amd64
  • приложение Merb
  • рубин 1.8.7

1 ответ

Решение

Проблема решена путем изменения номера порта сервера

от

bundle exec merb -a thin #default port 4000

в

bundle exec merb -a thin -p 3000

и используя гем "wkhtmltopdf-binary"

объяснение

Иногда можно обнаружить, что однопоточный веб-сервер, который мы используем в разработке, может вызвать состояние гонки. браузер связывает один доступный поток и запускает новый веб-запрос для создания HTML-файлов PDF, который вызывает второй веб-запрос. Так как ваш единственный поток веб-сервера уже используется, вы можете найти это, чтобы повесить.

Чтобы обойти это, либо запустите больше потоков. ИЛИ использовать другой порт для внутреннего доступа, и иметь внутренний URL

Другие вопросы по тегам