
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 به معنای توانایی اعمال ویژگیهای مختلف سبکبندی مانند سبکهای قلم، رنگها، اندازهها، ترازبندیها و سایر موارد به عناصر مختلف داخل سند 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!');
