Pdfmake — простое создание PDF документов используя JavaScript

Pdfmake - простое создание PDF документов используя JavaScript

От автора: в данном видео я хотел бы рассмотреть создание PDFдокументов на стороне клиента, то есть используя функционал языка JavaScript. При этом мы воспользуемся готовой библиотекой под названием Pdfmake ,благодаря которой можно быстро создать документ выше указанного формата не задействуя серверный язык программирования. Готовясь к данному уроку, я перебрал множество различных библиотек, но свой выбор все же сделал в пользу Pdfmake, хотя некоторые из рассмотренных мной, были функциональнее и более удобны в работе. Так почему же я предлагаю Вам использовать данную библиотеку, спросите Вы, главное ее преимущество это полная поддержка кириллических символов, что позволит создавать документы на русском языке.

скачать исходникискачать урок

Официальный сайт библиотеки Вы найдете по следующей ссылке.

На странице “Getting Started (Docs)” Вы найдете официальную документацию по данной библиотеке. Для установки библиотеки, необходимо перейти по ссылке “Sources”, на страничку pdfmake, сервиса GitHub, где собственно мы получим возможность скачивания данной библиотеки.

Скачав архив последней актуальной версии Pdfmake, необходимо его распаковать и в полученном каталоге найти папку build. В данной папке нас интересуют два файла:pdfmake.min.js – собственно это и есть библиотека и vfs_fonts.js – библиотека работы со шрифтами.

Вышеуказанные файлы копируем в каталог хранения скриптов языка JavaScript и подключаем на интересующем сайте.

Так же подключим пустой файл script.js, в котором мы будем писать код.

Далее открываем пустой файл script.js в текстовом редакторе и создадим переменную docInfo, которая будет хранить в себе объект с информацией о будущем документе. То есть дальнейшее формирование документа будет сведено к определению свойств объекта docInfo.

Первым делом определим основные параметры документа PDF.

Свойство info, определяет основные параметры документа в целом:

title – заголовок документа.

author – автор.

subject – тема.

keywords – ключевые слова.

Далее зададим параметры листов документа.

Используемые свойства.

pageSize – размер листов документов. Полный список поддерживаемых значений приведен в документации.

pageOrientation – расположение страницы.

pageMargins – отступы(от левого края, от верхнего края, от правого края, от нижнего края).

Далее зададим верхний колонтитул.

Свойство header, может принимать в качестве значения, анонимную функцию, которая должна вернуть объект с данными верхнего колонтитула:

text – текст верхнего колонтитула.

alignment – расположение текста.

margin – внешние отступы.

В качестве параметров анонимная функция принимает переменную currentPage – объект текущей страницы и переменную pageCount – общее количество страниц документа. Помимо верхнего колонтитула, мы можем задать по аналогии – нижний.

Скорее всего, Вы догадались, что свойство footer, хранит объект с информацией нижнего колонтитула. При этом свойство text, содержит текст колонтитула, а alignment – определяет его расположение.

Для создания контента документа, используется свойство content, которое содержит в себе массив объектов. Каждая ячейка массива, а значит и объект – это отдельный параграф с информацией документа.

Обратите внимание, что параграф формируется объектом, со следующими свойствами:

text – текст параграфа;

fontSize – размер шрифта;

margin – внешний отступ;

pageBreak – разрыв страницы. Если указано значение after – разрыв страницы будет определен после текущего параграфа, если указано значение before– разрыв, будет перед текущим параграфом;

style – имя стиля оформления текста параграфа.

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

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

Размеры колонок задаются в свойстве width. При этом ширину Вы можете задавать, используя значения в пикселях, в процентах,а так же использовать автоматическое определение ширины, в зависимости от контента (auto), и вместо значения указывать ‘*’, тем самым определяя ширину на все оставшееся место. Оступы между коолонками задаются в свойстве columnGap.

Для создания таблиц, достаточно в одном из параграфов, определить объект table.

При этом, в свойстве widths, определяется массив с количеством и шириной колонок, в свойстве body – массив объектов с информацией отображаемой непосредственно в ячейках таблицы. При этом каждая ячейка данного массива – это отдельная строка таблицы. Свойство headerRows – определяет, сколько строк таблицы принимается в качестве шапки.

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

Аналогично реализуется нумерованный список.

После того как объект будущего документа, определен мы можем сгенерировать документ PDF, обращаясь к объекту pdfMake и вызывая на исполнение метод createPdf().

Для отдачи документа на скачивание, необходимо вызвать на исполнение метод download() и в качестве первого аргумента передать имя файла сгенерированного PDFдокумента.

На этом данный урок завершен. Всего Вам доброго и удачного кодирования!!!

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии (7)