ডাইনামিক ওয়ার্ড ডকুমেন্ট তৈরি করার জন্য জাভাস্ক্রিপ্ট API

Node.js এবং ব্রাউজার-ভিত্তিক অ্যাপ্লিকেশন দিয়ে ডাইনামিক ওয়ার্ড ডকুমেন্ট তৈরি করার জন্য ওপেন সোর্স জাভাস্ক্রিপ্ট লাইব্রেরি।

Docx-templates কি?

Docx-Templates হল একটি ওপেন-সোর্স জাভাস্ক্রিপ্ট লাইব্রেরি যা সফটওয়্যার ডেভেলপারদের পূর্বনির্ধারিত টেমপ্লেট ব্যবহার করে ডায়নামিক মাইক্রোসফট ওয়ার্ড (.docx) ডকুমেন্ট তৈরি করতে সক্ষম করে। ম্যানুয়ালি প্রোগ্রাম্যাটিকভাবে ওয়ার্ড ডকুমেন্ট তৈরি করার পরিবর্তে, ডেভেলপাররা মাইক্রোসফট ওয়ার্ডে টেমপ্লেট ডিজাইন করে এবং এমবেডেড কমান্ডের মাধ্যমে ডায়নামিক ডেটা ইনজেক্ট করতে পারেন। এই লাইব্রেরি Node.js এবং ব্রাউজার উভয় পরিবেশে কাজ করে, যা আধুনিক ওয়েব এবং সার্ভার-সাইড অ্যাপ্লিকেশনগুলোর জন্য অত্যন্ত বহুমুখী করে তোলে। এটি DOCX ফাইলগুলোকে তাদের অভ্যন্তরীণ XML কাঠামো পার্স করে এবং রানটাইমে টেমপ্লেট কমান্ডগুলোকে প্রকৃত ডেটা দিয়ে প্রতিস্থাপন করে প্রক্রিয়া করে।

Docx-Templates লাইব্রেরি একটি শক্তিশালী, ওপেন-সোর্স টুল যা Node.js এবং ব্রাউজার উভয় পরিবেশের জন্য ডিজাইন করা হয়েছে। লাইব্রেরির প্রধান সুবিধা হল ডিজাইন এবং লজিকের পৃথকীকরণ। অ-প্রযুক্তিগত ব্যবহারকারীরা Word-এ লেআউট এবং স্টাইলিং ডিজাইন করতে পারেন, যখন ডেভেলপাররা ডেটা ইনজেক্ট করার উপর মনোযোগ দেন। এটি লুপ, শর্তসাপেক্ষ ফরম্যাটিং এবং এমনকি ডকুমেন্টের মধ্যে সরাসরি জাভাস্ক্রিপ্ট স্নিপেট চালানোর মতো জটিল লজিককে সমর্থন করে। এটি ডেভেলপারদের জন্য আদর্শ সমাধান যারা XML বা মালিকানাধীন ডিজাইন টুলের সঙ্গে ঝামেলা না করে উচ্চ-নিষ্ঠা রিপোর্ট তৈরি করতে চান।

Previous Next

Docx-templates দিয়ে শুরু করা

Docx-templates লাইব্রেরি ইনস্টল করার সুপারিশকৃত পদ্ধতি হল npm ব্যবহার করা। মসৃণ ইনস্টলেশনের জন্য দয়া করে নিম্নলিখিত কমান্ডটি ব্যবহার করুন।

NPM এর মাধ্যমে Docx-Templates ইনস্টল করুন

$ npm install docx-templates 

Yarn এর মাধ্যমে Docx-Templates ইনস্টল করুন/strong>

$ yarn add docx-templates 

JS API মাধ্যমে টেমপ্লেট-ভিত্তিক ডকুমেন্ট জেনারেশন

ওপেন সোর্স Docx-Templates লাইব্রেরি সফটওয়্যার ডেভেলপারদেরকে Word-এ ডকুমেন্ট ডিজাইন করতে এবং সহজ কমান্ড ব্যবহার করে ডেটা ডায়নামিকভাবে ইনজেক্ট করতে সক্ষম করে। এই পদ্ধতি উপস্থাপনাকে লজিক থেকে আলাদা করে, ফলে টেমপ্লেটগুলোকে কোড পরিবর্তন না করেই সহজে পরিচালনা ও আপডেট করা যায়। আপনি সরাসরি আপনার ডেটা অবজেক্টের প্রপার্টিগুলো অ্যাক্সেস করতে পারেন অথবা সহজ এক্সপ্রেশন চালাতে পারেন। উদাহরণস্বরূপ, পূর্ণ নাম ইনসার্ট করতে, আপনার টেমপ্লেটটি এভাবে দেখাবে: {firstName} {surname}. লাইব্রেরি কোডটি মূল্যায়ন করে এবং তা নির্বিঘ্নে প্রতিস্থাপন করে।

কীভাবে জাভাস্ক্রিপ্ট অ্যাপসের মধ্যে ডায়নামিকভাবে ওয়ার্ড ডকুমেন্ট তৈরি করবেন?

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 কোড অন্তর্ভুক্ত। আপনি ছবির আকার এবং তার অবস্থান নিয়ন্ত্রণ করতে পারেন। এই ফিচারটি পরিচয় ব্যাজ, পণ্য ক্যাটালগ, অথবা ডায়নামিক চার্ট এবং ভিজ্যুয়াল প্রমাণ প্রয়োজনীয় রিপোর্ট তৈরির জন্য একটি গেম-চেঞ্জার। এখানে একটি সহজ উদাহরণ দেওয়া হল যা দেখায় কীভাবে জাভাস্ক্রিপ্ট API ব্যবহার করে Word ডকুমেন্টে ছবি ইনসার্ট করা যায়।

কীভাবে জাভাস্ক্রিপ্ট 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 স্টাইলিং বজায় রেখে উপস্থাপন করতে দেয়। নিম্নলিখিত কোড উদাহরণটি কীভাবে এটি অর্জন করা যায় তা দেখায়।

কীভাবে জাভাস্ক্রিপ্ট অ্যাপসের মধ্যে উন্নত লুপ প্রয়োগ করবেন?

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 লাইব্রেরির সবচেয়ে উন্নত ফিচারগুলোর একটি হল EXEC (বা !) কমান্ড ব্যবহার করে যেকোনো জাভাস্ক্রিপ্ট স্নিপেট চালানোর ক্ষমতা। একটি additionalJsContext প্রদান করে, আপনি টেমপ্লেটের জন্য কাস্টম হেল্পার ফাংশন উন্মুক্ত করতে পারেন। এটি টেমপ্লেটকে অভ্যন্তরীণভাবে গণনা, তারিখ ফরম্যাট করা, অথবা স্ট্রিং ম্যানিপুলেট করতে সক্ষম করে, মূল অ্যাপ্লিকেশন লজিকের প্রতিটি ডেটা পূর্বপ্রসেস করার প্রয়োজন ছাড়াই।

 বাংলা