Ir a la biblioteca para generar y editar documentos de MS Word

Biblioteca Go de código abierto para administrar y automatizar tareas comunes de procesamiento de textos, como insertar encabezado y pie de página, tablas e imágenes en archivos DOCX de Word y más.

unioffice es una poderosa biblioteca Go pura de código abierto que permite a los desarrolladores de software administrar documentos de Word y automatizar tareas comunes de procesamiento de textos con facilidad dentro de sus propias aplicaciones sin necesidad de Microsoft Word. La biblioteca está bastante bien optimizada y le permite editar fácilmente el código para cumplir con sus requisitos.

La biblioteca unioffice es una biblioteca sólida basada en Go que se puede usar para generar, editar, formatear y procesar documentos de Office Open XML. La biblioteca admite varias funciones importantes de procesamiento de texto, como lectura, escritura y modificación de documentos de Word, compatibilidad con formato de texto, tabla de contenido generada automáticamente, ubicación en una página de documento, inserción de encabezados y pies de página, adición de tablas, apertura de un documento como plantilla , compatibilidad con campos de formulario y mucho más.

Previous Next

Primeros pasos con unioffice

La forma recomendada de instalar unioffice en su proyecto es usando GitHub. Utilice el siguiente comando para una instalación sin problemas.

Instalar unioffice a través de GitHub

go get github.com/unidoc/unioffice/
go build -i github.com/unidoc/unioffice/...   

Cree un documento DOCX de Word a través de Go API

La biblioteca de código abierto unioffice ha proporcionado la posibilidad de crear un nuevo documento DOCX de Word con facilidad. También puede abrir y modificar fácilmente un documento de Microsoft Word existente dentro de sus propias aplicaciones. La biblioteca también incluía funciones para agregar nuevos párrafos de texto, insertar imágenes en una página, alinear texto, agregar encabezados y pies de página, agregar tablas y mucho más.

Acceso a Word Document Propiedades a través de Go API

func main() {
	doc, err := document.Open("document.docx")
	if err != nil {
		log.Fatalf("error opening document: %s", err)
	}
	defer doc.Close()
	cp := doc.GetOrCreateCustomProperties()
	// You can read properties from the document
	fmt.Println("AppVersion", *cp.GetPropertyByName("AppVersion").X().Lpwstr)
	fmt.Println("Company", *cp.GetPropertyByName("Company").X().Lpwstr)
	fmt.Println("DocSecurity", *cp.GetPropertyByName("DocSecurity").X().I4)
	fmt.Println("LinksUpToDate", *cp.GetPropertyByName("LinksUpToDate").X().Bool)
	fmt.Println("Non-existent", cp.GetPropertyByName("nonexistentproperty"))
	// And change them as well
	cp.SetPropertyAsLpwstr("Company", "Another company") // text, existing property
	fmt.Println("Company", *cp.GetPropertyByName("Company").X().Lpwstr)
	// Adding new properties
	cp.SetPropertyAsLpwstr("Another text property", "My text value") // text
	cp.SetPropertyAsI4("Another integer number property", 42)        // int32
	cp.SetPropertyAsR8("Another float number property", 3.14)        // float64
	cp.SetPropertyAsDate("Another date property", time.Now())        // date
	doc.SaveToFile("document_customized.docx")
	// For new documents all is the same
	docNew := document.New()
	defer docNew.Close()
	cpNew := docNew.GetOrCreateCustomProperties()
	cpNew.SetPropertyAsLpwstr("Another text property", "My text value") // text
	cpNew.SetPropertyAsI4("Another integer number property", 42)        // int23
	cpNew.SetPropertyAsR8("Another float number property", 3.14)        // float64
	cpNew.SetPropertyAsDate("Another date property", time.Now())        // date
	docNew.SaveToFile("document_new.docx")
}
  

 Insertar imágenes en archivos DOCX de Word

La biblioteca de código abierto unioffice brinda a los desarrolladores de software la capacidad de usar imágenes dentro de documentos de Microsoft Word. Admite funciones como la inserción de imágenes en el lugar que elija, la modificación de una imagen existente, el ajuste de texto alrededor de la imagen, la eliminación de la imagen y muchas más. Para agregar una imagen, es necesario proporcionar el nombre y la ubicación de la imagen.

Manage Imágenes en documentos de Word vía Go API

