Eikite į biblioteką, kad galėtumėte generuoti ir redaguoti MS Word dokumentus

Atvirojo kodo „Go Library“, kad galėtumėte valdyti ir automatizuoti įprastas tekstų apdorojimo užduotis, pvz., antraštės ir poraštės, lentelių ir vaizdų įterpimą į Word DOCX failus ir kt.

unioffice yra galinga atvirojo kodo gryna Go biblioteka, leidžianti programinės įrangos kūrėjams lengvai valdyti Word dokumentus ir automatizuoti įprastas teksto apdorojimo užduotis savo programose, nereikalaujant Microsoft Word. Biblioteka yra gana gerai optimizuota ir leidžia lengvai redaguoti kodą, kad jis atitiktų jūsų poreikius.

„unioffice“ biblioteka yra stipri „Go“ pagrindu sukurta biblioteka, kurią galima naudoti „Office Open XML“ dokumentams generuoti, redaguoti, formatuoti ir apdoroti. Biblioteka palaiko keletą svarbių teksto apdorojimo funkcijų, tokių kaip Word dokumentų skaitymas, rašymas ir keitimas, teksto formatavimo palaikymas, automatiškai sugeneruotas turinys, įdėjimas į dokumento puslapį, antraščių ir poraštių įterpimas, lentelių pridėjimas, dokumento kaip šablono atidarymas. , formos laukų palaikymas ir daug daugiau.

Previous Next

Darbo su unioffice pradžia

Rekomenduojamas būdas įdiegti „unioffice“ projekte yra naudoti „GitHub“. Norėdami sklandžiai įdiegti, naudokite šią komandą.

Įdiekite „unioffice“ per „GitHub“.

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

Sukurkite Word DOCX dokumentą naudodami „Go API“.

Atvirojo kodo bibliotekos unioffice suteikė galimybę lengvai sukurti naują Word DOCX dokumentą. Taip pat galite lengvai atidaryti ir modifikuoti esamą Microsoft Word dokumentą savo programose. Bibliotekoje taip pat buvo naujų teksto pastraipų pridėjimo, vaizdų įterpimo į puslapį, teksto lygiavimo, antraščių ir poraštių pridėjimo, lentelių pridėjimo ir daug kitų funkcijų.

Pasiekite „Word“ dokumento ypatybes naudodami „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")
}
  

 Įdėkite vaizdus į Word DOCX failus

Atvirojo kodo bibliotekos unioffice programinės įrangos kūrėjams suteikia galimybę naudoti vaizdus Microsoft Word dokumentuose. Jis palaiko tokias funkcijas kaip vaizdų įterpimas į pasirinktą vietą, esamo vaizdo modifikavimas, teksto apvyniojimas aplink vaizdą, vaizdo ištrynimas ir daug daugiau. Norint pridėti paveikslėlį, būtina nurodyti paveikslėlio pavadinimą ir vietą.

Tvarkykite vaizdus „Word“ dokumentuose naudodami „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")
}
  

Pridėti antraštę ir poraštę prie „Word“ dokumento

Antraštės ir poraštės gali būti naudojamos norint įtraukti informaciją, kurią vartotojai nori matyti kiekviename dokumento puslapyje, pvz., autoriaus vardą, dokumento pavadinimą arba puslapių numerius. Unioffice biblioteka leidžia programinės įrangos kūrėjams lengvai pridėti antraštes ir poraštes prie Word dokumentų. Tai taip pat leidžia turėti skirtingas antraštes ir poraštes, atsižvelgiant į dokumento skyrių. Ji taip pat apėmė lyginių, nelyginių ir pirmųjų funkcijų palaikymą.

Pridėkite antraštę ir poraštę prie „Word“ dokumento naudodami „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")
}
  

Darbas su lentelėmis Word DOCX

Atvirojo kodo bibliotekos unioffice leidžia kompiuterių programuotojams įtraukti ir modifikuoti lenteles Word dokumentuose. Lentelės yra labai naudingos ir gali būti naudojamos norint geriau tvarkyti ir pateikti duomenis. Tai palaiko lentelės su ir be kraštinių pridėjimą, taip pat leidžia lengvai sukurti stalo stilių. Galite lengvai sudėti turinį į lentelę ir pritaikyti dydį pagal savo poreikius.

 Lietuvių