Сбой команды wkhtmltopdf - PullRequest
       63

Сбой команды wkhtmltopdf

11 голосов
/ 25 апреля 2011

Я пытаюсь преобразовать файл 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://?

Ответы [ 4 ]

31 голосов
/ 02 июля 2011

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

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

3 голосов
/ 19 февраля 2014

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

0 голосов
/ 21 декабря 2018

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

И preview.pdf

chrome_wkhtmltopdf_and_xvfb-run

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

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

0 голосов
/ 25 апреля 2011

У меня не было проблем с путями "file: //" в моем окне Windows 7.

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

...