Команда 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