Похоже на ошибку в func (d *Document) Save(w io.Writer) error{}
. Я могу читать и писать в каждое из FormFields
, но только последнее значение FormField
в абзаце фактически сохраняется в файл.
Ниже код работает, как ожидалось, пока вы не сохраните в файл. (Это означает, что он печатает ранее установленное значение). Я видел, что вы уже открыли новый выпуск на github ( ссылка ), надеюсь, вам повезет больше.
package main
import (
"github.com/unidoc/unioffice/document"
"io/ioutil"
"log"
"os"
)
func main() {
_, err := ioutil.ReadFile("filled-form.docx")
if err == nil {
err = os.Remove("filled-form.docx")
if err != nil {
log.Fatal(err)
}
}
doc, err := document.Open("form.docx")
if err != nil {
log.Fatalf("error opening form: %s", err)
}
for _, f := range doc.FormFields() {
if f.Type() == document.FormFieldType(1) {
f.SetValue("test")
}
}
for _, f := range doc.FormFields() {
log.Println("-------------------")
log.Println(f.Name())
log.Println(f.Value())
}
err = doc.SaveToFile("filled-form.docx")
if err != nil {
log.Fatal(err)
}
}