Generowanie plików PDF za pomocą JavaScript

Próbuję przekonwertować dane XML na pliki PDF ze strony internetowej i miałem nadzieję, że uda mi się to zrobić całkowicie w JavaScript. Muszę umieć rysować tekst, obrazy i proste kształty. Chciałbym móc to zrobić całkowicie w przeglądarce.

Author: Xufox, 2009-04-12

6 answers

Właśnie napisałem bibliotekę o nazwie jsPDF , która generuje pliki PDF przy użyciu samego Javascript. Jest jeszcze bardzo młody i wkrótce dodam funkcje i poprawki błędów. Mam też kilka pomysłów na obejścia w przeglądarkach, które nie obsługują Uri danych. Jest licencjonowany na licencji MIT.

Natknąłem się na to pytanie zanim zacząłem je pisać i pomyślałem, że wrócę i dam Ci znać:)

Generowanie plików PDF w Javascript

Przykład utwórz " Hello Świat " plik PDF.

// Default export is a4 paper, portrait, using milimeters for units
var doc = new jsPDF()

doc.text('Hello world!', 10, 10)
doc.save('a4.pdf')
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.5/jspdf.debug.js"></script>
 349
Author: James Hall,
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
2018-05-28 12:18:46

Kolejną biblioteką javascript, o której warto wspomnieć, jest pdfmake.

Obsługa przeglądarki nie wydaje się być tak silna jak jsPDF, ani nie wydaje się, że istnieje opcja dla kształtów, ale opcje formatowania tekstu są bardziej zaawansowane niż opcje dostępne obecnie w jsPDF.

 100
Author: mg1075,
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
2014-05-07 12:13:18

Utrzymuję PDFKit , który również zasila pdfmake (już wspomniano tutaj). Działa zarówno w Node, jak i w przeglądarce i obsługuje wiele rzeczy, których nie robią inne biblioteki: {]}

  • osadzanie podzestawowych czcionek, z obsługą unicode.
  • Wiele zaawansowanych elementów układu tekstu (kolumny, łamanie stron, pełne łamanie linii unicode, podstawowy tekst bogaty itp.).
  • praca nad jeszcze większą ilością czcionek dla zaawansowanej typografii (ligatury OpenType/AAT, podstawienie kontekstowe, itd.). Wkrótce: jeśli jesteś zainteresowany, zobacz gałąź fontkit.
  • Więcej Rzeczy graficznych: gradienty itp.
  • zbudowany z nowoczesnych narzędzi, takich jak browserify i streams. Użyteczne zarówno w przeglądarce jak i w węźle.

Zobacz http://pdfkit.org / dla pełnego samouczka, aby zobaczyć na własne oczy, co PDFKit może zrobić. Aby dowiedzieć się, jakie rodzaje dokumentów można tworzyć, zapoznaj się z dokumentami w formacie PDF wygenerowanym z niektórych plików Markdown przy użyciu samego PDFKit: http://pdfkit.org/docs/guide.pdf .

Możesz również wypróbować go interaktywnie w przeglądarce tutaj: http://pdfkit.org/demo/browser.html .

 46
Author: devongovett,
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-02-05 03:35:12

Kolejnym ciekawym projektem jest texlive.js .

Pozwala skompilować (La)TeX do PDF w przeglądarce.

 7
Author: Kpym,
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-05-30 13:39:01

Możesz skorzystać z tej bezpłatnej usługi dodając link, który tworzy plik pdf z dowolnego adresu url (np. http://www.phys.org):

Http://freehtmltopdf.com/?convert=http%3A%2F%2Fwww.phys.org&size=US_Letter&orientation=portrait&framesize=800&language=en

 2
Author: numbtongue,
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-04-22 01:57:36

Nawet jeśli możesz wygenerować plik PDF w pamięci w JavaScript, nadal będziesz miał problem z przeniesieniem tych danych do użytkownika. Trudno jest JavaScript po prostu wypchnąć plik na użytkownika.

Aby uzyskać plik do użytkownika, należy zrobić serwer przesłać w celu uzyskania przeglądarki, aby wywołać okno Zapisz.

Z tym powiedziane, to naprawdę nie jest zbyt trudne do generowania plików PDF. Po prostu przeczytaj specyfikację.

 -15
Author: Frank Krueger,
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
2009-04-12 23:21:16