Truy cập LIbrary để Tạo và Chỉnh sửa Tài liệu MS Word

Thư viện mã nguồn mở Go để Quản lý & Tự động hóa các tác vụ Xử lý Văn bản phổ biến như chèn Đầu trang & Chân trang, Bảng & Hình ảnh vào tệp Word DOCX và hơn thế nữa.

unioffice là một thư viện Go thuần túy mã nguồn mở mạnh mẽ cho phép các nhà phát triển phần mềm quản lý tài liệu word và tự động hóa các tác vụ xử lý văn bản thông thường một cách dễ dàng bên trong các ứng dụng của riêng họ mà không yêu cầu Microsoft Word. Thư viện được tối ưu hóa khá tốt và cho phép bạn dễ dàng chỉnh sửa mã để đáp ứng yêu cầu của mình.

Thư viện unioffice là một thư viện mạnh mẽ dựa trên Go có thể được sử dụng để tạo, chỉnh sửa, định dạng và xử lý các tài liệu Office Open XML. Thư viện hỗ trợ một số tính năng xử lý văn bản quan trọng, chẳng hạn như đọc, viết và sửa đổi tài liệu Word, hỗ trợ Định dạng Văn bản, Mục lục được tạo tự động, Đặt trên trang tài liệu, chèn đầu trang và chân trang, thêm bảng, Mở tài liệu dưới dạng mẫu , hỗ trợ các trường biểu mẫu và hơn thế nữa.

Previous Next

Bắt đầu với unioffice

Cách được khuyến nghị để cài đặt unioffice vào dự án của bạn là sử dụng GitHub. Vui lòng sử dụng lệnh sau để cài đặt suôn sẻ.

Cài đặt unioffice qua GitHub

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

Tạo tài liệu Word DOCX thông qua API Go

Thư viện mã nguồn mở unioffice đã cung cấp cơ sở để tạo Tài liệu Word DOCX mới một cách dễ dàng. Bạn cũng có thể dễ dàng mở và sửa đổi Tài liệu Microsoft Word hiện có bên trong các ứng dụng của riêng bạn. Thư viện cũng bao gồm các tính năng để thêm đoạn văn bản mới, chèn hình ảnh vào trang, căn chỉnh văn bản, thêm đầu trang và chân trang, thêm bảng và nhiều tính năng khác.

Truy cập tài liệu tin tức thông qua 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")
}
  

 Chèn hình ảnh vào tệp Word DOCX

Thư viện mã nguồn mở unioffice cung cấp cho các nhà phát triển phần mềm khả năng sử dụng hình ảnh bên trong tài liệu Microsoft Word. Nó hỗ trợ các chức năng như chèn hình ảnh vào vị trí bạn chọn, sửa đổi hình ảnh hiện có, gói văn bản xung quanh hình ảnh, xóa hình ảnh, v.v. Để thêm hình ảnh, bạn cần cung cấp tên và vị trí của hình ảnh.

Quản lý hình ảnh trong tài liệu từ 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")
}
  

Thêm Đầu trang & Chân trang vào Tài liệu Word

Đầu trang và chân trang có thể được sử dụng để bao gồm thông tin mà người dùng muốn xuất hiện trên mọi trang của tài liệu, chẳng hạn như tên tác giả, tiêu đề tài liệu hoặc số trang. Thư viện unioffice cho phép các nhà phát triển phần mềm thêm đầu trang và chân trang vào tài liệu word một cách dễ dàng. Nó cũng cho phép có các đầu trang và chân trang khác nhau tùy thuộc vào phần tài liệu. Nó cũng bao gồm hỗ trợ cho các chức năng chẵn, lẻ và đầu tiên.

Thêm Header và Footer vào tài liệu từ ngày 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")
}
  

Làm việc với các bảng trong Word DOCX

Thư viện mã nguồn mở unioffice cho phép các lập trình viên máy tính thêm và sửa đổi các bảng bên trong tài liệu word. Các bảng rất hữu ích và có thể được sử dụng để sắp xếp và trình bày dữ liệu theo cách tốt hơn. Nó hỗ trợ thêm một bảng có và không có đường viền cũng như cho phép xây dựng một kiểu bảng một cách dễ dàng. Bạn có thể dễ dàng đặt nội dung trong một bảng và điều chỉnh kích thước tùy theo nhu cầu của bạn.

 Tiếng Việt