עבור לספרייה כדי ליצור ו לערוך מסמכי MS Word
ספריית קוד פתוחה Go לניהול ואוטומציה של משימות עיבוד תמלילים נפוצות כמו הוספת כותרת עליונה ותחתונה, טבלאות ותמונות לקובצי Word DOCX ועוד.
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 קיים בתוך היישומים שלך. הספרייה כללה גם תכונות להוספת פסקאות טקסט חדשות, הוספת תמונות לעמוד, יישור טקסט, הוספת כותרות עליונות ותחתונות, הוספת טבלאות ועוד רבים.
גישה לנכסים באמצעות 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 בקלות. זה גם מאפשר להחזיק כותרות עליונות ותחתונות שונות בהתאם לקטע המסמך. זה כלל גם תמיכה בפונקציות זוגיות, אי זוגיות וראשונות.
הוספת כותרת 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. טבלאות שימושיות מאוד וניתן להשתמש בהן כדי לארגן ולהציג נתונים בצורה טובה יותר. הוא תומך בהוספת שולחן עם ובלי גבולות וכן מאפשר בניית סגנון שולחן בקלות. אתה יכול בקלות למקם תוכן בטבלה ולהתאים את הגודל לפי הצרכים שלך.