Wkhtmltopdf с полным фоном страницы
Я использую wkhtmltopdf для создания PDF файла, который идет на принтер, и у вас есть некоторые проблемы с тем, чтобы содержимое заполнило всю страницу в полученном PDF файле.
В CSS я установил ширину и высоту 2480 х 3508 пикселей (а4 300 точек на дюйм), а при создании PDF я использую 0 для полей, но все же получаю небольшую белую границу справа и внизу. Также пытался использовать mm и процент, но с тем же результатом.
Мне нужно, чтобы кто-то попросил привести пример того, как стилизовать HTML и какие параметры использовать в командной строке, чтобы итоговые страницы PDF заполнили весь фон. Один из способов может заключаться в том, чтобы включать кровотечение (это может быть необходимо в любом случае), но любые советы приветствуются. На данный момент я создаю одну большую HTML-страницу (без разрывов страницы CSS - может помочь?), Но при необходимости было бы прекрасно создавать каждую страницу отдельно, а затем передавать их всем в wkhtmltopdf.
Ответы
Ответ 1
wkhtmltopdf v 0.11.0 rc2
Что закончилось:
wkhtmltopdf --margin-top 0 --margin-bottom 0 --margin-left 0 --margin-right 0 <url> <output>
сокращается до
wkhtmltopdf -T 0 -B 0 -L 0 -R 0 <url> <output>
Использование html из stdin (Примечание тире)
echo "<h1>Testing Some Html</h2>" | wkhtmltopdf -T 0 -B 0 -L 0 -R 0 - <output>
Использование html из stdin в stdout
echo "Тестирование некоторых Html" | wkhtmltopdf -T 0 -B 0 -L 0 -R 0 - test.pdf
echo "Тестирование некоторых Html" | wkhtmltopdf -T 0 -B 0 -L 0 -R 0 - → test.pdf
Что не работает:
- Использование
--dpi
- Использование
--page-width and --page-height
- Использование
--zoom
Ответ 2
В http://code.google.com/p/wkhtmltopdf/issues/detail?id=359 Я узнал больше людей, страдающих от этой ошибки. Обходной путь --dpi 300
не сработал у меня, мне пришлось установить --zoom 1.045
, чтобы немного увеличить размер, из-за которого лишняя правая и нижняя границы исчезли...
Ответ 3
Я понимаю, что это старый и холодный, но на всякий случай кто-то находит это и имеет ту же самую/подобную проблему, вот обходной путь, который работал у меня после некоторой пробной и ошибки.
Я создал простой filler.html как:
<!DOCTYPE html>
<html>
<head>
</head>
<body style="margin: 0; padding: 0;">
<div style="height: 30mm; background-color: #F7EBD4;">
</div>
</body>
</html>
Использовать правильный HTML (! DOCTYPE важен) и только встроенные стили. Совместите цвет фона с цветом основного документа и используйте высоту, равную или превышающую ваши поля.
Я запускаю версию 0.12.0 со следующими аргументами:
wkhtmltopdf --print-media-type --orientation portrait --page-size A4
--encoding UTF-8 --T 10mm --B 10mm --L 0mm --R 0mm
--header-html filler.html --footer-html filler.html - - <file.html >file.pdf
Надеюсь, это поможет кому-то...
Ответ 4
Прекрасно работает для меня с параметрами -B 0 -L 0 -R 0 -T 0 и использует трюк для настройки div формата A4.
Не помню ли вы использовать body {margin: 0; padding: 0;} в верхней части вашего CSS?
Я не могу помочь вам с разрывами страниц CSS, поскольку я еще не тестировал ошибки, но вы можете запускать скрипты на странице, чтобы делать умные вещи. Вот пример jQuery, как разделить контент на куски размера страницы на основе длины содержимого. Если вы можете получить то, что адаптировано для работы с wkhtmltopdf, пожалуйста, напишите здесь!
http://www.script-tutorials.com/demos/79/index.html
Ответ 5
Я использую версию 0.12.2.1 и устанавливаю:
body { padding: 0; margin 0; }
div.page-layout { height: 295.5mm; width: 209mm;}
работал у меня.
Конечно, нужно добавить 0 полей:
wkhtmltopdf -T 0 -B 0 -L 0 -R 0
Ответ 6
Мы решили эту же проблему, используя параметр --disable-smart-shrinking
.
Ответ 7
То, что вы испытываете, является ошибкой.
Вам нужно установить параметр --dpi
при преобразовании файла. В этом случае вы, вероятно, захотите --dpi 300
, но это может быть установлено ниже.