JavaScript API для створення динамічних Word‑документів
Бібліотека JavaScript з відкритим кодом для створення динамічних Word‑документів за допомогою Node.js та браузерних застосувань.
Що таке Docx-templates?
Docx-Templates — це бібліотека JavaScript з відкритим кодом, яка дозволяє розробникам програмного забезпечення створювати динамічні документи Microsoft Word (.docx) за допомогою заздалегідь підготовлених шаблонів. Замість того, щоб вручну будувати Word‑документи програмно, розробники можуть створювати шаблони у Microsoft Word і впроваджувати динамічні дані за допомогою вбудованих команд. Ця бібліотека працює як у середовищі Node.js, так і в браузері, що робить її надзвичайно універсальною для сучасних веб‑ та серверних застосувань. Вона обробляє файли DOCX, розбираючи їхню внутрішню XML‑структуру та замінюючи команди шаблону на фактичні дані під час виконання.
Бібліотека Docx-Templates — потужний, з відкритим вихідним кодом інструмент, розроблений як для середовища Node.js, так і для браузерів. Основна перевага бібліотеки — розділення дизайну та логіки. Користувачі без технічних навичок можуть створювати макет і оформлення у Word, тоді як розробники зосереджуються на впровадженні даних. Вона підтримує складну логіку, таку як цикли, умовне форматування та навіть виконання фрагментів JavaScript безпосередньо в документі. Це робить її ідеальним рішенням для розробників, яким потрібно створювати високоякісні звіти без боротьби з XML або пропрієтарними інструментами дизайну.
Початок роботи з Docx-templates
Рекомендований спосіб встановлення бібліотеки Docx-templates — через npm. Будь ласка, використайте наступну команду для безпроблемної інсталяції
Встановити Docx-Templates через NPM
$ npm install docx-templates Встановити Docx-Templates через Yarn/strong>
$ yarn add docx-templates Генерація документів на основі шаблонів через JS API
Відкрита бібліотека Docx-Templates дозволяє розробникам програмного забезпечення створювати документи у Word та динамічно вставляти дані за допомогою простих команд. Такий підхід розділяє презентацію та логіку, роблячи шаблони легкими у керуванні та оновленні без зміни коду. Ви можете безпосередньо отримувати доступ до властивостей вашого об’єкта даних або навіть виконувати прості вирази. Наприклад, щоб вставити повне ім’я, ваш шаблон виглядатиме так: {firstName} {surname}. Бібліотека оцінює код і безшовно замінює його.
Як динамічно створювати Word-документи у JavaScript-додатках?
import createReport from 'docx-templates';
import fs from 'fs';
const template = fs.readFileSync('template.docx');
const report = await createReport({
template,
data: { name: 'John', surname: 'Doe' },
});
fs.writeFileSync('output.docx', report);
Динамічне впровадження зображень за допомогою JavaScript
Окрім тексту, відкрита бібліотека Docx-Templates може динамічно вставляти зображення. Це включає локальні файли, зображення за URL або навіть програмно згенеровані QR-коди. Ви можете керувати розміром зображення та його розташуванням. Ця функція є революційною для створення ідентифікаційних бейджів, каталогів продукції або звітів, які потребують динамічних діаграм та візуальних доказів. Ось простий приклад, який демонструє, як вставити зображення у документи Word за допомогою JavaScript API.
Як вставити зображення «на льоту» у Word-документи за допомогою JavaScript API?
const buffer = await createReport({
template,
data: {
userAvatar: async () => {
const resp = await fetch('https://example.com/photo.png');
return { width: 3, height: 3, data: await resp.arrayBuffer(), extension: '.png' };
}
},
});
// In Word: {IMAGE userAvatar()}
Потужні цикли (FOR/END-FOR)
Обробка списків даних здійснюється безперешкодно за допомогою команди FOR. Ця функція дозволяє ітерувати масиви для створення рядків таблиці, списків або навіть цілих розділів документа. Бібліотека Docx-Templates включила підтримку вкладених циклів, що дозволяє представляти складні ієрархічні структури даних, наприклад список відділів з їхніми співробітниками, при цьому зберігаючи оригінальне оформлення Word. Наведений нижче приклад коду демонструє, як це досягти.
Як застосувати розширений цикл у JavaScript-додатках?
const buffer = await createReport({
template,
data: {
projects: [
{ name: 'SEO Optimization', status: 'Completed' },
{ name: 'API Integration', status: 'In Progress' }
]
},
});
/* In Word:
{FOR project IN projects}
Project: {project.name} - Status: {project.status}
{END-FOR}
*/
Користувацький контекст JavaScript (EXEC)
Однією з найпросунутіших можливостей бібліотеки Docx-Templates є здатність виконувати довільні фрагменти JavaScript за допомогою команди EXEC (або !). Надавши additionalJsContext, ви можете надати шаблону власні допоміжні функції. Це дозволяє шаблону виконувати обчислення, форматувати дати або маніпулювати рядками всередині без необхідності попередньо обробляти кожен елемент даних у вашій основній логіці застосунку.