Closed mabiao0525 closed 5 months ago
你可以自行新建一个A3的空白文档,仿照 https://github.com/fumiama/go-docx/tree/master/xml/a4 的格式将相关文件拷贝出来,然后使用UseTemplate()
方法替换。至于分页符,确实没有,你可以按同样的方法得到分页符的定义,提交相关PR。
另外,我觉得AddText是不是这样写好一些 `// AddText adds text to paragraph func (p Paragraph) AddText(text string) Run { if text == "\t" { return p.AddTab() }
c := make([]interface{}, 0, 64)
for i, s := range strings.Split(text, "\n") {
if i > 0 {
c = append(c, &BarterRabbet{})
}
for tabIndex, k := range strings.Split(s, "\t") {
if tabIndex > 0 {
c = append(c, &Tab{})
}
if s != "" {
c = append(c, &Text{
Text: k,
})
}
}
}
run := &Run{
RunProperties: &RunProperties{},
Children: c,
}
p.Children = append(p.Children, run)
return run
}` 这样才可以加入换行,之前的AddText是不带换行符的,只识别了\t
你可以发一个PR.
你好,目前关于A3模板我进行了2种方法的测试,不过都出现了一些问题: 1.新建了空白A3word文档,并将相关文件考入,使用UseTemplate函数,但是在执行到WriteTo时会出现panic: open xml/a3/_rels/.rels: file does not exist提示,图中是我当前的测试代码,以及项目树 `package main
import ( "embed" "os"
"github.com/fumiama/go-docx"
)
var ( //go:embed xml //go:embed xml/a3/_rels/* templateFS embed.FS
// a3TemplateFilesList is the files list under templateFS/xml/a3
a3TemplateFilesList = []string{
"_rels/.rels",
"docProps/app.xml",
"docProps/core.xml",
"word/theme/theme1.xml",
"word/fontTable.xml",
"word/styles.xml",
"[Content_Types].xml",
}
)
func main() { w := docx.NewA4() w.UseTemplate("a3", a3TemplateFilesList, templateFS) w.AddParagraph().AddText("test")
result, err := os.Create("result.docx")
// save to file
if err != nil {
panic(err)
}
_, err = w.WriteTo(result)
if err != nil {
panic(err)
}
err = result.Close()
if err != nil {
panic(err)
}
} ` 不知道是不是我的使用有问题,想问下如何正确使用,是否可以出一个UseTemplate的说明
2.下载源码,直接用A3格式相关文档替换原xml/a4中的文件,运行后,可以生成文件,但是打开文件会显示 点击确定后,打开仍为A4模板,想问下有无解决办法
抱歉,看来是我判断错误了,A4 A3的判定应该在docyments.xml
,由以下语句控制(A3的情况)
<w:sectPr w:rsidR="00384B6B" w:rsidSect="00654812">
<w:pgSz w:w="16840" w:h="23820"/>
<w:pgMar w:top="1440" w:right="1800" w:bottom="1440" w:left="1800" w:header="851" w:footer="992" w:gutter="0"/>
<w:cols w:space="425"/>
<w:docGrid w:type="lines" w:linePitch="312"/>
</w:sectPr>
关于这个,我可以改,但最近没时间,你要急用的话可以自己改一下,然后另行提交PR。我已经推送了一个新版本,将令人迷惑的NewA4()
替换了。
谢谢,请问你有什么思路吗,因为我看在wirteTo中的pack函数时会把document.xml.rels和document.xml覆盖掉
已经完成,提交了PR,请查收
谢谢,请问你有什么思路吗,因为我看在wirteTo中的pack函数时会把document.xml.rels和document.xml覆盖掉
就按你那样就可以了,建议封装一些新的函数方便切换页面大小。
func (f *Docx) WithA4Page() *Docx
func (f *Docx) WithA3Page() *Docx
已完成
请问现在有可以更换A4为A3的调用吗,以及是否可以添加分页符?