Я пытаюсь преобразовать XML-данные в PDF-файлы с веб-страницы и надеялся, что смогу сделать это полностью в JavaScript. Мне нужно уметь рисовать текст, изображения и простые формы. Я хотел бы быть в состоянии сделать это полностью в браузере.

Я только что написал библиотеку с именем jsPDF Отметьте ответ Эмери ниже для подробностей

Я пришел перед тем, как приступить к написанию этого вопроса, я подумал, что вернусь и сообщу :)

Создание 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, так и в браузере, и поддерживает кучу вещей, которых нет в других библиотеках:

  • Встраивание заданных шрифтов с поддержкой юникода.
  • Множество продвинутых текстовых макетов (столбцы, разрыв страницы, полный разрыв строки в юникоде, базовый форматированный текст и т. Д.).
  • Работа над еще большим количеством шрифтов для расширенной типографии (лигатуры OpenType / AAT, контекстная замена и т. Д.). Скоро: смотрите ветку fontkit, если вам интересно.
  • Дополнительные графические материалы: градиенты и т. Д.
  • http://msdn.microsoft.com/en-us/library/ie/ms536957 (v = vs.85) .aspx

Ознакомьтесь с Http://pdfkit.org/ для полного учебного пособия, чтобы лично убедиться, что PDFKit может сделать. А для примера того, какие виды документов могут быть созданы, ознакомьтесь с документами в виде PDF сгенерированного Когда вы говорите, что http://pdfkit.org/docs/guide.pdf Глядя на вывод

. Вы также можете попробовать его в интерактивном режиме. в браузере здесь: http://pdfkit.org/demo/browser.html Глядя на вывод

Еще один интересный проект — texlive.js Глядя на вывод

. Он позволяет вам скомпилировать (La) TeX в PDF в браузере.

Даже если бы вы могли генерировать PDF в памяти в JavaScript, у вас все равно была бы проблема передачи этих данных пользователю. Для JavaScript трудно просто отправить файл пользователю.

Чтобы передать файл пользователю, вы должны выполнить отправку на сервер, чтобы браузер вызвал диалоговое окно сохранения.

С этим сказал, что на самом деле не так уж сложно создавать PDF-файлы. Просто прочитайте спецификацию.