[英]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.