Word DOCX ফাইল তৈরি করার জন্য ওপেন সোর্স রুবি লাইব্রেরি
একটি শক্তিশালী ফ্রি রুবি API, যা সফটওয়্যার ডেভেলপারদের সহজে Word DOCX ডকুমেন্ট তৈরি করতে সক্ষম করে। এটি ডকুমেন্ট ডিজাইন করার অনুমতি দেয়।'s Layout, Apply Styles, and Use Mail Merge Fields as Placeholders for Dynamic Content.
Sablon লাইব্রেরি কী?
সফটওয়্যার ডেভেলপমেন্টের জগতে রিপোর্ট, ইনভয়েস বা চিঠি মত ডাইনামিক ডকুমেন্ট তৈরি করা একটি সাধারণ প্রয়োজন। যদিও অনেক লাইব্রেরি শূন্য থেকে ডকুমেন্ট তৈরি করতে পারে, সেগুলো প্রায়শই শক্তিশালী লার্নিং কার্ভ এবং সঠিক ফরম্যাটিং পেতে দুর্বোধ্য কোডিং প্রয়োজন করে। এখানে Sablon, একটি শক্তিশালী ওপেন-সোর্স রুবি লাইব্রেরি, সাহায্য করে। Sablon Microsoft Word-এর পরিচিতি এবং রুবির শক্তি ব্যবহার করে ডকুমেন্ট জেনারেশনকে বিপ্লবী করে, যাতে আপনি কম প্রচেষ্টায় জটিল এবং সুন্দরভাবে ফরম্যাটেড ডকুমেন্ট তৈরি করতে পারেন। এটি Word Docx তৈরি, MailMerge ফিল্ডের মাধ্যমে কন্টেন্ট ইনসারশন, অ্যাডভান্সড ফরম্যাটিং সাপোর্ট, টেমপ্লেটগুলিতে অ্যানোটেশন যোগ করা, কনফিগারযোগ্য HTML & CSS কনভার্সন এবং আরও অনেক ফিচার সমর্থন করে।
মূলত, Sablon হল .docx ফাইলের জন্য একটি ডকুমেন্ট টেমপ্লেট প্রসেসর। এটি Word-এর বিল্ট-ইন Mail Merge ফাংশনালিটি ব্যবহার করে, যাতে আপনি পরিচিত পরিবেশে টেমপ্লেট তৈরি করতে পারেন। আপনি আপনার ডকুমেন্টের লেআউট ডিজাইন করতে পারেন, স্টাইল প্রয়োগ করতে পারেন এবং ডাইনামিক কন্টেন্টের জন্য Mail Merge ফিল্ডকে প্লেসহোল্ডার হিসেবে ব্যবহার করতে পারেন। Sablon তারপর এই টেমপ্লেট এবং একটি ডেটা কন্টেক্সট (একটি রুবি হ্যাশ) নিয়ে একটি চূড়ান্ত, ডেটা-সামগ্রীযুক্ত Word ডকুমেন্ট তৈরি করে। এই পদ্ধতি প্রেজেন্টেশন লেয়ার (Word টেমপ্লেট) কে ডেটা লেয়ার (আপনার রুবি কোড) থেকে আলাদা করে, ফলে ডকুমেন্ট জেনারেশন প্রক্রিয়া পরিষ্কার এবং রক্ষণাবেক্ষণযোগ্য হয়। এর সিনট্যাক্স রুবি এবং টেমপ্লেটিং ভাষা জানেন এমন যে কারো জন্য স্বজ্ঞাত। এটি ডিজাইনার-ফ্রেন্ডলি; কন্টেন্ট এবং ডিজাইন পুরোপুরি পৃথক। ডিজাইনাররা কোড ছোঁয়া না করেই সরাসরি Word-এ কাজ করতে পারেন।
Sablon দিয়ে শুরু করা
Sablon ইনস্টল করার সুপারিশকৃত উপায় হল RubyGems ব্যবহার করা। মসৃণ ইনস্টলেশনের জন্য দয়া করে নিম্নলিখিত কমান্ড ব্যবহার করুন।
রুবি ব্যবহার করে Word ফিল্ডের সঙ্গে কন্টেন্ট ইনসারশন
সবচেয়ে মৌলিক ফাংশন হল ডাইনামিক কন্টেন্ট ইনসারশন। ওপেন সোর্স রুবি লাইব্রেরি Sablon Word-এর বিল্ট-ইন ফিল্ড সিনট্যাক্স ব্যবহার করে প্লেসহোল্ডার সংজ্ঞায়িত করে। আপনার Word টেমপ্লেটে, আপনি যেখানে ডাইনামিক কন্টেন্ট চান সেখানে একটি ফিল্ড কোড ইনসার্ট করেন। Sablon এই ফিল্ডটি আপনার মান দিয়ে প্রতিস্থাপন করবে। নিম্নের উদাহরণটি দেখায় কীভাবে সফটওয়্যার ডেভেলপাররা ব্যবহারকারীকে অভ্যর্থনা জানাতে একটি কন্টেন্ট টুকরা ডাইনামিকভাবে ইনসার্ট করতে পারে।
রুবি ব্যবহার করে Word Docs ফাইলে ডাইনামিক টেক্সট কন্টেন্ট কীভাবে ইনসার্ট করবেন?
require 'sablon'
template = Sablon.template(File.expand_path('~/template.docx'))
context = {
name: "Sarah Connor"
}
template.render_to_file(File.expand_path('~/output.docx'), context)
Template:
Hello, «name»! Welcome to our platform.
Output:
Hello, Sarah Connor! Welcome to our platform.
HTML থেকে WordML কনভার্সন
Sablon-এর একটি প্রধান বৈশিষ্ট্য হল HTML-কে WordProcessingML (যা .docx ফাইলগুলিতে ব্যবহৃত XML ফরম্যাট) তে রূপান্তর করার ক্ষমতা। এটি খুবই উপকারী যখন আপনাকে একটি ডেটাবেস বা রিচ টেক্সট এডিটর থেকে ফরম্যাটেড প্যারাগ্রাফ, লিস্ট বা টেবিলের মতো রিচ টেক্সট কন্টেন্ট ইনসার্ট করতে হয়। Sablon HTML স্ট্রিংকে Word ডকুমেন্টের একটি সঠিকভাবে ফরম্যাটেড সেকশনে রূপান্তর করে, হেডিং, বোল্ড ও ইটালিক টেক্সট এবং লিস্ট ফরম্যাটিং সংরক্ষণ করে। এখানে একটি সহজ উদাহরণ রয়েছে, যা দেখায় কীভাবে বিদ্যমান টেমপ্লেট লোড করে এবং রুবি অ্যাপ্লিকেশনের মধ্যে HTML কন্টেন্টকে Word Docx ফাইলে রূপান্তর করা যায়।
রুবি লাইব্রেরি দিয়ে HTML কন্টেন্টকে Word Docx ফাইলে কীভাবে কনভার্ট করবেন?
require "sablon"
template = Sablon.template(File.expand_path("template.docx"))
html_content = "এটি একটি সাবহেডিং
এটি একটি প্যারাগ্রাফ, যার মধ্যে বোল্ড এবং ইটালিক টেক্সট আছে।
- প্রথম আইটেম
- দ্বিতীয় আইটেম
"
context = {
article_content: Sablon.content(:html, html_content)
}
template.render_to_file(File.expand_path("output.docx"), context)
Conditional Rendering
রুবি ব্যবহার করে ডাইনামিক ইমেজ ইনসারশন
ওপেন সোর্স Sablon লাইব্রেরি Word Docx ডকুমেন্টে ডাইনামিকভাবে ইমেজ ইনসার্ট করার জন্য একটি কার্যকরী ফিচার অন্তর্ভুক্ত করেছে। কেবল কয়েকটি কোড লাইনের মাধ্যমে ডেভেলপাররা ডকুমেন্টে ডাইনামিকভাবে ইমেজ ইনসার্ট করতে পারে। আপনি একটি ইমেজ ফাইল নির্দিষ্ট করতে পারেন, এবং Sablon তা ডকুমেন্টে এমবেড করবে। নিম্নের উদাহরণটি দেখায় কীভাবে Word ডকুমেন্টে ডাইনামিক ইমেজ ইনসারশন অর্জন করবেন।
রুবি লাইব্রেরি দিয়ে Word Docx-এ ডাইনামিক ইমেজ কীভাবে ইনসার্ট করবেন?
// You would have a placeholder image in your template with a special filename like «=company_logo».
context = {
company_logo: Sablon.content(:image, "path/to/your/logo.png")
}
রুবি ব্যবহার করে কন্ডিশনাল রেন্ডারিং
Sablon লাইব্রেরি কন্ডিশনাল ব্লক সমর্থন করে, যা ব্যবহারকারীদেরকে একটি ভেরিয়েবলের উপস্থিতি বা মানের ভিত্তিতে তাদের Word ডকুমেন্টের কিছু অংশ দেখানো বা লুকানোর অনুমতি দেয়। এটি নির্দিষ্ট শর্তের উপর ভিত্তি করে ডকুমেন্ট কাস্টমাইজ করার জন্য উপযুক্ত। উদাহরণস্বরূপ, নিচের উদাহরণটি দেখায় কীভাবে ব্যবহারকারীরা নির্দিষ্ট তথ্য লুকানো বা দেখানোর জন্য কমান্ড সেট করতে পারে। যদি show_extra_info সত্য হয়, তবে if এবং endIf ট্যাগের মধ্যে থাকা কন্টেন্ট চূড়ান্ত ডকুমেন্টে অন্তর্ভুক্ত হবে। যদি এটি মিথ্যা বা nil হয়, তবে কন্টেন্টটি সরিয়ে দেওয়া হবে।
রুবি ব্যবহার করে Word Docx ডকুমেন্টের কিছু অংশ কীভাবে দেখাবেন বা লুকাবেন?
context = {
show_extra_info: true # or false
}