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 можете да изложите потребителски помощни функции към шаблона. Това позволява на шаблона да извършва изчисления, форматира дати или манипулира низове вътрешно, без да е необходимо предварително обработване на всяка част от данните във вашата основна бизнес логика.