如何使用可重复的表列标题在WPF中打印Flowdocument表?
我已经看过这个[http://www.codeproject.com/KB/WPF/PimpedDocumentPaginator.aspx]并且它不起作用。
答案 0 :(得分:1)
引用的CodeProject存在一些问题,但它几乎可以运行,并且我已成功完成以下更改:
在GetPage中,只需删除引用控制台的四行。
在“定义”类中添加
public static Size Subtract( Size s1, Size s2 )
{
return new Size( s1.Width - s2.Width, s1.Height - s2.Height );
}
并将ContentSize更改为
return Subtract( PageSize, new Size(
Margins.Left + Margins.Right,
Margins.Top + Margins.Bottom + HeaderHeight + FooterHeight) );
然后,在你自己的代码中,点击按钮就可以调用它: - 我不喜欢他的类名:)
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" );
}
在我的情况下,我不需要页脚,但是Header委托(或类似的东西)是必须的。边距和PageSize将默认,但我想要不同的值。
最后,我发现我需要将KeepTogether = true
添加到我的TableCells的段落定义中。
答案 1 :(得分:0)
您基本上需要自己对文档进行分页,方式与您自动换行一段文本相同。检查下一行是否适合,如果没有,则分页,使用表头启动每个页面,并继续追加表行直到页面已满。
不幸的是,这些分页器都没有这样做。
答案 2 :(得分:0)
试试这个:WPF Reports
它支持页眉/页脚,并具有一些很好的功能。
祝你好运