Отидете на LIbrary, за да генерирате и редактирате документи на MS Word
Библиотека Go с отворен код за управление и автоматизиране на обичайни задачи за текстообработка като вмъкване на горен и долен колонтитул, таблици и изображения към DOCX файлове на Word и др.
unioffice е мощна чиста Go библиотека с отворен код, която позволява на разработчиците на софтуер да управляват текстови документи и да автоматизират често срещани задачи за текстообработка с лекота в собствените си приложения, без да изискват Microsoft Word. Библиотеката е доста добре оптимизирана и ви позволява лесно да редактирате кода, за да отговаря на вашите изисквания.
Библиотеката unioffice е силна базирана на Go библиотека, която може да се използва за генериране, редактиране, форматиране и обработка на Office Open XML документи. Библиотеката поддържа няколко важни функции за текстообработка, като четене, писане и модифициране на документи на Word, поддръжка за форматиране на текст, автоматично генерирано съдържание, поставяне на страница на документ, вмъкване на горни и долни колонтитули, добавяне на таблици, отваряне на документ като шаблон , поддръжка на полета на формуляри и много повече.
Първи стъпки с unioffice
Препоръчителният начин за инсталиране на unioffice във вашия проект е чрез GitHub. Моля, използвайте следната команда за гладка инсталация.
Инсталирайте unioffice чрез GitHub
go get github.com/unidoc/unioffice/
go build -i github.com/unidoc/unioffice/...
Създайте Word DOCX документ чрез Go API
Библиотеката с отворен код unioffice предостави възможността за лесно създаване на нов Word DOCX документ. Можете също така лесно да отваряте и модифицирате съществуващ документ на Microsoft Word във вашите собствени приложения. Библиотеката също включва функции за добавяне на нови текстови абзаци, вмъкване на изображения в страница, подравняване на текст, добавяне на горни и долни колонтитули, добавяне на таблици и много други.
Свойства на документи на Word чрез 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")
}
Вмъкване на изображения в Word DOCX файлове
Библиотеката с отворен код unioffice предоставя на разработчиците на софтуер възможността да използват изображения в документи на Microsoft Word. Той поддържа функции като вмъкване на изображения на избраното от вас място, модифициране на съществуващо изображение, обвиване на текст около изображението, изтриване на изображението и много други. За добавяне на изображение е необходимо да посочите името и местоположението на изображението.
Управление на изображения в Word документи чрез 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")
}
Добавете горен и долен колонтитул към Word документ
Горните и долните колонтитули могат да се използват за включване на информацията, която потребителите искат да се показва на всяка страница от документ, като име на автор, заглавие на документ или номера на страници. Библиотеката unioffice позволява на разработчиците на софтуер лесно да добавят горни и долни колонтитули към Word документи. Освен това позволява да имате различни горни и долни колонтитули в зависимост от раздела на документа. Той също така включва поддръжка за четни, нечетни и първи функции.
Добавяне на Header Footer към Word документ чрез 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")
}
Работа с таблици в Word DOCX
Библиотеката с отворен код unioffice позволява на компютърните програмисти да добавят и променят таблици в Word документи. Таблиците са много полезни и могат да се използват за организиране и представяне на данни по по-добър начин. Той поддържа добавяне на таблица с и без граници, както и позволява лесно конструиране на стил на таблица. Можете лесно да поставите съдържание в таблица и да регулирате размера според вашите нужди.