我打印RichTextBlock內容,用RichTextOverflow的分頁,它的工作不錯,但我想保留段落一起在一個頁面上,現在有時我必須頁在段落中間打破。RichTextBlock溢出,段落保持在一起的一個頁面上(在一個溢出控制)
這裏是例子:
第3款應成爲下一個頁面上,似乎ITextParagraphFormat.KeepTogether正是我所需要的,但不知道怎麼去,對RichTextBlock。
我打印RichTextBlock內容,用RichTextOverflow的分頁,它的工作不錯,但我想保留段落一起在一個頁面上,現在有時我必須頁在段落中間打破。RichTextBlock溢出,段落保持在一起的一個頁面上(在一個溢出控制)
這裏是例子:
第3款應成爲下一個頁面上,似乎ITextParagraphFormat.KeepTogether正是我所需要的,但不知道怎麼去,對RichTextBlock。
如果你把裏面的TextBlock你的款/ RTB內InlineUIContainer它會被當作一個單一的元素,如果需要,將結轉到下一個頁面完整。這種方法可能有一些副作用,但我相信它應該進行打印工作。
畢竟我提出,將「推」那些在兩頁上破到下一個頁面的段落,我不看好這種解決方案非常滿意的方法,但我沒有找到另一種方式
public static void BreakBeforeLastParagraph(RichTextBlockOverflow rto)
{
if (!rto.HasOverflowContent)
return;
var pageBreak = rto.ContentEnd.Offset;
var brokenPar = rto.ContentSource.Blocks.FirstOrDefault(pr => pr.ElementStart.Offset <= pageBreak && pr.ElementEnd.Offset >= pageBreak);
if (brokenPar != null)
{
double spacerSize = pageBreak - brokenPar.ElementStart.Offset;
var spacer = new Paragraph();
spacer.Margin = new Windows.UI.Xaml.Thickness(0,spacerSize, 0,0);
rto.ContentSource.Blocks.Insert(rto.ContentSource.Blocks.IndexOf(brokenPar), spacer);
}
rto.UpdateLayout();
}
感謝您與解決方案跟進。我還是想知道如果有一個聲明的方式來告訴它來保持一個段落在一個頁面上。不過,我懷疑它。 –
我是:)那將是非常不錯的功能,尤其是打印交易時 –