gpt4 book ai didi

go - 使用 golang 库 unioffice 填写 docx 中的表单字段

转载 作者:IT王子 更新时间:2023-10-29 01:46:34 25 4
gpt4 key购买 nike

我正在尝试使用 unioffice 库填写表单字段。我正在使用的文档包含几个段落。这些段落包含几个表单域。我想填写文档中的所有表单域。这是我正在运行的代码:

    doc, err := document.Open("form.docx")
if err != nil {
log.Fatalf("error opening form: %s", err)
}

for i := range doc.FormFields() {
doc.FormFields()[i].SetValue("test")
}

doc.SaveToFile("filled-form.docx")

但是,并非所有表单字段都已填写。

最佳答案

在我看来像是 func (d *Document) Save(w io.Writer) error{} 中的错误。我可以读取和写入每个 FormFields,但实际上只有段落中的最后一个 FormField 值被保存到文件中。

在您保存到文件之前,下面的代码按预期工作。 (这意味着它打印出先前设置的值)。我看到你已经在 github ( link ) 上打开了一个新问题,我希望你有更多的运气。

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)
}
}

关于go - 使用 golang 库 unioffice 填写 docx 中的表单字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56917083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com