انتقل إلى LIbrary لإنشاء مستندات MS Word وتحريرها

مكتبة Open Source Go لإدارة وأتمتة مهام معالجة الكلمات الشائعة مثل إدراج Header & Footer و Tables & Images في ملفات Word DOCX والمزيد.

unioffice هي مكتبة Go نقية قوية ومفتوحة المصدر تتيح لمطوري البرامج إدارة مستندات الكلمات وأتمتة مهام معالجة الكلمات الشائعة بسهولة داخل تطبيقاتهم دون الحاجة إلى Microsoft Word. تم تحسين المكتبة جيدًا وتسمح لك بتحرير الكود بسهولة لتلبية متطلباتك.

مكتبة unioffice هي مكتبة قوية قائمة على Go يمكن استخدامها لإنشاء مستندات Office Open XML وتحريرها وتنسيقها ومعالجتها. تدعم المكتبة العديد من ميزات معالجة النصوص المهمة ، مثل قراءة مستندات Word وكتابتها وتعديلها ، ودعم تنسيق النص ، وجدول المحتويات الذي يتم إنشاؤه تلقائيًا ، ووضعه في صفحة المستند ، وإدراج الرؤوس والتذييلات ، وإضافة الجداول ، وفتح مستند كقالب ، شكل دعم الحقول وأكثر من ذلك بكثير.

Previous Next

الشروع في العمل مع 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 بسهولة. كما يسمح بوجود رؤوس وتذييلات مختلفة بناءً على قسم المستند. كما تضمنت دعمًا للوظائف الزوجية والفردية والأولى.

أضف رأس وتذييل إلى مستند 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. الجداول مفيدة للغاية ويمكن استخدامها لتنظيم البيانات وتقديمها بطريقة أفضل. يدعم إضافة جدول بحدود وبدون حدود كما يسمح بإنشاء نمط جدول بسهولة. يمكنك بسهولة وضع المحتوى في طاولة وضبط الحجم وفقًا لاحتياجاتك.

 عربي