繁体   English   中英

使用 WordProcessingDocument 时 Word 文档不显示页眉、页脚和图像

[英]Word document not displaying header, footer and images when using WordProcessingDocument

我正在使用WordprocessingDocument读取和写入 Word 文档的内容,但是当我使用MemoryStream打开文档时,它没有向我显示 Word 文档中已有的图像和页眉/页脚。 下面是相同的代码。

private void AddReport(MainDocumentPart parent, MemoryStream report)
        {
            using (MemoryStream editingMemoryStream = new MemoryStream())
            {
                report.Position = 0;
                report.CopyTo(editingMemoryStream);
                editingMemoryStream.Position = 0;
                using (WordprocessingDocument newDoc = WordprocessingDocument.Open(editingMemoryStream, true))
                {
                    WP.Body Template = newDoc.MainDocumentPart.Document.Body;
                    var Main = newDoc.MainDocumentPart;
                    var cloneTemplate = Template.CloneNode(true);

                    parent.Document.Body.PrependChild(new WP.Paragraph(new WP.Run(cloneTemplate)));
                    parent.Document.Save();
                }
            }
        }

word文档的截图:在此处输入图片描述在此,父文档是我将上述文档放在前面的文档。 任何帮助将不胜感激。 提前致谢。

页眉、页脚和图像不是文档正文的一部分,因此不会在所描述的场景中转移到另一个文档。

所有这些信息都存储在 Word 文件的“zip 包”中包含的单独“xml 部分”中。 Body部分仅包含引用(“rel”部分中列出的关系 ID,指向/链接到包中包含的相关 xml 部分)。

这可以通过在 Open XML SDK Productivity Tool 中打开文档并检查底层 Word Open XML 来查看。

为了将此类内容复制到另一个文档,不仅需要克隆正文,还需要克隆包含您想要拥有的内容的每个相关 xml 部分,同时动态生成必要的关系 - 这不是一项微不足道的任务。 此处和 Internet 上的其他地方(包括我的博客 WordMeister)都有一些帖子展示了如何完成此操作的基础知识,您可以将其用作理解所需方法的起点。

或者,根据父文档是什么,从“新”文档的副本开始并使用其他内容对其进行编辑可能更有意义。

FWIW 并为了完整起见在这里提到:COM 对象模型将执行所描述的操作 - 复制文档正文并粘贴到另一个文档确实会携带所有这些信息。 但是 Word 应用程序正在执行开发人员在使用 Open XML SDK 时需要编码的所有“繁重工作”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM