
Docxtemplater
Бесплатная библиотека Node.js для создания & управления Word DOCX из шаблонов
Ведущая открытая библиотека Node.js позволяет создавать, редактировать и манипулировать документами Word DOCX, XLSX динамически, используя простой подход на основе шаблонов через JavaScript API.
Что такое Docxtemplater?
В современном быстро меняющемся цифровом мире эффективность имеет первостепенное значение, особенно когда речь идет об управлении документами. Независимо от того, нужно ли пользователям составлять контракты, генерировать отчеты или писать персонализированные письма, наличие надежного инструмента для автоматизации создания документов может сэкономить им драгоценное время и ресурсы. Представляем Docxtemplater — мощную библиотеку, упрощающую процесс создания Word‑документов из шаблонов. Библиотека позволяет генерировать документы на основе шаблонов, где заполнители внутри шаблона Word‑документа заменяются реальными данными для создания окончательного документа.
В своей основе Docxtemplater — мощная открытая библиотека JavaScript, позволяющая разработчикам создавать и управлять динамическими документами Word, Excel и PowerPoint, объединяя данные с предопределённым шаблоном. Используя формат OpenXML, библиотека предоставляет детальный контроль над структурой и содержимым пользовательских документов, позволяя вставлять заполнители, которые будут заменены реальными данными во время выполнения.
Docxtemplater — универсальная библиотека, позволяющая разработчикам легко автоматизировать создание документов. Благодаря использованию шаблонов и объединения данных, вы можете оптимизировать процесс работы с документами и значительно повысить продуктивность. При правильном использовании библиотеки разработчики могут легко генерировать динамические документы, адаптированные к их конкретным потребностям. Независимо от того, автоматизируете ли вы задачи генерации документов или персонализируете отчёты, Docxtemplater — ценный инструмент в вашем арсенале.
Как установить Docxtemplater?
Для установки Docxtemplater вы можете использовать npm, менеджер пакетов для JavaScript. Пожалуйста, выполните следующие команды для успешной установки.
Установить Docxtemplater через npm
npm install --save docxtemplater pizzipСоздание документов Word через шаблон в Node.js
Открытая библиотека Docxtemplater упрощает разработчикам генерацию документов Microsoft Word DOCX с использованием шаблона. Разработчики могут внедрять динамические данные в шаблон, передавая объект с парами «ключ‑значение», чтобы заменить заполнители реальными данными и создать окончательный документ. Приведённый пример демонстрирует, как разработчики могут загрузить существующий шаблон и сгенерировать документ Word из него в среде Node.js.
Как сгенерировать документ Word из шаблона внутри Node.js?
const fs = require('fs');
const Docxtemplater = require('docxtemplater');
// Load the template
const content = fs.readFileSync('template.docx', 'binary');
const doc = new Docxtemplater(content);
// Set data to fill placeholders
const data = {
firstName: 'John',
lastName: 'Doe'
};
// Replace placeholders with actual data
doc.setData(data);
// Render the document
doc.render();
// Save the generated document
const output = fs.writeFileSync('output.docx', doc.getZip().generate({type: 'nodebuffer'}));
console.log('Document generated successfully!');
Добавление пользовательских функций и фильтров в приложениях Node.js
Пользовательские функции и фильтры в библиотеке Docxtemplater предоставляют расширенные возможности для манипулирования данными и выполнения специфических операций внутри шаблонов. Они позволяют пользователям расширять функциональность библиотеки за пределы простого замещения заполнителей, обеспечивая генерацию динамического контента и сложную обработку данных. Вы можете определять пользовательские функции и фильтры для манипуляции данными или выполнения конкретных операций в ваших шаблонах. Ниже приведён пример, показывающий, как разработчики могут реализовать пользовательскую функцию для расчёта общей стоимости товаров в корзине и фильтр для форматирования валютных значений.
Как рассчитать цены товаров в корзине с помощью пользовательской функции и использовать фильтры для форматирования валюты?
const fs = require('fs');
const Docxtemplater = require('docxtemplater');
// Define custom function to calculate total price
function calculateTotal(items) {
return items.reduce((total, item) => total + item.price * item.quantity, 0);
}
// Define custom filter to format currency
function formatCurrency(value) {
return '$' + value.toFixed(2); // Format as dollars with 2 decimal places
}
// Load the template
const content = fs.readFileSync('template.docx', 'binary');
const doc = new Docxtemplater(content, {
parser: {
// Define custom tag for invoking functions
getFunction: function(tag) {
if (tag === 'calculateTotal') {
return calculateTotal;
}
},
// Define custom tag for applying filters
getFilter: function(tag) {
if (tag === 'currency') {
return formatCurrency;
}
}
}
});
// Set data with shopping cart items
const data = {
items: [
{ name: 'Product 1', price: 10, quantity: 2 },
{ name: 'Product 2', price: 20, quantity: 1 },
{ name: 'Product 3', price: 15, quantity: 3 }
]
};
// Replace placeholders with actual data
doc.setData(data);
// Render the document
doc.render();
// Save the generated document
const output = fs.writeFileSync('output.docx', doc.getZip().generate({ type: 'nodebuffer' }));
console.log('Document generated successfully!');
Поддержка богатого форматирования
Открытая библиотека Docxtemplater упрощает процесс создания и управления документами Word, предлагая простой подход на основе шаблонов. Поддержка богатого форматирования в документах Word означает возможность применять различные стилистические атрибуты, такие как стили шрифтов, цвета, размеры, выравнивание и многое другое к различным элементам внутри документа Word. Это включает форматирование текста, таблиц, изображений, абзацев, разделов, списков, маркеров и другого контента для повышения читаемости и визуальной привлекательности. Ниже приведён простой пример, показывающий, как применить богатое форматирование к части текста внутри документа.
Как применить богатое форматирование к тексту с помощью Docxtemplater в приложении Node.js?
// Render the document with custom parser options for rich formatting
doc.render({
parser: {
// Custom tag for interpreting HTML-like tags for rich formatting
tagToken: function(tag) {
return {
tagName: tag.substring(1),
mode: 'open'
};
},
// Apply rich formatting based on tag names
commands: {
b: function(scope, context, tag) {
return {
type: 'applyRichText',
value: { b: true }
};
},
i: function(scope, context, tag) {
return {
type: 'applyRichText',
value: { i: true }
};
},
u: function(scope, context, tag) {
return {
type: 'applyRichText',
value: { u: true }
};
},
strike: function(scope, context, tag) {
return {
type: 'applyRichText',
value: { strike: true }
};
}
}
}
});
// Save the generated document
const output = fs.writeFileSync('output.docx', doc.getZip().generate({ type: 'nodebuffer' }));
console.log('Document generated successfully!');
