کتابخانه قدرتمند پردازش متن منبع باز برای Go

کتابخانه منبع باز Golang برای خودکارسازی اسناد Word که شامل قالب‌ها، جداول، استایل‌ها، سرصفحه‌ها، پاورقی‌ها و تولید DOCX است.

WordZero چیست؟

wordZero یک کتابخانه منبع باز Golang است که برای ایجاد، خواندن، ویرایش و مدیریت اسناد Microsoft Word DOCX به‌صورت برنامه‌نویسی طراحی شده است. این کتابخانه یک API تمیز ارائه می‌دهد که به توسعه‌دهندگان امکان می‌دهد گزارش‌های حرفه‌ای، فاکتورها، قراردادها، مستندات و سایر اسناد تجاری را مستقیماً از برنامه‌های Go تولید کنند. این کتابخانه بر پایه استاندارد Office Open XML (OOXML) ساخته شده و قابلیت‌های گسترده‌ای برای دستکاری اسناد فراهم می‌کند، از جمله قالب‌بندی متن، استایل‌بندی پاراگراف، ایجاد جدول، درج تصویر، سرصفحه‌ها، پاورقی‌ها، فهرست‌ها، قالب‌ها و تولید فهرست مطالب. معماری آن بر عملکرد، انعطاف‌پذیری و سهولت استفاده متمرکز است و آن را برای پروژه‌های کوچک و سیستم‌های خودکارسازی اسناد در سطح سازمانی مناسب می‌سازد.

برنامه‌های مدرن اغلب به تولید خودکار اسناد نیاز دارند. چه در حال ساخت سیستم‌های گزارش‌دهی، پورتال‌های اسناد مشتری، پلتفرم‌های مدیریت منابع انسانی یا تولیدکننده‌های فاکتور باشید، ایجاد دستی اسناد Word می‌تواند زمان‌بر و مستعد خطا باشد. wordZero این چالش را با امکان تولید فایل‌های DOCX کاملاً قالب‌بندی‌شده مستقیماً از کد برای توسعه‌دهندگان حل می‌کند. این کتابخانه از ایجاد ساختارمند اسناد، قالب‌های قابل استفاده مجدد، قالب‌بندی پیشرفته و تولید محتوای پویا پشتیبانی می‌کند. این کار effort دستی را کاهش می‌دهد، سازگاری را بهبود می‌بخشد و به سازمان‌ها کمک می‌کند تا گردش‌کارهای سنگین‌اسناد را به‌صورت کارآمد خودکار کنند. علاوه بر این، پشتیبانی از سبک‌ها، جدول‌ها، سرصفحه‌ها، پاورقی‌ها و متادیتای سند امکان ایجاد اسناد حرفه‌ای را فراهم می‌آورد که به‌طور نزدیک به فایل‌های Word نوشته شده به‌صورت دستی شباهت دارند.

Previous Next

شروع کار با wordZero

روش پیشنهادی برای نصب wordZero در پروژه شما استفاده از GitHub است. لطفاً برای نصب آسان، دستور زیر را اجرا کنید.

نصب wordZero از طریق GitHub

go get github.com/zerx-lab/wordZero

ایجاد و ذخیره اسناد Word از طریق API Go

یکی از قابلیت‌های اصلی wordZero توانایی آن در ایجاد اسناد Word از ابتدا است. توسعه‌دهندگان می‌توانند یک سند جدید را مقداردهی اولیه کنند، محتوا اضافه کنند و آن را به‌صورت فایل DOCX در چند خط کد ذخیره کنند. این ویژگی برای سیستم‌های گزارش‌گیری خودکار، سرویس‌های تولید سند و برنامه‌هایی که نیاز به استخراج داده‌های کاربر به قالب Microsoft Word دارند، بسیار مفید است. از آنجا که کتابخانه بسته‌بندی OOXML را به‌صورت داخلی مدیریت می‌کند، توسعه‌دهندگان می‌توانند بر روی ایجاد محتوا تمرکز کنند و نیازی به سروکار داشتن با ساختارهای پیچیده سند ندارند.

چگونه فایل‌های DOCX را به‌صورت برنامه‌نویسی با استفاده از کتابخانه Go ایجاد کنیم؟

package main

import  ( 
	"github.com/ZeroHawkeye/wordZero/pkg/document" 
)

func main() { 
	doc := document.New() 
	
	doc.AddParagraph("Welcome to wordZero!") 
	
	err := doc.Save("sample.docx")
	 if err != nil {
	 panic(err) 
	}
  }
 

موتور پیشرفته قالب با ارث‌بری

