2013-06-11 12 views
23

Używam PhantomJS do tworzenia plików PDF z html.Obsługa stron w formacie PDF w PhantomJS

Działa dobrze, ale nie mogę się dowiedzieć, jak pracować z paginacją; Chcę utworzyć stronę dla każdego elementu div w moim dokumencie, ale nie mogę znaleźć niczego w dokumencie. o paginacji.

Jeśli mój dokument jest krótki, ma tylko jedną stronę, a jeśli jest większa, to tworzy jedną drugą pustą stronę i moje treści są na pierwszej stronie, która staje się bardzo długo.

Każdy pomysł? (Używam modułu węzła phantomJS dla nodeJS)

Odpowiedz

36

PhantomJS zajmuje się implementacją css webkit. Aby wdrożyć ręczne podziały stron można użyć tych właściwości:

  • page-break-before: auto/zawsze/uniknąć/...
  • page-break-inside: auto/zawsze/uniknąć/...
  • page-break-after: AUTO/zawsze/uniknąć/...

Na przykład div mogą być:

<div style="page-break-before:always;"><!-- content --></div> 

lub

<div style="page-break-after:always;"> <!-- content --></div> 

Kontrolowanie łamania strony podczas drukowania w Webkit czasami nie jest łatwe, w szczególności z długimi tabelami html.

+0

Podzielone strony na divy, stosujące podział stron na każdej z nich, z wyjątkiem ostatniej. Działa jak urok – Rayjax

+1

nie ma problemu, proszę pana! – Cybermaxs

+0

Mam także do czynienia z tym samym problemem, ale gdy dodasz stronę-break-po na każdej stronie, która tworzy wiele spacji, możesz mi pomóc? –

2

Powinieneś zobaczyć ten issue z różnymi wskazówkami.

Spróbuj użyć display:inline-block w elemencie że nie ma przerw, ponieważ przerwy strony. Rozumowanie jest takie, że webkit próbuje już chronić obrazy przed zniszczeniem. Obrazy są blokami inline.

+0

To pracował dla mnie, zmieniając go na wyświetlaczu: stół; pozwolił elementowi na podział strony. –

Powiązane problemy