段落入新行Open XML时的问题

时间:2015-12-09 12:29:33

标签: c# .net xml openxml openxml-sdk

我有很多想要插入文档的图片,这些替换版本与更换段落所在的页面不同。这似乎是我尝试在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看起来像这样(左边是修复过的,右边是损坏的):

enter image description here

1 个答案:

答案 0 :(得分:0)

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

当我遇到这些类型的问题时,我会使用'二分搜索'方法 - 删除标记,直到Word打开而不失败,然后重新添加标记直到失败。不幸的是,这基本上是我们在Word无法打开时可以采取的唯一方法。我们不会从Word获得任何类型的信息,以了解它失败的原因。

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

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