【发布时间】:2026-02-11 03:30:02
【问题描述】:
我有许多图像要插入到文档中,这些替换内容与替换段落所在的页面不同。这似乎是当我尝试在 MS Word 中打开生成的文档时出现修复弹出窗口的原因。 这是我用来复制图像的代码:
tbl.Drawing drawing = buildImage(doc.MainDocumentPart.GetIdOfPart(imagePart), heightEmus, widthEmus);
tbl.Paragraph paragraph1 = new tbl.Paragraph();
tbl.ParagraphProperties paragraphProperties1 = new tbl.ParagraphProperties();
KeepLines keepLines1 = new KeepLines();
paragraphProperties1.Append(keepLines1);
BookmarkStart bookmarkStart1 = new BookmarkStart() { Name = "_GoBack", Id = "0" };
tbl.Run run1 = new tbl.Run();
LastRenderedPageBreak lastRenderedPageBreak1 = new LastRenderedPageBreak();
run1.Append(lastRenderedPageBreak1);
run1.Append(drawing);
BookmarkEnd bookmarkEnd1 = new BookmarkEnd() { Id = "0" };
paragraph1.Append(paragraphProperties1);
paragraph1.Append(bookmarkStart1);
paragraph1.Append(run1);
paragraph1.Append(bookmarkEnd1);
paragraph.InsertAfterSelf(paragraph1);
在尝试了几种方法后,我受到这篇文章的启发: OpenXml - How to identify whether the paragraph extends to next page
xml看起来是这样的(左边是修复的,右边是损坏的):
【问题讨论】:
-
尽量不要添加 LastRenderedPageBreak 属性。 Word 将在下次打开文档时重新计算页面布局(换行符和分页符),无论上次保存和关闭文档时它们在哪里。如果 Word 不存在,它就无关紧要......
-
我没加,还是一样
-
尝试使用OpenXml productivity tool - 您可以将文档加载到其中并点击“验证”按钮以找出文件中无效的内容。
-
该选项在两个文件上产生相同的结果
-
好吧,修复文件中不在“坏”文件中的另一件事是 rPr (RunProperties)。更确切地说,Word 在那里添加了哪些不在您的代码中的内容?使用生产力工具的代码生成部分来获取 Word 想要修复的文档并将其合并到您的代码中。
标签: c# .net xml openxml openxml-sdk