مكتبة معالجة Word قوية ومفتوحة المصدر لـ Go

مكتبة Golang مفتوحة المصدر لأتمتة مستندات Word تشمل القوالب والجداول والأنماط والرؤوس والتذييلات وتوليد DOCX.

ما هو WordZero؟

wordZero هي مكتبة Golang مفتوحة المصدر مصممة لإنشاء وقراءة وتحرير وإدارة مستندات Microsoft Word DOCX برمجيًا. توفر واجهة برمجة تطبيقات نظيفة تتيح للمطورين إنشاء تقارير احترافية، وفواتير، وعقود، ووثائق، وغيرها من مستندات الأعمال مباشرةً من تطبيقات Go. تم بناء المكتبة حول معيار Office Open XML (OOXML) وتقدم قدرات واسعة لمعالجة المستندات، بما في ذلك تنسيق النص، وتنسيق الفقرات، وإنشاء الجداول، وإدراج الصور، والرؤوس، والتذييلات، والقوائم، والقوالب، وإنشاء جدول المحتويات. تركز هندستها على الأداء والمرونة وسهولة الاستخدام، مما يجعلها مناسبة لكل من المشاريع الصغيرة وأنظمة أتمتة المستندات على مستوى المؤسسات.

غالبًا ما تتطلب التطبيقات الحديثة إنشاء مستندات تلقائيًا. سواء كنت تبني أنظمة تقارير، أو بوابات مستندات العملاء، أو منصات إدارة الموارد البشرية، أو مولدات الفواتير، فإن إنشاء مستندات Word يدويًا يمكن أن يكون مستهلكًا للوقت وعرضة للأخطاء. يحل wordZero هذه المشكلة من خلال تمكين المطورين من إنشاء ملفات DOCX مُنسقة بالكامل مباشرةً من الشيفرة. تدعم المكتبة إنشاء مستندات منظمة، وقوالب قابلة لإعادة الاستخدام، وتنسيقًا متقدمًا، وتوليد محتوى ديناميكي. هذا يقلل من الجهد اليدوي، ويحسن الاتساق، ويساعد المؤسسات على أتمتة سير العمل الكثيف بالمستندات بكفاءة. بالإضافة إلى ذلك، فإن دعمها للأنماط والجداول والرؤوس والتذييلات وبيانات تعريف المستند يجعل من الممكن إنشاء مستندات ذات جودة احترافية تشبه إلى حد كبير ملفات Word التي يكتبها البشر يدويًا.

Previous Next

البدء مع WordZero

الطريقة الموصى بها لتثبيت wordZero في مشروعك هي باستخدام GitHub. يرجى استخدام الأمر التالي لتثبيت سلس.

تثبيت wordZero عبر GitHub

go get github.com/zerx-lab/wordZero

إنشاء وحفظ مستندات Word عبر واجهة برمجة التطبيقات 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)
	}
}
 عربي