docx

package module
v0.0.0-...-049f5d0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 9, 2022 License: MIT Imports: 9 Imported by: 0

README

Simple Google Go (Golang) library for replacing text in Microsoft Word (.docx) file

The following constitutes the bare minimum required to replace text in DOCX document.


import (
	"github.com/nguyenthenguyen/docx"
)

func main() {
	// Read from docx file
	r, err := docx.ReadDocxFile("./template.docx")
	// Or read from memory
	// r, err := docx.ReadDocxFromMemory(data io.ReaderAt, size int64)
	if err != nil {
		panic(err)
	}
	docx1 := r.Editable()
	// Replace like https://golang.org/pkg/strings/#Replace
	docx1.Replace("old_1_1", "new_1_1", -1)
	docx1.Replace("old_1_2", "new_1_2", -1)
	docx1.ReplaceLink("http://example.com/", "https://github.com/nguyenthenguyen/docx", 1)
	docx1.ReplaceHeader("out with the old", "in with the new")
	docx1.ReplaceFooter("Change This Footer", "new footer")
	docx1.WriteToFile("./new_result_1.docx")

	docx2 := r.Editable()
	docx2.Replace("old_2_1", "new_2_1", -1)
	docx2.Replace("old_2_2", "new_2_2", -1)
	docx2.WriteToFile("./new_result_2.docx")

	// Or write to ioWriter
	// docx2.Write(ioWriter io.Writer)

	r.Close()
}

Documentation

Index

Constants

View Source
const (
	TAB     = "</w:t><w:tab/><w:t>"
	NEWLINE = "<w:br/>"
)

To get Word to recognize a tab character, we have to first close off the previous text element. This means if there are multiple consecutive tabs, there are empty <w:t></w:t> in between but it still seems to work correctly in the output document, certainly better than other combinations I tried.

Variables

This section is empty.

Functions

This section is empty.

Types

type Docx

type Docx struct {
	// contains filtered or unexported fields
}

func (*Docx) GetContent

func (d *Docx) GetContent() string

func (*Docx) Replace

func (d *Docx) Replace(oldString string, newString string, num int) (err error)

func (*Docx) ReplaceFooter

func (d *Docx) ReplaceFooter(oldString string, newString string) (err error)

func (*Docx) ReplaceHeader

func (d *Docx) ReplaceHeader(oldString string, newString string) (err error)
func (d *Docx) ReplaceLink(oldString string, newString string, num int) (err error)

func (*Docx) ReplaceRaw

func (d *Docx) ReplaceRaw(oldString string, newString string, num int)

func (*Docx) SetContent

func (d *Docx) SetContent(content string)

func (*Docx) Write

func (d *Docx) Write(ioWriter io.Writer) (err error)

func (*Docx) WriteToFile

func (d *Docx) WriteToFile(path string) (err error)

type ReplaceDocx

type ReplaceDocx struct {
	// contains filtered or unexported fields
}

func ReadDocx

func ReadDocx(reader ZipData) (*ReplaceDocx, error)

func ReadDocxFile

func ReadDocxFile(path string) (*ReplaceDocx, error)

func ReadDocxFromMemory

func ReadDocxFromMemory(data io.ReaderAt, size int64) (*ReplaceDocx, error)

func (*ReplaceDocx) Close

func (r *ReplaceDocx) Close() error

func (*ReplaceDocx) Editable

func (r *ReplaceDocx) Editable() *Docx

type ZipData

type ZipData interface {
	// contains filtered or unexported methods
}

ZipData Contains functions to work with data from a zip file

type ZipFile

type ZipFile struct {
	// contains filtered or unexported fields
}

ZipFile Type for zip files read from disk

type ZipInMemory

type ZipInMemory struct {
	// contains filtered or unexported fields
}

ZipInMemory Type for in memory zip files

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL