Pergi ke Perpustakaan untuk Jana & Edit Dokumen MS Word

Pustaka Go Sumber Terbuka untuk Mengurus & Mengautomasikan tugas Pemprosesan Word biasa seperti memasukkan Pengepala & Pengaki, Jadual & Imej ke fail Word DOCX & banyak lagi.

unioffice ialah perpustakaan Go tulen sumber terbuka yang berkuasa yang membolehkan pembangun perisian mengurus dokumen perkataan dan mengautomasikan tugas pemprosesan perkataan biasa dengan mudah di dalam aplikasi mereka sendiri tanpa memerlukan Microsoft Word. Perpustakaan ini dioptimumkan dengan baik dan membolehkan anda mengedit kod dengan mudah untuk memenuhi keperluan anda.

Pustaka unioffice ialah perpustakaan berasaskan Go yang kukuh yang boleh digunakan untuk menjana, mengedit, memformat dan memproses dokumen XML Office Open. Perpustakaan menyokong beberapa ciri pemprosesan perkataan yang penting, seperti membaca, menulis & mengubah suai dokumen Word, Sokongan Pemformatan Teks, Jadual kandungan yang dijana secara automatik, Meletakkan pada halaman dokumen, sisipan pengepala dan pengaki, menambah jadual, Membuka dokumen sebagai templat , borang sokongan medan dan banyak lagi.

Previous Next

Bermula dengan unioffice

Cara yang disyorkan untuk memasang unioffice ke dalam projek anda ialah dengan menggunakan GitHub. Sila gunakan arahan berikut untuk pemasangan yang lancar.

Pasang unioffice melalui GitHub

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

Cipta Dokumen Word DOCX melalui Go API

Unioffice perpustakaan sumber terbuka telah menyediakan kemudahan untuk mencipta Dokumen Word DOCX baharu dengan mudah. Anda juga boleh membuka dan mengubah suai Dokumen Microsoft Word sedia ada dengan mudah di dalam aplikasi anda sendiri. Perpustakaan ini juga termasuk ciri untuk menambah perenggan teks baharu, memasukkan imej pada halaman, penjajaran teks, menambah pengepala dan pengaki, menambah jadual dan banyak lagi.

Akses Harta Dokumen Word melalui 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")
}
  

 Sisipkan Imej dalam Fail DOCX Word

Unioffice perpustakaan sumber terbuka menyediakan pembangun perisian keupayaan untuk menggunakan imej di dalam dokumen Microsoft Word. Ia menyokong fungsi seperti memasukkan imej ke tempat pilihan anda, mengubah suai imej sedia ada, membungkus teks di sekeliling imej, memadamkan imej dan banyak lagi. Untuk menambah imej adalah perlu untuk memberikan nama dan lokasi imej.

Urus Imej dalam Dokumen Word melalui 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")
}
  

Tambahkan Pengepala & Pengaki pada Dokumen Word

Pengepala dan pengaki boleh digunakan untuk memasukkan maklumat yang pengguna mahu muncul pada setiap halaman dokumen seperti nama pengarang, tajuk dokumen atau nombor halaman. Pustaka unioffice membolehkan pembangun perisian menambah pengepala & pengaki pada dokumen perkataan dengan mudah. Ia juga membolehkan pengepala dan pengaki berbeza bergantung pada bahagian dokumen. Ia juga termasuk sokongan untuk fungsi genap, ganjil dan pertama.

Tambahkan Pengepala & Pengaki pada Dokumen Word melalui 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")
}
  

Bekerja dengan Jadual dalam Word DOCX

Unioffice perpustakaan sumber terbuka membolehkan pengaturcara komputer menambah dan mengubah suai jadual di dalam dokumen perkataan. Jadual sangat berguna dan boleh digunakan untuk menyusun dan mempersembahkan data dengan cara yang lebih baik. Ia menyokong penambahan jadual dengan dan tanpa sempadan serta membolehkan membina gaya jadual dengan mudah. Anda boleh meletakkan kandungan dalam jadual dengan mudah dan melaraskan saiz mengikut keperluan anda.

 Melayu