2013-06-26 10 views
11

Czy każdy, kto pracował nad czymś podobnym, może opisać ogólny proces? Jestem teraz bardzo zdezorientowany. Według raportu mam na myśli atrakcyjny wizualnie dokument z logo, tabelami, nagłówkami i stopkami, a dane będą pobierane dynamicznie.Najczęściej stosowane podejście do generowania raportu PDF (JavaScript, node.js)?

Podejścia Spojrzałem na to:

  1. korzystać z biblioteki po stronie serwera (moduł node.js), który generuje plik PDF. Wyślij reprezentację łańcuchową jako odpowiedź z Content-Type: application/pdf. Problem: Wybrałem PDFKit, ale nie działa i nie wyświetla się żadna treść. Korzysta z formatu PDF 1.3, który jest stary.

  2. Generowanie pliku PDF po stronie klienta. Problem: Najpopularniejszą biblioteką wydaje się być jsPDF, ale nie jest ona zdolna do tworzenia wyrafinowanych dokumentów.

  3. Napisz szablon w kodzie źródłowym PDF i wypełnij dane po stronie serwera. Problem: Kodowanie jest dziwne, na przykład jeśli robię tylko doc.text("1"), wiele nierozpoznawalnych znaków pojawia się tylko dla ciągu "1". Jestem bardzo zdezorientowany.

Wreszcie, będzie bardzo pomocne, jeśli ktoś poda link, który pomoże mi zrozumieć kodowanie! To jest dla mnie bardzo mylące.

Każde doświadczenie z podobnymi zadaniami jest bardzo doceniane!

+0

Zobacz również [JavaScript generator PDF Library] (http://stackoverflow.com/questions/20029132/javascript-pdf-generator-library/28335483). –

+0

@DanDascalescu link's post został usunięty – jawath

+0

@jawath: to pytanie zostało * usunięte * przez SO mods jako "off topic", ponieważ samo zamknięcie go nie było wystarczające. Proszę kierować skargi do moderatorów takich jak mureinik. –

Odpowiedz

3

Nie jestem pewien, jakie jest najbardziej powszechne podejście, ale osobiście lubię tworzyć szablon HTML, umieszczać go w moim kodzie po stronie serwera, a następnie użyć wkhtmltopdf do konwersji HTML na PDF. Jeśli używasz .NET należy sprawdzić WkHtmlToXSharp (co jest opakowaniem NET wkhtmltopdf.)

+0

To narzędzie jest ** naprawdę ** doskonałe i łatwe w użyciu. – Blauhirn

+0

Powyższy link nie działa. Oto nowy link https://wkhtmltopdf.org/ –

+0

@JamesYoung Thanks. Zaktualizowałem link. – AlliterativeAlice

13

ja osobiście nie zrobił tego, ale pierwszą rzeczą, chciałbym spróbować byłoby:

  1. po stronie serwera dynamicznie zbudować odpowiedni dokument HTML i CSS
  2. Używaj phantomJS do renderowania tego dokumentu
  3. powiedzieć phantomJS przekonwertować dokument do PDF, zapisany w pliku temp
  4. Wyślij PDF z powrotem jako odpowiedź HTTP pisząc temp plik PDF do ciała reakcji
  5. Usuń plik temp

Jeśli mają trudności z typem zawartości, Content-Disposition, etc, nie powinno się martwić, że jeśli masz poprawny plik pdf na dysku i po prostu zapisz te dane w odpowiedzi HTTP. Przy właściwych nagłówkach powinieneś móc poprosić przeglądarkę, aby wyświetliła plik PDF lub potraktowała go jako plik do zapisania jako plik do pobrania.

+0

Ile to zajmie dla 1000 html strony z 1GB RAM? –

7

Jako członek zespołu jsreport, dałbym mu szansę.

jsreport platforma zapewnia wiele sposobów generowania raportów PDF. Najczęstszym z nich jest przekształcenie html na pdf przy użyciu phantomjs. jsreport będzie również kompilował i renderował kierownicę lub jsrender szablonów html, jeśli jest określony, może osadzać obrazy, dodawać nagłówek/stopkę, uruchamiać niestandardowe javascripts i więcej.

Można grać z „Hello World Phantom PDF” przykład i zobaczyć opcje masz https://playground.jsreport.net

Kiedy skończysz grę, można użyć jsreport online lub download and install serwer jsreport do swojej firmy. Następnie jesteś gotowy, aby zadzwonić pod numer REST API i wygenerować raporty.

Więcej na pytanie

  • jsreport zapewni prawidłowy typ zawartości w odpowiedzi na PDF lub HTML. można po prostu pozwolić przeglądarkę, aby wyświetlić wynik
  • dane mogą być wysyłane do jsreport api lub retreived przez niestandardowy skrypt
+0

jsreport to świetne narzędzie, ale niestety z bardzo małą ilością dokumentacji. Zastanawiam się, dlaczego nie ma przykładów, jak używać go z lokami lub z innej strony internetowej. W szczególności próbuję wdrożyć jsreport, aby działał w tle, uzyskiwać do niego dostęp z moich aplikacji opartych na nodejs i dostarczać plik pdf użytkownikowi. –

Powiązane problemy