Создание PDF-файлов с помощью JavaScript

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

6 ответов


Я только что написал библиотеку под названием jsPDF который генерирует PDF-файлы, используя только Javascript. Он еще очень молод, и я скоро добавлю функции и исправления ошибок. Также есть несколько идей для обходных путей в браузерах, которые не поддерживают URIs данных. Он лицензирован по либеральной лицензии 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 стоит упомянуть .

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


Я PDFKit, который также питает pdfmake (уже упоминалось здесь). Он работает как в узле, так и в браузере и поддерживает кучу вещей, которые другие библиотеки не делают:

  • встраивание вложенных шрифтов с поддержкой unicode.
  • много расширенного макета текста (столбцы, разрыв страницы, полный разрыв строки unicode, базовый богатый текст и т. д.).
  • работа над еще большим количеством шрифтов для расширенной типографии (лигатуры OpenType/AAT, контекстуальные замены, и т. д.). Скоро: см. ветку fontkit, если вам интересно.
  • больше графических материалов: градиенты и т. д.
  • построенный с современными инструментами, такими как browserify и streams. Используется как в браузере, так и в узле.

проверить 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):

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


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

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

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