Asp.net 自动更新TOC

Asp.net 自动更新TOC,asp.net,automation,ms-word,openxml,Asp.net,Automation,Ms Word,Openxml,我正在asp.net网站上使用OpenXML从模板创建Word文档,并通过altChunk将其他模板的附加部分添加到模板中,以及添加HTML片段(也包括altChunk)和图像。除了我的模板有一个目录(TOC)并且要用正确的页码和正确的标题(对于添加的部分)更新它之外,一切都正常工作,最终用户必须选择TOC并更新它(通过点击F9,或者从上下文菜单中单击更新字段)。即使如此,他们仍然必须在只更新页码还是更新整个表(让最终用户感到困惑)之间做出选择 我真的希望避免这一步,因为我希望文档准备就绪,而不

我正在asp.net网站上使用OpenXML从模板创建Word文档,并通过
altChunk
将其他模板的附加部分添加到模板中,以及添加HTML片段(也包括
altChunk
)和图像。除了我的模板有一个目录(TOC)并且要用正确的页码和正确的标题(对于添加的部分)更新它之外,一切都正常工作,最终用户必须选择TOC并更新它(通过点击F9,或者从上下文菜单中单击更新字段)。即使如此,他们仍然必须在只更新页码还是更新整个表(让最终用户感到困惑)之间做出选择

我真的希望避免这一步,因为我希望文档准备就绪,而不是看起来像是在后端自动生成的

我尝试在文档设置中添加一个
UpdateOnFieldsOpen
,但这只会在最终用户打开文档时导致混乱的nag屏幕

我曾考虑过,在OpenXML中手动更新TOC,方法是估计我添加的每个部分的长度(以页为单位)(它们可能相当稳定+/-一页),以便在用户第一次打开文档时至少给出一个相当准确的TOC,但这似乎不是很可靠

Word自动化可能会解决此问题,但不建议将其用于服务器端


有没有更好的解决办法?我可以毫无怨言地任意插入其他文档和HTML块,这似乎很愚蠢,但是更新TOC是一个主要的安全问题

毫无疑问,您已经意识到,自动更新TOC的问题是一个常见的问题

在Java世界中,docx4j企业版(ie商业版)可以通过独立于Word生成整个TOC来解决这个问题[披露:我公司的]

顺便说一下,docx4j社区版还可以将XHTML altChunk转换为原生/原始WordML,这是正确使用TOC的重要第一步。您可以在.NET环境中使用它;看


左字段解决方案可能是调用LibreOffice(例如通过JODConverter);它将自动更新TOC,无需提示。

感谢您的回复。我想知道ODF是否会更简单,但我没有想到只将LibreOffice与docx文件一起使用。我会调查的。不知道是否有一个版本的Open/LibreOffice将运行无头服务器…嗯…似乎LibreOffice Writer破坏了我的布局,不处理docx altchunk。嗨,Jason,我的公司有docx4j企业许可证。你有如何做到这一点的示例代码吗?也就是说,独立于Word生成整个TOC,这样用户就不必手动更新字段;请注意,为了获得最佳效果,您应该安装您自己的商业PDF转换器实例;有关添加新ToC的信息,请参阅