Команда wkhtmltopdf не работает

Я пытаюсь преобразовать файл HTML в PDF, используя wkhtmltopdf.

Для этой цели я установил wkhtmltopdf в поле Debian и пытаюсь выполнить эту команду:

/usr/bin/xvfb-run -a -s "-screen 0 640x480x16" wkhtmltopdf /path/convert.1303714349.4961.html.tmp /path/convert.1303714349.4961.pdf.tmp

Я получаю следующую ошибку:

Loading page (1/2)
Error: Failed loading page file:///path/convert.1303714349.4961.html.tmp (sometimes it will work just to ignore this error with --ignore-load-errors)

Файл существует в /path/convert.1303714349.4961.html.tmp, и разрешения установлены правильно. Может ли это иметь какое-либо отношение к пути, предваряемому file://?


person phidah    schedule 25.04.2011    source источник
comment
У меня была эта проблема из-за кода javascript, который перезагрузил мою страницу, когда она была преобразована в pdf. Не знаю, может это кому поможет :-?   -  person vladCovaliov    schedule 02.09.2014


Ответы (4)


Я считаю, что wkhtmtopdf не обрабатывает локальные файлы с нетипичными расширениями. Попробуйте переименовать входной файл в *.html.

См. проблему и комментарии по адресу https://web.archive.org/web/20131124022426/http://code.google.com/p/wkhtmltopdf/issues/detail?id=486.

person Daniel Andersson    schedule 02.07.2011

Еще один полезный совет - заменить пробелы в имени файла на какой-нибудь символ, например "_", потому что, когда в имени файла есть пробелы, процесс не загружает страницу.

person Wilson    schedule 19.02.2014

У меня не было проблем с путями «file://» на моем компьютере с Windows 7.

Вы пробовали совет в сообщении об ошибке, --igonore-load-errors?

person Mark Storer    schedule 25.04.2011
comment
Где установить игнорирование --load-error-handling? В инициализаторе конфигурации Rails? - person Natus Drew; 14.08.2015

Ваша проблема вызвана согласованием прав пользователя между файловой системой, xvfb-run wkhtmltopdf и безголовым сервером X11.

Пользователь запускает эту команду:

cd /home/user;
touch somehtml.html;
/usr/bin/xvfb-run --server-args="-screen 0, 1024x768x24" 
     wkhtmltopdf somehtml.html preview.pdf;

wkhtmltopdf выдает предупреждение:

Предупреждение: не удалось загрузить файл страницы:///home/user/somehtml.html (игнорируется)

Целевой PDF-файл не существует, в нем отсутствует содержимое из somefile.html или он пуст.

Как воспроизвести проблему, sscce:

Условия:

64 bit Fedora Linux 17, PC Desktop
Install via a 'sudo yum install wkhtmltopdf'
wkhtmltopdf has version 0.10.0
From a terminal, using xvfb-run

Недопустимый HTML-код в файле somehtml.html:

<html>
<head>head tag</head>
  <body>
    <h1>this should be H1<h1>
    Words words words in a paragraph.
  </body>
</html>

Найти в каталоге пользователя и запустить

cd /home/user;
/usr/bin/xvfb-run --server-args="-screen 0, 1024x768x24" wkhtmltopdf /home/user/somehtml.html /home/user/preview.pdf

wkhtmltopdf выдает предупреждение

Предупреждение: не удалось загрузить файл страницы:///home/user/somehtml.html (игнорируется)

/home/user/preview.pdf отсутствует или пуст.

Что вызывает проблему:

Ваш xvfb-run заключает в тюрьму wkhtmlpdf пользователя и не имеет разрешения на чтение и/или запись в /home/user/somehtml.pdf или /home/user/preview.pdf

Чтобы убедиться, что это ваша проблема, спросите xvfb-run, какие у нас есть разрешения?

/usr/bin/xvfb-run --server-args="-screen 0, 1024x768x24" whoami > /tmp/secret.txt; cat /tmp/secret.txt

Обходной путь:

/tmp обычно имеет более широкие права доступа, чем /home/user/, поэтому всю свою работу выполняйте внутри /tmp

cd /tmp;
touch /tmp/somehtml.html;
#put above html in somehtml.html
cat /tmp/somehtml.html
    <html>
    <head>head tag</head>
      <body>
        <h1>this should be H1<h1>
        Words words words in a paragraph.
      </body>
    </html>
/usr/bin/xvfb-run --server-args="-screen 0, 1024x768x24" wkhtmltopdf /tmp/somehtml.html /tmp/preview.pdf

И вы должны получить этот стандартный вывод:

loaded the Generic plugin 
Loading page (1/2)
Printing pages (2/2)
Done

И превью.pdf

chrome_wkhtmltopdf_and_xvfb-run

Почему wkhtmltopdf не умнее и не решает эту проблему за меня?

Это сложнее, чем кажется, потому что wkhtmltopdf приходится бороться с враждебным сторонним программным обеспечением для рендеринга PDF (созданным Adobe?), и они работают вместе с разработчиками браузеров, чтобы запутать и затруднить доступ к своим движкам, потому что многие крупные корпорации зарабатывают на них деньги. для их сверхсекретного исходного кода. wkhtmltopdf проникает в этот мир, чтобы люди с открытым исходным кодом могли получить его, не платя за костюмы в высоких офисных зданиях наличными. Вот почему Adobe платит деньги разработчикам браузеров, чтобы усложнить нам задачу. Мы разбавляем их механизм получения прибыли, поэтому они в ответ швыряют в нас стоп-стики, где только могут. Это то, что. Чем больше мы распространяем это по всему миру среди новичков, тем сильнее третья сторона выбрасывает стоп-стики, поскольку вы мешаете прибыли другим.

person Eric Leschinski    schedule 21.12.2018