Accédez à LIbrary pour générer et modifier des documents MS Word

Bibliothèque Go Open Source pour gérer et automatiser les tâches courantes de traitement de texte telles que l'insertion d'en-tête et de pied de page, de tableaux et d'images dans des fichiers Word DOCX, etc.

unioffice est une puissante bibliothèque open source pure Go qui permet aux développeurs de logiciels de gérer des documents Word et d'automatiser facilement les tâches courantes de traitement de texte dans leurs propres applications sans nécessiter Microsoft Word. La bibliothèque est assez bien optimisée et vous permet de modifier facilement le code pour répondre à vos besoins.

La bibliothèque unioffice est une bibliothèque puissante basée sur Go qui peut être utilisée pour générer, éditer, formater et traiter des documents Office Open XML. La bibliothèque prend en charge plusieurs fonctionnalités importantes de traitement de texte, telles que la lecture, l'écriture et la modification de documents Word, la prise en charge du formatage du texte, la table des matières générée automatiquement, le placement sur une page de document, l'insertion d'en-têtes et de pieds de page, l'ajout de tableaux, l'ouverture d'un document en tant que modèle , la prise en charge des champs de formulaire et bien plus encore.

Previous Next

Premiers pas avec unioffice

La méthode recommandée pour installer unioffice dans votre projet consiste à utiliser GitHub. Veuillez utiliser la commande suivante pour une installation fluide.

Installer unioffice via GitHub

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

Créer un document Word DOCX via l'API Go

La bibliothèque open source unioffice a fourni la possibilité de créer facilement un nouveau document Word DOCX. Vous pouvez également facilement ouvrir et modifier un document Microsoft Word existant dans vos propres applications. La bibliothèque comprenait également des fonctionnalités permettant d'ajouter de nouveaux paragraphes de texte, d'insérer des images dans une page, d'aligner du texte, d'ajouter des en-têtes et des pieds de page, d'ajouter des tableaux, etc.

Accès Word Propriétés de documents par l'intermédiaire du G 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")
}
  

 Insérer des images dans des fichiers Word DOCX

La bibliothèque open source unioffice offre aux développeurs de logiciels la possibilité d'utiliser des images dans des documents Microsoft Word. Il prend en charge des fonctionnalités telles que l'insertion d'images à l'endroit de votre choix, la modification d'une image existante, l'habillage du texte autour de l'image, la suppression de l'image, etc. Pour ajouter une image, il est nécessaire de fournir le nom et l'emplacement de l'image.

Gérer les images en format Word Documents via 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")
}
  

Ajouter un en-tête et un pied de page au document Word

Les en-têtes et les pieds de page peuvent être utilisés pour inclure les informations que les utilisateurs souhaitent voir apparaître sur chaque page d'un document, telles que le nom de l'auteur, le titre du document ou les numéros de page. La bibliothèque unioffice permet aux développeurs de logiciels d'ajouter facilement des en-têtes et des pieds de page aux documents Word. Cela permet également d'avoir des en-têtes et des pieds de page différents selon la section du document. Il comprenait également la prise en charge des fonctionnalités paires, impaires et premières.

Ajouter l'en-tête Footer à Word Document via 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")
}
  

Travailler avec des tableaux dans Word DOCX

La bibliothèque open source unioffice permet aux programmeurs informatiques d'ajouter et de modifier des tableaux dans des documents Word. Les tableaux sont très utiles et peuvent être utilisés pour mieux organiser et présenter les données. Il prend en charge l'ajout d'un tableau avec et sans bordures et permet de créer facilement un style de tableau. Vous pouvez facilement placer du contenu dans un tableau et ajuster la taille en fonction de vos besoins.

 Français