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

HTML to PDF - najlepsze rozwiązanie dla JS'a

VPS Starter Arubacloud
+1 głos
608 wizyt
pytanie zadane 18 sierpnia 2017 w JavaScript przez Kondzio Mądrala (5,230 p.)
Witam, potrzebuję dobrego sposobu na konwertowanie strony HTML do pliku PDF. Podstronka nie jest skomplikowana, składa się głównie z inputów, które użytkownik może dowolnie zmieniać, a potem ściągać. Niestety, funkcjonalność MUSI działać na każdej z przeglądarek. Przejrzałem mnóstwo kodu, pytałem na forach, dalej nic.. a skorzystałem do tej pory z:

-> jsPDF - spoko jest, ale bez styli CSS więc trochę słabo, dodatkowo nie wspomaga UTF-8 co już jest kompletną porażką.

-> pdfmake - z tego co wiem, nie da się tu importować z danej strony, a jedynie stylizować gotowe PDFy, nie wspominając o pobieraniu info o zmieniających się inputach.

-> @media print - działa spoko, zachowuje style i wszystko, chrome łyka to bez problemu. Gorzej z resztą przeglądarek, nie radzą sobie ze ściąganiem do pliku danego druku i zapisaniem jako PDF.

-> wspomaganie się canvasem - jakość za słaba.

Nie mam pojęcia nawet, czy jest jeszcze jakieś inne wyjście. Może ktoś pomóc?
1
komentarz 18 sierpnia 2017 przez ScriptyChris Mędrzec (190,190 p.)

@media print

Może trzeba dla innych przeglądarek dodać odpowiednie prefixy

komentarz 19 sierpnia 2017 przez Kondzio Mądrala (5,230 p.)
Szczerze mówiąc nie wydaje mi się, że to o prefixy chodzi ;p ale temat chyba już do zamknięcia, przestaje się bawić z tym JS'em i zrobię to w JAVie. Ale dzięki :)
komentarz 19 sierpnia 2017 przez ScriptyChris Mędrzec (190,190 p.)

nie wydaje mi się

Sprawdź - jeśli się uda, to nie będziesz musiał od nowa implementować tego w innym języku.

2 odpowiedzi

+2 głosów
odpowiedź 22 sierpnia 2017 przez Comandeer Guru (599,730 p.)

Skoro Chrome łyka bez problemu, to użyj Chrome Headless, wygeneruj plik na serwerze i poślij userowi. Można wykorzystać np. Puppeteera.

komentarz 22 sierpnia 2017 przez Kondzio Mądrala (5,230 p.)
No nie pisałem już tutaj, ale faktycznie na innych przeglądarkach nawet z prefixami nie działa. Ale wypróbuję z ciekawości ;)
komentarz 22 sierpnia 2017 przez Kondzio Mądrala (5,230 p.)
Zastanawiam się tylko, czy mogę to wygenerować w takiej sytuacji: użytkownik wchodzi na podstronę z dokumentem, który może edytować (dodać swoje imię np). Zapisuje to ale np na IE/mozilli. Czy mogę to wtedy jakoś wykorzystać, czy już nie bardzo?
1
komentarz 22 sierpnia 2017 przez Comandeer Guru (599,730 p.)
Ja mówię o odpaleniu Chrome na serwerze, user dostaje po prostu gotowego PDF-a.
komentarz 22 sierpnia 2017 przez Kondzio Mądrala (5,230 p.)
Okej, myślicie, że da się to połączyć ze $scope angulara dla wydarzenia ng-click? I miałeś może styczność z tym puppeteerem? Nie mam aktualnie dostępu do kodowania i zastanawiam się czy jest jakiś sposób, żeby wywołać ściągnięcie danego pliku?
1
komentarz 22 sierpnia 2017 przez ScriptyChris Mędrzec (190,190 p.)

Jeśli to biblioteka pod Node, to ze strony Angulara na ng-click możesz wysłać request do Node (za pomocą $http lub $resource) i on wtedy zrobi, co trzeba.

1
komentarz 23 sierpnia 2017 przez Comandeer Guru (599,730 p.)

Logika takiego rozwiązania sprowadza się do dwóch etapów:

  1. Odpalenia Puppeteera i zrobienia PDF-a.
  2. Wyslania odpowiedzi userowi.

Jeśli będziesz mieć zapisany na dysku PDF, to wysyłasz go tak samo, jak każdy inny plik do usera.

+1 głos
odpowiedź 21 sierpnia 2017 przez bartek-koduje Bywalec (2,490 p.)
edycja 22 sierpnia 2017 przez bartek-koduje

Polecam domPDF 

poniżej masz link do githuba:

https://github.com/exponentcms/dompdf/blob/master/www/demo.php

A tutaj link do DEMO:

http://www.pxd.me/dompdf/www/examples.php

 

Myślę, że z obsługą i wdrożeniem tego u siebie nie powinieneś mieć problemów. Powodzenia!

komentarz 22 sierpnia 2017 przez Kondzio Mądrala (5,230 p.)
edycja 22 sierpnia 2017 przez Kondzio
też bardzo spoko opcja, dzięki, sprawdzę ;)

 

@edit nie spojrzałem, że to php - odpada :p backend w javie

Podobne pytania

0 głosów
2 odpowiedzi 203 wizyt
0 głosów
1 odpowiedź 443 wizyt
0 głosów
1 odpowiedź 640 wizyt
pytanie zadane 27 lipca 2017 w JavaScript przez Kondzio Mądrala (5,230 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...