2009-06-05 61 views

回答

0

您基本上需要自己對文檔進行分頁,這與您將文字換行爲文本的方式相同。檢查下一行是否合適,如果不合適則分頁,使用表頭將每頁關閉,並繼續附加錶行直到頁面已滿。

不幸的是沒有一個paginators這樣做。

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)); 

然後,在你自己的代碼,像這樣把它稱爲一個按鈕點擊: - 我沒有「T喜歡他的課名:)

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"); 
} 

在我而言,我並不需要一個頁腳,但頭委託(或索姆是這樣的)是必須的。頁邊距和頁面大小將默認,但我想要不同的值。

最後,我發現我需要將KeepTogether = true添加到我的TableCells的段落定義中。

+0

我也失去了我的TextAlignment設置之間的查看和打印:在這個鏈接的建議固定我:[FlowDocument文本對齊](http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/a8a7b9af-2487-4041-af4d-68752d249b2b /) - 並減少了我的代碼。 – 2011-04-18 22:12:17

0

試試這個:WPF Reports
它支持頁眉/頁腳,並有一些不錯的功能。 祝你好運