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.
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.