Создание PDF-файлов с помощью JavaScript - PullRequest
235 голосов
/ 12 апреля 2009

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

Ответы [ 6 ]

392 голосов
/ 22 апреля 2009

Я только что написал библиотеку под названием 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>
119 голосов
/ 07 мая 2014

Следует упомянуть еще одну библиотеку javascript: pdfmake .

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

51 голосов
/ 05 февраля 2015

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

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

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

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

7 голосов
/ 30 мая 2016

Еще один интересный проект - texlive.js .

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

2 голосов
/ 22 апреля 2015

Вы можете использовать эту бесплатную услугу, добавив ссылку, которая создает 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

0 голосов
/ 13 апреля 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...