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