繰り返し可能なテーブル列ヘッダーを使用して、WPF で Flowdocument テーブルを印刷するにはどうすればよいですか?
これ [ http://www.codeproject.com/KB/WPF/PimpedDocumentPaginator.aspx ] を見たことがありますが、機能しません。
繰り返し可能なテーブル列ヘッダーを使用して、WPF で Flowdocument テーブルを印刷するにはどうすればよいですか?
これ [ http://www.codeproject.com/KB/WPF/PimpedDocumentPaginator.aspx ] を見たことがありますが、機能しません。
参照されている CodeProject にはいくつかの問題がありますが、ほとんど機能します。次の変更で成功しました。
GetPage で、コンソールを参照する 4 行を削除するだけです。
Definition クラスに追加します。
public static Size Subtract( Size s1, Size s2 )
{
return new Size( s1.Width - s2.Width, s1.Height - s2.Height );
}
ContentSize get を変更します
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" );
}
私の場合、フッターは必要ありませんでしたが、そのヘッダー デリゲート (またはそのようなもの) は必須です。Margins と PageSize はデフォルトになりますが、別の値が必要でした。
KeepTogether = true
最後に、TableCells の Paragraph 定義に追加する必要があることがわかりました。
基本的に、テキストの段落をワードラップするのと同じ方法で、ドキュメントを自分で改ページする必要があります。次の行が収まるかどうかを確認し、収まらない場合は改ページし、各ページをテーブル ヘッダーから開始し、ページがいっぱいになるまでテーブルの行を追加し続けます。
残念ながら、これを行うページネーターはいません。
これを試してください: WPF レポート
ヘッダー/フッターをサポートし、いくつかの優れた機能を備えています。幸運を