Ваша проблема вызвана согласованием прав пользователя между файловой системой, 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
Почему wkhtmltopdf не умнее и не решает эту проблему за меня?
Это сложнее, чем кажется, потому что wkhtmltopdf приходится бороться с враждебным сторонним программным обеспечением для рендеринга PDF (созданным Adobe?), и они работают вместе с разработчиками браузеров, чтобы запутать и затруднить доступ к своим движкам, потому что многие крупные корпорации зарабатывают на них деньги. для их сверхсекретного исходного кода. wkhtmltopdf проникает в этот мир, чтобы люди с открытым исходным кодом могли получить его, не платя за костюмы в высоких офисных зданиях наличными. Вот почему Adobe платит деньги разработчикам браузеров, чтобы усложнить нам задачу. Мы разбавляем их механизм получения прибыли, поэтому они в ответ швыряют в нас стоп-стики, где только могут. Это то, что. Чем больше мы распространяем это по всему миру среди новичков, тем сильнее третья сторона выбрасывает стоп-стики, поскольку вы мешаете прибыли другим.
person
Eric Leschinski
schedule
21.12.2018