是否可以在WPF中打印具有可重复表列标题的Flowdocument表

是否可以在WPF中打印具有可重复表列标题的Flowdocument表,wpf,printing,flowdocument,Wpf,Printing,Flowdocument,如何在WPF中打印具有可重复表列标题的Flowdocument表 我看到过这个[],但它不起作用。基本上你需要自己对文档进行分页,就像用word包装一段文本一样。检查下一行是否合适,如果不合适,则分页符,从表格标题开始每页,然后继续追加表格行,直到页面已满 不幸的是,没有一个分页者这样做。引用的CodeProject存在一些问题,但它几乎可以工作,我成功地进行了以下更改: 在GetPage中,只需删除引用控制台的四行 在定义类中添加 public static Size Subtract( Si

如何在WPF中打印具有可重复表列标题的Flowdocument表


我看到过这个[],但它不起作用。

基本上你需要自己对文档进行分页,就像用word包装一段文本一样。检查下一行是否合适,如果不合适,则分页符,从表格标题开始每页,然后继续追加表格行,直到页面已满


不幸的是,没有一个分页者这样做。

引用的CodeProject存在一些问题,但它几乎可以工作,我成功地进行了以下更改:

在GetPage中,只需删除引用控制台的四行

在定义类中添加

public static Size Subtract( Size s1, Size s2 )
{
    return new Size( s1.Width - s2.Width, s1.Height - s2.Height );
}
并更改内容大小以获得

    return Subtract( PageSize, new Size(
        Margins.Left + Margins.Right,
        Margins.Top + Margins.Bottom + HeaderHeight + FooterHeight) );
然后,在您自己的代码中,单击按钮即可调用类似的内容:--我不喜欢他的类名:)

在我的例子中,我不需要页脚,但页眉委托(或类似的委托)是必须的。页边距和页面大小将默认,但我需要不同的值

最后,我发现我需要将
KeepTogether=true
添加到表格单元格的段落定义中。

试试这个:
它支持页眉/页脚,并且有一些很好的特性。
祝你好运

我还丢失了查看和打印之间的文本对齐设置:此链接中的建议修复了我:-并减少了我的代码。不幸的是,这根本没有任何作用。我想在
定义中添加
RepeatTableHeaders=true
,但在我的表中没有重复的内容。
PrintDialog printDialog = new PrintDialog( );
printDialog.PrintTicket.PageOrientation = PageOrientation.Landscape;
if ( true == printDialog.ShowDialog( ) )
{

  MyPaginator.Definition d = new MyPaginator.Definition
    {
        Header = ( c, b, n ) => c.DrawRectangle( Brushes.Black, null, b ),
        Margins = new Thickness( 48 ), // 1/2 inch all around
        PageSize = new Size( flowDocument.PageWidth, flowDocument.PageHeight ),
    };
  DocumentPaginator s = new MyPaginator( flowDocument, d );
  printDialog.PrintDocument( s, "Print Job Title" );
}