ספריית Ruby בקוד פתוח לייצור קבצי Word DOCX
API Ruby חינמי וחזק המאפשר למפתחים ליצור מסמכי Word DOCX בקלות. הוא מאפשר לעצב את המסמך.'s Layout, Apply Styles, and Use Mail Merge Fields as Placeholders for Dynamic Content.
מהי ספריית Sablon?
בעולם פיתוח התוכנה, יצירת מסמכים דינמיים כמו דוחות, חשבוניות או מכתבים היא דרישה נפוצה. בעוד שרבות הספריות יכולות ליצור מסמכים מאפס, הן לעיתים דורשות עקומת למידה תלולה וקידוד משעמם כדי לקבל את העיצוב המדויק. כאן נכנסת לתמונה Sablon, ספריית Ruby בקוד פתוח חזקה. Sablon משפרת את יצירת המסמכים על ידי ניצול המוכרות של Microsoft Word והכוח של Ruby, ומאפשרת ליצור מסמכים מורכבים ומעוצבים בצורה יפה עם מינימום מאמץ. היא תומכת בתכונות כמו יצירת Word Docx, הוספת תוכן באמצעות שדות MailMerge, תמיכה בעיצוב מתקדם, הוספת אנוטציות בתבניות, המרת HTML ו‑CSS בהתאמה ועוד רבים.
בגרעין, Sablon היא מעבד תבניות מסמכים לקבצי .docx. היא מנצלת את פונקציית Mail Merge המובנית של Word, ומאפשרת ליצור תבניות בסביבה מוכרת. ניתן לעצב את פריסת המסמך, להחיל סגנונות, ולהשתמש בשדות Mail Merge כממלאי מקום לתוכן דינמי. לאחר מכן Sablon לוקחת את התבנית ואת הקשר הנתונים (hash של Ruby) כדי לייצר מסמך Word מלא בנתונים. approach זה מבודד את שכבת ההצגה (תבנית ה‑Word) משכבת הנתונים (קוד ה‑Ruby שלך), מה שמפשט ומסדיר את תהליך יצירת המסמכים. תחבירה אינטואיטיבי לכל מי שמכיר Ruby ושפות תבנית. היא ידידותית למעצבים; התוכן והעיצוב מופרדים לחלוטין. מעצבים יכולים לעבוד ישירות ב‑Word מבלי לגעת בקוד.
התחלת עבודה עם Sablon
הדרך המומלצת להתקנת Sablon היא באמצעות RubyGems. אנא השתמשו בפקודה הבאה להתקנה חלקה.
הוספת תוכן עם שדות Word באמצעות Ruby
הפונקציה הבסיסית ביותר היא הוספת תוכן דינמי. ספריית Ruby בקוד פתוח Sablon משתמשת בתחביר השדות המובנה של Word כדי להגדיר מצייני מקום. בתבנית ה‑Word שלך, אתה מכניס קוד שדה במיקום שבו אתה רוצה תוכן דינמי. Sablon תחליף שדה זה בערך שלך. הדוגמה הבאה מציגה כיצד מפתחים יכולים להכניס באופן דינמי פיסת תוכן כדי לברך משתמש.
איך להכניס תוכן טקסט דינמי לקובץ Word באמצעות Ruby?
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 בתוך יישומי Ruby.
איך להמיר תוכן HTML לקובץ Word Docx באמצעות ספריית Ruby?
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
הוספת תמונה דינמית באמצעות Ruby
ספריית Sablon בקוד פתוח כוללת תכונה שימושית להוספת תמונה דינמית בתוך מסמכי Word Docx באמצעות ספריית Ruby. עם רק כמה שורות קוד, מפתחים יכולים להוסיף תמונות דינמית למסמכים שלהם. ניתן לציין קובץ תמונה, ו‑Sablon תכלול אותו במסמך. הדוגמה הבאה מציגה כיצד לבצע הוספת תמונה דינמית למסמכי Word.
How to Dynamically Insert Image into Word Docx via Ruby Library?
// 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")
}
רינדור מותנה באמצעות Ruby
ספריית Sablon תומכת בחסימות מותנות, המאפשרות למשתמשים להציג או להסתיר חלקים במסמך ה‑Word שלהם בהתאם לנוכחות או ערך של משתנה. זה מושלם להתאמת מסמכים על פי תנאים ספציפיים. לדוגמה, הדוגמה הבאה מראה כיצד משתמשים יכולים להגדיר פקודות להסתיר או להציג מידע מסוים בתוך מסמך Word. אם show_extra_info הוא true, התוכן בין תגי if ל‑endIf יכלול במסמך הסופי. אם הוא false או nil, התוכן יוסר.
How to Display or Hide Parts of Word Docx Documents using Ruby?
context = {
show_extra_info: true # or false
}