کتابخانه منبعباز روبی برای تولید فایلهای 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 است. این کتابخانه از قابلیت Mail Merge داخلی Word استفاده میکند و به شما امکان میدهد قالبها را در محیط آشنا ایجاد کنید. میتوانید طرح سند خود را طراحی کنید، استایلها را اعمال کنید و از فیلدهای 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 (فرمت XML مورد استفاده در فایلهای .docx) است. این ویژگی زمانی که نیاز به درج محتوای متنی غنی مانند پاراگرافهای قالببندیشده، لیستها یا جدولها از پایگاه داده یا ویرایشگر متن غنی دارید، بسیار مفید است. 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 خود را بر اساس وجود یا مقدار یک متغیر نشان دهند یا مخفی کنند. این برای سفارشیسازی اسناد بر پایه شرایط خاص بسیار مناسب است. برای مثال، مثال زیر نشان میدهد چگونه کاربران میتوانند دستورات مخفی یا نمایش اطلاعات خاص را داخل یک سند Word تنظیم کنند. اگر متغیر show_extra_info برابر true باشد، محتوای بین تگهای if و endIf در سند نهایی گنجانده میشود. اگر false یا nil باشد، محتوا حذف میشود.
چگونه بخشهایی از اسناد Word Docx را با روبی نمایش یا مخفی کنیم؟
context = {
show_extra_info: true # or false
}