موتور قالب‌سازی WordZero نحوه تولید اسناد پویا را دگرگون می‌کند. برخلاف جایگزینی ساده رشته‌ها، این موتور از وراثت مبتنی بر بلوک، رندر شرطی، حلقه‌ها و جای‌گیرهای تصویر پشتیبانی می‌کند. این به این معنی است که می‌توانید قالب‌های پایه (سرصفحه‌ها، پاورقی‌ها، راهنمای برند) را ایجاد کنید و برای موارد خاصی مانند گزارش‌های فروش یا فاکتورها گسترش دهید. این ویژگی بسیار مفید است زیرا تکرار کد را حذف کرده و محتوا را از ارائه جدا می‌کند. تیم‌های بازاریابی می‌توانند بدون مداخله توسعه‌دهنده، قالب‌ها را به‌روزرسانی کنند.

چگونه اسناد پویا را از طریق قالب‌ها در برنامه‌های Go تولید کنیم؟

package main

import (
    "log"
    "github.com/zerx-lab/wordZero/pkg/document"
)

func main() {
    engine := document.NewTemplateEngine()
    
    // Base template with reusable blocks
    baseTemplate := `{{companyName}} Report
{{#block "summary"}}Default summary{{/block}}
{{#block "content"}}Default content{{/block}}`
    
    engine.LoadTemplate("base", baseTemplate)
    
    // Child template overriding specific blocks
    salesTemplate := `{{extends "base"}}
{{#block "summary"}}
Sales: {{revenue}} USD | Growth: {{growth}}%
{{/block}}`
    
    engine.LoadTemplate("sales", salesTemplate)
    
    data := document.NewTemplateData()
    data.SetVariable("companyName", "Acme Corp")
    data.SetVariable("revenue", "125000")
    data.SetVariable("growth", "15")
    
    doc, _ := engine.RenderTemplateToDocument("sales", data)
    doc.Save("quarterly_report.docx")
}
 

مدیریت پویا تصویر بومی و مقیاس‌گذاری خودکار

یکپارچه‌سازی دارایی‌هایی مانند نمودارها، برندینگ سازمانی یا عکس‌ها نیاز به مدیریت دقیق چیدمان دارد تا از خراب شدن بسته‌بندی متن جلوگیری شود. کتابخانه متن‌باز wordZero شامل بسته‌های بومی ساده‌ای است که ورودی‌های تصویر را مستقیماً از مسیرهای فیزیکی سیستم یا آرایه‌های بایتی در حافظه ([]byte) می‌پذیرند. این کتابخانه به‌صورت خودکار نسبت‌های تصویر را تشخیص می‌دهد و امکان عملکردهایی مانند تنظیم خودکار تصویر به حاشیه‌ها یا محدودیت‌های پیکسلی صریح را فراهم می‌کند.

چگونه تصاویر را در اسناد Word با استفاده از کتابخانه Go مدیریت کنیم؟

package main

import (
	"log"
	"github.com/zerx-lab/wordZero/pkg/document"
)

func main() {
	doc := document.New()
	doc.AddParagraph("Visual Asset Documentation Summary")

	// Insert an image path from your local deployment setup
	image, err := doc.AddImageFromFile("company_logo.png")
	if err != nil {
		log.Fatalf("Unable to discover or parse local asset: %v", err)
	}

	// Constrain the target image properties while auto-fitting column margins safely
	image.SetWidth(350)
	image.FitToPageWidth()

	if err := doc.Save("image_report.docx"); err != nil {
		log.Fatalf("Error saving file payload: %v", err)
	}
}

تبدیل مستقیم Markdown به Word از طریق کتابخانه Ruby؟

در خطوط لوله انتشار غیرمتمرکز، معمولاً Markdown گزینهٔ ترجیحی برای نوشتن محتوا است، در حالی که برای توزیع سازمانی Word لازم است. wordZero این نیاز را با یک ماژول تبدیل دوگانهٔ داخلی و اختصاصی برآورده می‌کند. این ماژول سرفصل‌های استاندارد، پارامترهای درون‌خطی (بولد، ایتالیک، تگ‌های کد)، فهرست‌ها و لینک‌ها را مستقیماً از بلوک‌های منبع سادهٔ Markdown تجزیه می‌کند و آن‌ها را به‌صورت تمیز به درخت‌های سند حرفه‌ای OOXML ترجمه می‌نماید.

چگونه تبدیل Markdown به Word را با کتابخانه Go انجام دهیم؟

package main

import (
	"log"
	"github.com/zerx-lab/wordZero/pkg/markdown"
)

func main() {
	// Initialize a standard options Markdown converter block
	converter := markdown.NewConverter(markdown.DefaultOptions())

	// Define raw text variables highlighting structured Markdown elements
	markdownContent := `
# Project Documentation
Welcome to automated generation.
## Features Included
- **High-Performance Compilation** via native Go routines.
- Clean nested element styling hooks.`

	// Process raw strings directly into a formatted .docx file
	err := converter.ConvertStringToFile(markdownContent, "markdown_transformed.docx")
	if err != nil {
		log.Fatalf("Markdown parsing pipeline encounter error: %v", err)
	}
}
 فارسی