Ответы:
Я только что написал библиотеку под названием jsPDF, которая генерирует PDF-файлы, используя только Javascript. Он еще очень молодой, и я скоро добавлю функции и исправления ошибок. Также есть несколько идей для обходных путей в браузерах, которые не поддерживают URI данных. Он лицензирован по либеральной лицензии MIT.
Я наткнулся на этот вопрос, прежде чем начал писать, и подумал, что вернусь и дам вам знать :)
Создание PDF-файлов в Javascript
Пример создания файла PDF "Hello World".
// 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>
Другая библиотека javascript, о которой стоит упомянуть, это pdfmake .
Поддержка браузера не такая сильная, как у jsPDF, и при этом не существует опций для фигур, но опции для форматирования текста более продвинуты, чем опции, доступные в настоящее время в jsPDF.
Я поддерживаю PDFKit , который также поддерживает pdfmake (уже упоминалось здесь). Он работает как в Node, так и в браузере, и поддерживает множество вещей, которых нет в других библиотеках:
Посетите http://pdfkit.org/ для полного урока, чтобы увидеть, что может сделать PDFKit. А для примера того, какие виды документов могут быть созданы, посмотрите документы в формате PDF, сгенерированные из некоторых файлов Markdown с использованием самого PDFKit: http://pdfkit.org/docs/guide.pdf .
Вы также можете попробовать это в интерактивном режиме в браузере здесь: http://pdfkit.org/demo/browser.html .
Еще один интересный проект - texlive.js .
Это позволяет вам скомпилировать (La) TeX в PDF в браузере.
Вы можете использовать этот бесплатный сервис, добавив ссылку, которая создает pdf из любого URL (например, http://www.phys.org ):
Даже если бы вы могли генерировать PDF в памяти в JavaScript, у вас все равно была бы проблема передачи этих данных пользователю. Для JavaScript трудно просто отправить файл пользователю.
Чтобы передать файл пользователю, вы должны выполнить отправку на сервер, чтобы браузер вызвал диалог сохранения.
С учетом сказанного, на самом деле не так уж и сложно создавать PDF-файлы. Просто прочитайте спецификацию.