wkhtmltopdf z pełnym tłem strony

Używam wkhtmltopdf do generowania pliku PDF, który trafia do drukarki i mam pewne problemy z wypełnieniem całej strony w wynikowym pliku PDF.

W CSS ustawiłem szerokość i wysokość na 2480 x 3508 pikseli (a4 300 dpi) i podczas tworzenia PDF używam 0 dla marginesów, ale nadal kończy się małą białą obwódką po prawej i na dole. Próbowałem również użyć mm i procentu, ale z takim samym wynikiem.

Potrzebuję kogoś, kto poda przykład na jak stylować HTML i jakich opcji użyć w wierszu poleceń, aby wynikowe strony PDF wypełniały całe tło. Jednym ze sposobów może być uwzględnienie krwawienia (może to być konieczne i tak), ale wszelkie wskazówki są mile widziane. W tej chwili tworzę jedną dużą stronę HTML (bez przerw CSS - może pomóc?) ale w razie potrzeby byłoby dobrze wygenerować każdą stronę osobno, a następnie przesłać je wszystkie do wkhtmltopdf.

Author: Brian Webster, 2011-05-19

7 answers

Wkhtmltopdf v 0.11.0 RC2

Co skończyło się na pracy:

wkhtmltopdf --margin-top 0 --margin-bottom 0 --margin-left 0 --margin-right 0 <url> <output>

Skraca się do

wkhtmltopdf -T 0 -B 0 -L 0 -R 0 <url> <output>

Używanie html ze stdin (Uwaga dash)

echo "<h1>Testing Some Html</h2>" | wkhtmltopdf -T 0 -B 0 -L 0 -R 0 - <output>

Używanie html ze stdin na stdout

Echo " testowanie jakiegoś Html | / wkhtmltopdf - T 0-B 0-L 0 - R 0-test.pdf

Echo " testowanie jakiegoś Html | / wkhtmltopdf-T 0-B 0-L 0-R 0 - - > test.pdf

Co nie działa:

  • za pomocą --dpi
  • używając --page-width and --page-height
  • używając --zoom
 27
Author: Ryan Q,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-25 10:09:19

Zdaję sobie sprawę, że jest to stare i zimne, ale na wypadek, gdyby ktoś znalazł to i miał ten sam / podobny problem, Oto obejście, które zadziałało dla mnie po próbach i błędach.

Stworzyłem prosty wypełniacz.html as:
<!DOCTYPE html>
<html>
<head>
</head>
<body style="margin: 0; padding: 0;">
<div style="height: 30mm; background-color: #F7EBD4;">
&nbsp;
</div>
</body>
</html>

Użyj poprawnego HTML (!DOCTYPE jest ważny) i tylko Style inline. Dopasuj kolor tła do koloru głównego dokumentu i użyj wysokości równej lub większej od marginesów.

Uruchamiam wersję 0.12.0 z następującymi argumentami:

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

Mając nadzieję, że to pomaga komuś...

 7
Author: savedario,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-26 23:07:20

At http://code.google.com/p/wkhtmltopdf/issues/detail?id=359 dowiedziałem się, że więcej ludzi "cierpi" na ten błąd. Obejście --dpi 300 nie działało dla mnie, musiałem ustawić --zoom 1.045, aby trochę powiększyć, co sprawiło, że dodatkowa prawa i dolna granica zniknęły...

 6
Author: lmeurs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-02 15:30:34

Działa dobrze dla mnie z opcjami-B 0-L 0-R 0-T 0 i za pomocą sztuczki konfiguracji div o rozmiarze A4.

Czy pamiętałeś, aby użyć body {margin: 0; padding:0;} w górnej części CSS?

Nie mogę ci pomóc z łamaniem stron CSS, ponieważ nie testowałem jeszcze błędów, jednak możesz uruchamiać skrypty na stronie, aby robić mądre rzeczy. Oto przykład jQuery, jak podzielić zawartość na kawałki rozmiaru strony w zależności od długości zawartości. Jeśli uda Ci się to zaadaptować aby pracować z wkhtmltopdf, napisz tutaj!

Http://www.script-tutorials.com/demos/79/index.html

 5
Author: ʍǝɥʇɐɯ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-25 13:16:09

Używam wersji 0.12.2.1 i ustawienie:

body { padding: 0; margin 0; }
div.page-layout { height: 295.5mm; width: 209mm;}
Zadziałało dla mnie.

Oczywiście trzeba dodać 0 marginesów przez:

wkhtmltopdf -T 0 -B 0 -L 0 -R 0
 4
Author: srokatonie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-24 20:20:01

Właśnie rozwiązaliśmy ten sam problem używając --disable-smart-shrinking opcja.

 3
Author: hangy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-13 14:09:34

To, czego doświadczasz, to błąd.

Musisz ustawić opcję --dpi podczas konwersji pliku. W Twoim przypadku prawdopodobnie będziesz chciał --dpi 300, ale można to ustawić niżej.

 1
Author: Paul Haggo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-10 04:12:37