Редактирование файлов формата .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 шт):

Автор решения: Garry Galler

В общем проблема выяснилась. unioffice редактируя файл, сохраняет его в формате несовместимом с форматом docx MS Word OFfice 2007 в силу каких-то проприетарных особенностей реализации этого формата в MS Word Office 2007 на момент начала стандартизации формата Office Open XML. Остальные версии Office (2010\16 и т.д.) открывают данные файлы нормально, поскольку microsoft сделал свой формат более совместимым с современным стандартом Office Open XML.

→ Ссылка