Потужна бібліотека обробки тексту з відкритим кодом для Go

Відкрита бібліотека Golang для автоматизації документів Word, що включає шаблони, таблиці, стилі, заголовки, колонтитули та генерацію DOCX.

Що таке WordZero?

wordZero — це бібліотека Golang з відкритим кодом, призначена для програмного створення, читання, редагування та управління документами Microsoft Word DOCX. Вона надає чистий API, який дозволяє розробникам генерувати професійні звіти, рахунки‑фактури, контракти, документацію та інші ділові документи безпосередньо з 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 API

Однією з ключових можливостей 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)
	}
}
 Українська