如何解决如何在 NPOI - Docx 中添加与默认页脚不同的第一页页脚?
我正在使用 NPOI 2.5.2 生成一个 docx 文件,并且我坚持使用第一页的页眉/页脚。 我想要一个第一页自定义页脚并从第二页开始编号。
这是我的第一页页脚代码:
// First page
doc.Document.body.sectPr = new CT_SectPr();
var footer = new CT_Ftr();
var footerParagraph = footer.AddNewP();
footerParagraph.AddNewR().AddNewT().Value = $"FIRST PAGE CUSTOM FOOTER";
var footerPar = new XWPFParagraph(footerParagraph,doc);
var parsFooter = new XWPFParagraph[1];
parsFooter[0] = footerPar;
var headerFooterPolicy = doc.GetHeaderFooterPolicy();
if (headerFooterPolicy == null)
headerFooterPolicy = doc.CreateHeaderFooterPolicy();
headerFooterPolicy.CreateFooter(XWPFHeaderFooterPolicy.FIRST,parsFooter);
这是我的带有页码的默认页脚代码:
// Other pages
footerParagraph = footer.AddNewP();
footerParagraph.AddNewR().AddNewFldChar().fldCharType = ST_FldCharType.begin;
footerParagraph.AddNewR().AddNewInstrText().Value = " PAGE ";
footerParagraph.AddNewR().AddNewFldChar().fldCharType = ST_FldCharType.separate;
footerParagraph.AddNewR().AddNewFldChar().fldCharType = ST_FldCharType.end;
footerPar = new XWPFParagraph(footerParagraph,doc);
parsFooter = new XWPFParagraph[1];
parsFooter[0] = footerPar;
headerFooterPolicy.CreateFooter(XWPFHeaderFooterPolicy.DEFAULT,parsFooter);
使用上面的代码,我看不到第一页的自定义页脚,但可以看到每一页中的页码。我做错了什么?
我找到了 this similar question,但在 NPOI 中找不到 addNewTitlePg
方法。
关于 NPOI 是否有任何适当的文档和示例?
解决方法
这是我的第一个页脚工作的代码。 (使用 NPOI 2.5.3)
var doc = new XWPFDocument();
using (var sw = File.Create("fileformat.docx"))
{
XWPFParagraph p1 = doc.CreateParagraph();
XWPFParagraph p2 = doc.CreateParagraph();
XWPFRun r1 = p1.CreateRun();
XWPFRun r2 = p2.CreateRun();
r1.SetText("The quick brown fox");
r1.AddBreak(BreakType.PAGE);
r2.SetText("Next page: The quick brown fox");
doc.Document.body.sectPr = new CT_SectPr();
var policy = doc.CreateHeaderFooterPolicy();
var ctSectPr = doc.Document.body.sectPr;
if (ctSectPr.titlePg == null)
{
ctSectPr.titlePg = new CT_OnOff() { val = true };
}
var firstFooter = policy.CreateFooter(ST_HdrFtr.first);
var paragraph = firstFooter.CreateParagraph();
var run = paragraph.CreateRun();
run.SetText("First page footer...");
var defaultFooter = policy.CreateFooter(ST_HdrFtr.@default);
paragraph = defaultFooter.CreateParagraph();
run = paragraph.CreateRun();
paragraph.Alignment = ParagraphAlignment.RIGHT;
paragraph.GetCTP().AddNewR().AddNewFldChar().fldCharType = ST_FldCharType.begin;
paragraph.GetCTP().AddNewR().AddNewInstrText().Value = " PAGE ";
paragraph.GetCTP().AddNewR().AddNewFldChar().fldCharType = ST_FldCharType.separate;
paragraph.GetCTP().AddNewR().AddNewFldChar().fldCharType = ST_FldCharType.end;
run = paragraph.CreateRun();
doc.Write(sw);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。