Создание PDF-файлов с помощью бесплатного JavaScript API
Библиотека Pure JavaScript с открытым исходным кодом поддерживает создание PDF-документов и манипулирование ими для Node и веб-браузера.
PDFMake — очень мощная библиотека JavaScript с открытым исходным кодом, которая позволяет разработчикам программного обеспечения решать задачи, связанные с созданием PDF-документов и управлением ими с помощью команд JavaScript. Самое замечательное в библиотеке то, что вы можете легко указать данные для создания PDF, используя формат объекта определения документа.
Библиотека PDFmake включает поддержку нескольких важных функций, связанных с обработкой документов PDF, таких как добавление изображений и текстового содержимого в документы PDF, перенос строк, выравнивание текста, вставка таблиц и управление ими, использование стилей, добавление верхних и нижних колонтитулов, ориентация страницы и поля. поддержка, встраивание шрифтов и графики, создание таблиц содержания, поддержка разрывов страниц и многое другое.
Библиотека очень стабильна и может быть легко использована как на стороне клиента, так и на стороне сервера. Его можно запустить в браузере и в Node.js. Он включает поддержку нескольких популярных браузеров, таких как Internet Explorer 10+, Edge 12+, Firefox, Chrome, Opera, Safari и так далее.
Начало работы с PDFMake
PDFMake доступен на npm, вы можете легко загрузить его и установить на свой компьютер. Пожалуйста, используйте следующую команду для плавной установки.
Установите PDFMake с помощью Bower
bower install pdfmake
Создавайте PDF-файлы с помощью библиотеки JavaScript
Библиотека JavaScript с открытым исходным кодом PDFMake позволяет программистам легко создавать PDF-документы в своих собственных приложениях с использованием кода JavaScript. Библиотека предоставила полный набор функций для работы с PDF-файлами, таких как выбор типов шрифтов с размером, цветом и форматированием, добавление новой страницы, вставка столбцов, добавление и применение стилей, вставка таблиц, удаление ненужных страниц и многое другое. более.
Добавить верхние и нижние колонтитулы в файл PDF
Верхние и нижние колонтитулы являются очень полезными частями PDF-документов и могут использоваться для включения той части контента, которую пользователи хотят отображать на каждой странице документа, такой как имя автора, название документа, номера страниц, логотип и многое другое. Библиотека JavaScript PDFMake обеспечивает полную поддержку добавления и изменения верхних и нижних колонтитулов в документе PDF. Он поддерживает такие функции, как добавление повторяющегося верхнего/нижнего колонтитула, вставка изображений в верхний/нижний колонтитул, добавление номеров страниц и многое другое.
Верхние и нижние колонтитулы в PDF через JavaScript
var docDefinition = {
header: 'simple text',
footer: {
columns: [
'Left part',
{ text: 'Right part', alignment: 'right' }
]
},
content: (...)
};
Вставка изображений в файлы PDF
Библиотека JavaScript с открытым исходным кодом PDFMake обеспечивает полную поддержку добавления и изменения изображений внутри PDF-файлов с помощью команд JavaScript. Библиотека предоставляет функции для установки ширины и высоты изображения, размещения изображения внутри прямоугольника, вызова изображения через URL-адреса, пропорционального масштабирования изображения и растяжения изображения. Если вы хотите использовать одно и то же изображение в нескольких узлах, вам нужно поместить его в словарь изображений и просто вызвать по имени.
Добавляйте изображения в PDF через JavaScript
var docDefinition = {
content: [
{
// you'll most often use dataURI images on the browser side
// if no width/height/fit is provided, the original size will be used
image: 'data:image/jpeg;base64,...encodedContent...'
},
{
// if you specify width, image will scale proportionally
image: 'data:image/jpeg;base64,...encodedContent...',
width: 150
},
{
// if you specify both width and height - image will be stretched
image: 'data:image/jpeg;base64,...encodedContent...',
width: 150,
height: 150
},
{
// you can also fit the image inside a rectangle
image: 'data:image/jpeg;base64,...encodedContent...',
fit: [100, 100]
},
{
// if you reuse the same image in multiple nodes,
// you should put it to to images dictionary and reference it by name
image: 'mySuperImage'
},
{
image: 'myImageDictionary/image1.jpg'
},
{
// in browser is supported loading images via url from reference by name in images
image: 'snow'
},
{
image: 'strawberries'
},
],
images: {
mySuperImage: 'data:image/jpeg;base64,...content...',
snow: 'https://picsum.photos/seed/picsum/200/300',
strawberries: {
url: 'https://picsum.photos/id/1080/367/267'
headers: {
myheader: '123',
myotherheader: 'abc',
}
}
}
};
Ориентация страницы и поддержка полей
Бесплатная библиотека JavaScript PDFMake включает поддержку настройки размера страницы, ориентации страницы, а также полей страницы в приложениях JavaScript. Чтобы установить размер страницы, вам необходимо указать ширину и высоту новой страницы. По умолчанию в библиотеке используется портретная ориентация страницы, но ее можно легко изменить на альбомную с помощью однострочного кода. Он также обеспечивает поддержку установки полей страницы и позволяет пользователям динамически управлять разрывами страниц. Он поддерживает левые, верхние, правые, нижние, а также горизонтальные и вертикальные поля.
Соберите библиотеку для компилятора
var dd = {
content: [
{
stack: [
'This header has both top and bottom margins defined',
{text: 'This is a subheader', style: 'subheader'},
],
style: 'header'
},
{
text: [
'Margins have slightly different behavior than other layout properties. They are not inherited, unlike anything else. They\'re applied only to those nodes which explicitly ',
'set margin or style property.\n',
]
},
{
text: 'This paragraph (consisting of a single line) directly sets top and bottom margin to 20',
margin: [0, 20],
},
{
stack: [
{text: [
'This line begins a stack of paragraphs. The whole stack uses a ',
{text: 'superMargin', italics: true},
' style (with margin and fontSize properties).',
]
},
{text: ['When you look at the', {text: ' document definition', italics: true}, ', you will notice that fontSize is inherited by all paragraphs inside the stack.']},
'Margin however is only applied once (to the whole stack).'
],
style: 'superMargin'
},
],
styles: {
header: {
fontSize: 18,
bold: true,
alignment: 'right',
margin: [0, 190, 0, 80]
},
subheader: {
fontSize: 14
},
superMargin: {
margin: [20, 0, 40, 0],
fontSize: 15
}
}
}
Вставка таблиц в PDF через JavaScript
Библиотека PDFMake с открытым исходным кодом позволяет программистам вставлять и обновлять таблицы внутри PDF-файлов. Библиотека поддерживает различные расширенные функции для обработки столбцов и ячеек строк таблицы. Он включает поддержку выравнивания таблицы, стилей границ таблицы, определения ширины в процентах, поворота таблиц, определения строки заголовка таблицы на новой странице и многое другое.
Соберите библиотеку для компилятора
var docDefinition = {
content: [
{
layout: 'lightHorizontalLines', // optional
table: {
// headers are automatically repeated if the table spans over multiple pages
// you can declare how many rows should be treated as headers
headerRows: 1,
widths: [ '*', 'auto', 100, '*' ],
body: [
[ 'First', 'Second', 'Third', 'The last one' ],
[ 'Value 1', 'Value 2', 'Value 3', 'Value 4' ],
[ { text: 'Bold value', bold: true }, 'Val 2', 'Val 3', 'Val 4' ]
]
}
}
]
};
pdfMake.createPdf(docDefinition, tableLayouts, fonts, vfs)
// tableLayouts, fonts and vfs are all optional - falsy values will cause