Редактирование файлов формата .docx в Golang
Решил попробовать использовать в своей программе https://github.com/unidoc/unioffice. На чтение работает отлично. Не считая того, что в stdout пишется куча warnings вида unsupported relationship type:... и т.д. Однако при редактировании .docx файла и последующем сохранении итоговый файл в MS Office не открывается. Как правильно пользоваться этой библиотекой? Поддерживает ли она именно майкрософтовский формат .docx?
package main
import (
"fmt"
"log"
"github.com/unidoc/unioffice/document"
)
func main() {
filePath := "1.docx"
doc, err := document.Open(filePath )
if err != nil {
log.Fatalf("error opening document: %s", err)
}
//paragraphs := []document.Paragraph{}
//for _, p := range doc.Paragraphs() {
// paragraphs = append(paragraphs, p)
//}
for _, p := range doc.Paragraphs() {
for _, r := range p.Runs() {
fmt.Print(r.Text())
}
fmt.Println()
}
var para document.Paragraph
var run document.Run
//para = doc.InsertParagraphAfter(paragraphs[len(paragraphs)-1])
//run = para.AddRun()
//run.AddText("Новый текст2")
para = doc.AddParagraph()
run = para.AddRun()
run.AddText("Новый текст")
//doc.SetStrict(false) // пока этого нет в master ветке
doc.SaveToFile(filePath )
for _, p := range doc.Paragraphs() {
for _, r := range p.Runs() {
fmt.Print(r.Text())
}
fmt.Println()
}
}
Ответы (1 шт):
В общем проблема выяснилась. unioffice редактируя файл, сохраняет его в формате несовместимом с форматом docx MS Word OFfice 2007 в силу каких-то проприетарных особенностей реализации этого формата в MS Word Office 2007 на момент начала стандартизации формата Office Open XML. Остальные версии Office (2010\16 и т.д.) открывают данные файлы нормально, поскольку microsoft сделал свой формат более совместимым с современным стандартом Office Open XML.