• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Generowanie PDF po stronie klienta

Object Storage Arubacloud
+2 głosów
1,027 wizyt
pytanie zadane 30 kwietnia 2018 w JavaScript przez Tomek Sochacki Ekspert (227,510 p.)
Witam wieczorową porą... :)

Mam krótkie pytanko do ogółu front-endowców - jaki macie sprawdzony sposób na generowanie PDF po stronie klienckiej?

Generalnie tworzenie PDF obsługuję poprzez html2pdf w połączeniu z jsPDF i html2canvas , ale problem jest w prawidłowym wymuszaniu podziału stron (czyli wskazaniu miejsca rozpoczęcia nowej strony). Próbowałem wstawiać element ze stylem "page-break-after" (i analogicznie -before), próbowałem też owijać elementy w <page> i w ten sposób wymuszać poszczególne strony ale niestety nie pracuje mi to poprawnie...

W ustawieniach jsPDF włączam pagesplit ale coś mi się wydaje, że problem leży bardziej w html2canvas, z którego korzysta html2pdf.

Jak nie wpadnę na żadne rozwiązanie i nie znajdzie się nikt chętny do pomocy :) to zawsze można stworzyć pdf bezpośrednio metodami jsPDF, gdzie jest metoda addPage. Z tabelami nie byłoby chyba problemu, jest nawet gotowiec autoTable (choć jeszcze nie używałem tego w praktyce), ale tak bardziej z ciekawości mnie nurtuje ten problem, tym bardziej, że PDF tworzone są dynamicznie i zależą od wielu czynników (będą też na niektórych wykresy i bardziej złożone tabele) i tworzenie elementów HTML jest nieco przyjemniejsze.

Pozdrawiam
komentarz 1 maja 2018 przez Tomek Sochacki Ekspert (227,510 p.)

OK, udało mi się problem rozwiązać od innej strony, a mianowicie zmieniłem bibliotekę do generowania PDF na pdfMake (http://pdfmake.org/index.html#/) i ogólnie do moich obecnych potrzeb jest w porządku.

Gdyby ktoś był zainteresowany użyciem jej client-side to tylko mała uwaga aby doinstalować sobie imports-loader do webpacka i potem zastosować 

'imports-loader?this=>window!pdfmake/build/vfs_fonts.js'

Unikniemy w ten sposób problemów z pewnym niuansem związanym ze stosowaniem "this" w pliku definiującym czcionkę.

komentarz 1 maja 2018 przez niezalogowany
Cześć! Otóż przeczytałem dopiero teraz Twoje pytanie.
Też miałem problemy z jsPDF i innymi. W końcu trafiłem na pdfmake (na które też się przesiadłeś), gdzie to rozwiązanie okazało się najlepsze do moich celów ;)

Śmiało mogę polecić pdfmake, sporo można tam kombinować
komentarz 1 maja 2018 przez Tomek Sochacki Ekspert (227,510 p.)
No właśnie powiem Ci, że siedziałem wczoraj dość długo w pdfMake (choć dziś pewnie odchoruję to nocne uparte siedzenie :P) i jestem bardzo pozytywnie zaskoczony. Mam co prawda pewne zastrzeżenia do dokumentacji ale jak się zrobi pierwsze kilka pdf to idzie z górki.

Widzę, że w tych generatorach trzeba sporo się naszukać żeby trafić coś fajnego :) To trochę jak generatory xlsx... wiele z nich tworzy po prostu jeden plik z rozszerzeniem xlsx i odpowiednio ustawia nagłówki co przy nowych office jest bzdurą... Biblioteka XLSX z kolei miała problem gdy potrzebowałem ładnie ostylować wygląd excela... i dopiero któraś z rzędu próba z xlsx-populate dała efekt :) i mamy ładnego zipa zgodnego z nowymi office... ale trochę nerwów też na tym zjadłem :)

1 odpowiedź

0 głosów
odpowiedź 1 maja 2018 przez Przemysław Obywatel (1,510 p.)
Ja korzystam z TCPDF. Polecam sprawdzić, ja używam od jakiegoś czasu i nigdy nie miałem problemu z podziałem stron ;)
komentarz 1 maja 2018 przez Tomek Sochacki Ekspert (227,510 p.)
Dzięki, zobaczę, ale jeśli dobrze kojarzę to ona chyba była do back-endu w PHP ale może się mylę. Ja mam back-end w node, ale generalnie akurat w tej apce trochę się pozmieniały klienta założenia i prawdopodobnie w ogóle nie będę miał backendu tylko front i właduję wsio do Electrona dlatego szukam czegoś do frontu.

Podobne pytania

0 głosów
1 odpowiedź 271 wizyt
pytanie zadane 15 stycznia 2017 w JavaScript przez dkarski Obywatel (1,610 p.)
0 głosów
1 odpowiedź 390 wizyt
pytanie zadane 14 września 2018 w PHP przez kuba923 Nowicjusz (150 p.)
0 głosów
3 odpowiedzi 1,707 wizyt
pytanie zadane 8 stycznia 2018 w Java przez marcinconn Obywatel (1,560 p.)

92,539 zapytań

141,382 odpowiedzi

319,476 komentarzy

61,928 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...