Docxtemplater

 
 

مكتبة Node.js مجانية لإنشاء وإدارة مستندات Word DOCX من القوالب

مكتبة Node.js مفتوحة المصدر رائدة تتيح إنشاء، تحرير ومعالجة مستندات Word DOCX و XLSX ديناميكيًا باستخدام نهج بسيط قائم على القوالب عبر واجهة برمجة تطبيقات JavaScript.

ما هو Docxtemplater؟

في عالمنا الرقمي السريع اليوم، الكفاءة أمر حاسم، خاصةً عندما يتعلق الأمر بإدارة المستندات. سواء كان المستخدم يحتاج إلى صياغة عقود، توليد تقارير، أو كتابة رسائل شخصية، فإن وجود أداة موثوقة لأتمتة إنشاء المستندات يمكن أن يوفر له وقتًا وموارد قيمة. هنا يأتي Docxtemplater، مكتبة قوية تبسط عملية إنشاء مستندات Word من القوالب. تتيح المكتبة توليد المستندات بناءً على القالب، حيث يتم استبدال عناصر النائب داخل قالب مستند Word ببيانات فعلية لإنشاء مستند الإخراج النهائي.

في جوهرها، Docxtemplater هي مكتبة JavaScript مفتوحة المصدر قوية تتيح لمطوري البرمجيات إنشاء وإدارة مستندات Word و Excel و PowerPoint الديناميكية من خلال دمج البيانات مع قالب محدد مسبقًا. باستخدام تنسيق OpenXML، توفر المكتبة تحكمًا دقيقًا في بنية ومحتوى مستندات المستخدم، مما يسمح لهم بإدراج عناصر نائب سيتم استبدالها ببيانات فعلية أثناء وقت التشغيل.

Docxtemplater هي مكتبة متعددة الاستخدامات تمكّن مطوري البرمجيات من أتمتة إنشاء المستندات بسهولة. من خلال الاستفادة من قوة القوالب ودمج البيانات، يمكنك تبسيط سير عمل المستندات وزيادة الإنتاجية بشكل كبير. باستخدام المكتبة بشكل صحيح، يمكن لمطوري البرمجيات توليد مستندات ديناميكية مخصصة لاحتياجاتهم الخاصة بسهولة. سواءً كنت تُؤتمت مهام إنشاء المستندات أو تُخصص التقارير، فإن Docxtemplater أداة قيمة في مجموعتك.

Previous Next

كيفية تثبيت 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!');

 عربي