段落落入新行时出现问题 Open XML

Issue when paragraph falls into new line Open XML

我有许多图像要插入到文档中,这些替换与替换段落所在的页面不同。这似乎是当我尝试在 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);

在尝试了几种方法后,我受到了这个 post 的启发: OpenXml - How to identify whether the paragraph extends to next page

xml看起来像这样(左边是修复的,右边是损坏的):

我不认为(但不确定)问题出在 w:lastRenderedPageBreak。我怀疑我没有看到导致 Word 失败的确切问题。

当我遇到这些类型的问题时,我会使用 'binary search' 方法 - 删除标记直到 Word 正常打开,然后重新添加标记直到它失败。不幸的是,这基本上是我们在 Word 无法打开时可以采取的唯一方法。我们没有从 Word 返回任何关于失败原因的信息。

前段时间,我录制了一个截屏视频,解释了我在面对这种情况时所采取的方法。

https://www.youtube.com/watch?v=xAnmxPqP_5A