
Docxtemplater
Безкоштовна бібліотека Node.js для створення та управління Word DOCX за шаблонами
Ведуча бібліотека з відкритим вихідним кодом Node.js дозволяє створювати, редагувати та маніпулювати документами Word DOCX, XLSX динамічно, використовуючи простий шаблонний підхід через API JavaScript.
Що таке 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 означає можливість застосовувати різноманітні атрибути стилю, такі як шрифти, кольори, розміри, вирівнювання та інше до різних елементів документа. Це включає форматування тексту, таблиць, зображень, абзаців, секцій, списків, маркерованих пунктів та іншого контенту для підвищення читабельності та візуальної привабливості. Нижче наведено простий приклад, який показує, як застосувати розширене форматування до частини тексту у документі.
Як застосувати розширене форматування до тексту за допомогою 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!');
