2

繰り返し可能なテーブル列ヘッダーを使用して、WPF で Flowdocument テーブルを印刷するにはどうすればよいですか?

これ [ http://www.codeproject.com/KB/WPF/PimpedDocumentPaginator.aspx ] を見たことがありますが、機能しません。

4

3 に答える 3

1

参照されている 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 定義に追加する必要があることがわかりました。

于 2011-04-18T21:49:35.953 に答える
0

基本的に、テキストの段落をワードラップするのと同じ方法で、ドキュメントを自分で改ページする必要があります。次の行が収まるかどうかを確認し、収まらない場合は改ページし、各ページをテーブル ヘッダーから開始し、ページがいっぱいになるまでテーブルの行を追加し続けます。

残念ながら、これを行うページネーターはいません。

于 2009-12-07T17:07:18.783 に答える
0

これを試してください: WPF レポート
ヘッダー/フッターをサポートし、いくつかの優れた機能を備えています。幸運を

于 2012-05-01T23:07:45.153 に答える