برای تولید و ویرایش اسناد MS Word به کتابخانه بروید
منبع باز Go Library برای مدیریت و خودکارسازی کارهای رایج پردازش کلمه مانند درج سرصفحه و پاورقی، جدول و تصاویر در فایلهای Word DOCX و موارد دیگر.
unioffice یک کتابخانه منبع باز قدرتمند Pure Go است که به توسعه دهندگان نرم افزار اجازه می دهد اسناد word را مدیریت کرده و کارهای رایج پردازش کلمه را به راحتی در برنامه های خود بدون نیاز به Microsoft Word خودکار کنند. این کتابخانه کاملاً بهینه شده است و به شما امکان می دهد به راحتی کد را ویرایش کنید تا نیازهای خود را برآورده کنید.
کتابخانه unioffice یک کتابخانه قوی مبتنی بر Go است که می تواند برای تولید، ویرایش، قالب بندی و پردازش اسناد Office Open XML استفاده شود. این کتابخانه از چندین ویژگی مهم پردازش کلمه پشتیبانی می کند، مانند خواندن، نوشتن و اصلاح اسناد Word، پشتیبانی از قالب بندی متن، فهرست مطالب تولید شده خودکار، قرار دادن در صفحه سند، درج سرصفحه ها و پاورقی ها، افزودن جداول، باز کردن یک سند به عنوان یک الگو. ، پشتیبانی از فیلدهای فرم و موارد دیگر.
شروع کار با یونی آفیس
روش توصیه شده برای نصب unioffice در پروژه، استفاده از GitHub است. لطفا از دستور زیر برای نصب راحت استفاده کنید.
unioffice را از طریق GitHub نصب کنید
go get github.com/unidoc/unioffice/
go build -i github.com/unidoc/unioffice/...
سند Word DOCX را از طریق Go API ایجاد کنید
Unioffice کتابخانه منبع باز این امکان را برای ایجاد یک سند Word DOCX جدید به راحتی فراهم کرده است. همچنین می توانید به راحتی یک سند مایکروسافت ورد موجود در برنامه های خود را باز کرده و تغییر دهید. این کتابخانه همچنین دارای ویژگی هایی برای افزودن پاراگراف های متنی جدید، درج تصاویر در صفحه، ترازبندی متن، افزودن سرصفحه و پاورقی، افزودن جداول و بسیاری موارد دیگر بود.
از طریق Go API به ویژگی های سند Word دسترسی پیدا کنید
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 اضافه کنند. همچنین امکان داشتن سرصفحه ها و پاورقی های مختلف بسته به بخش سند را فراهم می کند. همچنین شامل پشتیبانی از عملکردهای زوج، فرد و اول بود.
از طریق Go API سربرگ و پاورقی را به سند Word اضافه کنید
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 اضافه و تغییر دهند. جداول بسیار مفید هستند و می توان از آنها برای سازماندهی و ارائه بهتر داده ها استفاده کرد. از افزودن جدول با و بدون حاشیه پشتیبانی می کند و همچنین امکان ساخت سبک جدول را به راحتی فراهم می کند. شما به راحتی می توانید مطالب را در جدول قرار دهید و اندازه را مطابق با نیاز خود تنظیم کنید.