【问题标题】:MigraDoc - how to avoid line break between paragraphsMigraDoc - 如何避免段落之间的换行
【发布时间】:2013-03-15 17:49:12
【问题描述】:

我想知道是否有办法避免在某些段落之间换行。 例如:

Paragraph PjourneyTitle = sec.AddParagraph(journeyTitle, "Heading2");
Paragraph Pjourney = sec.AddParagraph();
Pjourney.Format.Font.Bold = true;
Pjourney.AddText(offer.Destination);

在 PjourneyTitle 和 Pjourney 之间发生了换行,我想避免这种情况。

今天我一直在谷歌上搜索一整天都无济于事。

非常感谢任何帮助。提前致谢!

编辑: 使用你们建议的代码后: 这似乎对我不起作用......不管是什么原因。虽然 KeepWithNext 似乎是 ParagraphFormat 中的一个选项,但将其设置为 true 对我没有任何作用。我正在设置我在上面发布的 MigraDoc 代码中使用的样式 (Heading2)。

Heading2 的样式代码如下:

style = document.Styles["Heading2"];
style.ParagraphFormat.LeftIndent = "0cm";
style.ParagraphFormat.KeepWithNext = true;
//style.ParagraphFormat.KeepTogether = true;
style.Font.Size = 10;
style.Font.Bold = true;
style.ParagraphFormat.PageBreakBefore = false;
style.ParagraphFormat.SpaceBefore = 6;
style.ParagraphFormat.SpaceAfter = 6;

【问题讨论】:

    标签: c# line-breaks paragraph pdfsharp migradoc


    【解决方案1】:

    KeepWithNext 将确保第一段的最后一行和第二段的第一行在同一页上。所以它可以防止这两个段落之间的分页符,但不能防止段落内部的分页符。

    KeepTogether 将防止段落内出现分页符。

    如果您想将两个段落都视为牢不可破的块,则在两个段落上使用 KeepTogether 并在第一段上使用 KeepWithNext 应该可以解决问题。

    设计使每个段落都从新行开始。没有办法防止段落之间换行(对不起,我应该更仔细地阅读这个问题)。

    您可以使用 AddFormattedText 在段落中混合不同的格式(例如粗体和普通)。

    您可以使用一个表格(可能带有隐藏边框)来拥有两个不同的列。

    因此,根据您的需要,AddFormattedText 或表格可能是最佳选择。

    【讨论】:

    • 是的,再次感谢伙计。我去了“餐桌方式”。在我改用 MigraDoc 之前,我使用了一个包含我的段落的数组;然后我迭代它并在特定位置使用 RenderObject 渲染每个元素。 MigraDoc 的文档渲染器以某种方式在每个段落之后插入换行符(我的最佳猜测)。我希望我可以投票支持您的答案,但是缺少代表不会让我这样做。干杯!
    • 在表格中放置段落是防止换行的解决方案。将每个段落放在同一行的不同单元格中,它们之间不会有换行符。
    【解决方案2】:

    我认为您正在寻找 keepWithNext 属性。将其设置为 true。

    http://msdn.microsoft.com/en-us/library/system.windows.documents.paragraph.keepwithnext.aspx

    【讨论】:

    • 谢谢各位...感谢您的回答。
    • 好的,我最终使用了表格。仍然不知道为什么 KeepWithNext 不起作用。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2010-11-21
    • 2018-05-07
    • 2013-06-09
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    相关资源
    最近更新 更多