func main() {
	doc := document.New()
	defer doc.Close()
	img1, err := common.ImageFromFile("gophercolor.png")
	if err != nil {
		log.Fatalf("unable to create image: %s", err)
	}
	img2data, err := ioutil.ReadFile("gophercolor.png")
	if err != nil {
		log.Fatalf("unable to read file: %s", err)
	}
	img2, err := common.ImageFromBytes(img2data)
	if err != nil {
		log.Fatalf("unable to create image: %s", err)
	}
	img1ref, err := doc.AddImage(img1)
	if err != nil {
		log.Fatalf("unable to add image to document: %s", err)
	}
	img2ref, err := doc.AddImage(img2)
	if err != nil {
		log.Fatalf("unable to add image to document: %s", err)
	}
	para := doc.AddParagraph()
	anchored, err := para.AddRun().AddDrawingAnchored(img1ref)
	if err != nil {
		log.Fatalf("unable to add anchored image: %s", err)
	}
	anchored.SetName("Gopher")
	anchored.SetSize(2*measurement.Inch, 2*measurement.Inch)
	anchored.SetOrigin(wml.WdST_RelFromHPage, wml.WdST_RelFromVTopMargin)
	anchored.SetHAlignment(wml.WdST_AlignHCenter)
	anchored.SetYOffset(3 * measurement.Inch)
	anchored.SetTextWrapSquare(wml.WdST_WrapTextBothSides)
	run := para.AddRun()
	for i := 0; i < 16; i++ {
		run.AddText(lorem)
		// drop an inline image in
		if i == 13 {
			inl, err := run.AddDrawingInline(img1ref)
			if err != nil {
				log.Fatalf("unable to add inline image: %s", err)
			}
			inl.SetSize(1*measurement.Inch, 1*measurement.Inch)
		}
		if i == 15 {
			inl, err := run.AddDrawingInline(img2ref)
			if err != nil {
				log.Fatalf("unable to add inline image: %s", err)
			}
			inl.SetSize(1*measurement.Inch, 1*measurement.Inch)
		}
	}
	doc.SaveToFile("image.docx")
}
  

Agregar encabezado y pie de página a un documento de Word

Los encabezados y pies de página se pueden usar para incluir la información que los usuarios desean que aparezca en cada página de un documento, como el nombre del autor, el título del documento o los números de página. La biblioteca unioffice permite a los desarrolladores de software agregar encabezados y pies de página a documentos de Word con facilidad. También permite tener diferentes encabezados y pies de página dependiendo de la sección del documento. También incluía soporte para funcionalidades pares, impares y primeras.

Añadir Header Footer a Word Document via Go API

func main() {
	doc := document.New()
	defer doc.Close()
	img, err := common.ImageFromFile("gophercolor.png")
	if err != nil {
		log.Fatalf("unable to create image: %s", err)
	}
	hdr := doc.AddHeader()
	// We need to add a reference of the image to the header instead of to the
	// document
	iref, err := hdr.AddImage(img)
	if err != nil {
		log.Fatalf("unable to to add image to document: %s", err)
	}
	para := hdr.AddParagraph()
	para.Properties().AddTabStop(2.5*measurement.Inch, wml.ST_TabJcCenter, wml.ST_TabTlcNone)
	run := para.AddRun()
	run.AddTab()
	run.AddText("My Document Title")
	imgInl, _ := para.AddRun().AddDrawingInline(iref)
	imgInl.SetSize(1*measurement.Inch, 1*measurement.Inch)
	// Headers and footers are not immediately associated with a document as a
	// document can have multiple headers and footers for different sections.
	doc.BodySection().SetHeader(hdr, wml.ST_HdrFtrDefault)
	ftr := doc.AddFooter()
	para = ftr.AddParagraph()
	para.Properties().AddTabStop(6*measurement.Inch, wml.ST_TabJcRight, wml.ST_TabTlcNone)
	run = para.AddRun()
	run.AddText("Some subtitle goes here")
	run.AddTab()
	run.AddText("Pg ")
	run.AddField(document.FieldCurrentPage)
	run.AddText(" of ")
	run.AddField(document.FieldNumberOfPages)
	doc.BodySection().SetFooter(ftr, wml.ST_HdrFtrDefault)
	lorem := `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin lobortis, lectus dictum feugiat tempus, sem neque finibus enim, sed eleifend sem nunc ac diam. Vestibulum tempus sagittis elementum`
	for i := 0; i < 5; i++ {
		para = doc.AddParagraph()
		run = para.AddRun()
		run.AddText(lorem)
	}
	doc.SaveToFile("header-footer.docx")
}
  

Trabajar con tablas en Word DOCX

La biblioteca de código abierto unioffice permite a los programadores de computadoras agregar y modificar tablas dentro de documentos de Word. Las tablas son muy útiles y se pueden utilizar para organizar y presentar datos de una mejor manera. Admite agregar una tabla con y sin bordes y permite construir un estilo de tabla con facilidad. Puede colocar contenido fácilmente en una tabla y ajustar el tamaño según sus necesidades.

 Español