Подтвердить что ты не робот

Wkhtmltopdf с полным фоном страницы

Я использую wkhtmltopdf для создания PDF файла, который идет на принтер, и у вас есть некоторые проблемы с тем, чтобы содержимое заполнило всю страницу в полученном PDF файле.

В CSS я установил ширину и высоту 2480 х 3508 пикселей (а4 300 точек на дюйм), а при создании PDF я использую 0 для полей, но все же получаю небольшую белую границу справа и внизу. Также пытался использовать mm и процент, но с тем же результатом.

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

4b9b3361

Ответ 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;">
&nbsp;
</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, но это может быть установлено ниже.