注意:文章將使用Microsoft XPS Document Writer虛擬印表機列印XPS文檔,該印表機在Windows Vista,7系統中預設安裝。
最簡單的方法就是用支援多列試圖的控制項,比如FlowDocumentReader和FlowDocumentPageViewer。
調節控制項的寬度WPF會自動分列(如果寬度足夠大的話),當然手動調節FlowDocument.ColumnWidth屬性也可以。總之在控制項中文檔是什麼樣的,列印結果會一樣:
比如控制項中文檔分三列:
列印後的XPS也是三列:
另一種方法就是通過代碼調節FlowDocument的大小。FlowDocument.PageWidth和PageHeight代表文檔大小,FlowDocument.ColumnWidth代表列的大小:
//flowDocument變數代表XAML中的<FlowDocument Name="flowDocument">
//調節FlowDocument的大小
flowDocument.PageHeight = 100;
flowDocument.PageWidth = 1200;
flowDocument.PagePadding = new Thickness(10);
flowDocument.ColumnWidth = 350;
//列印
var printDlg = new PrintDialog();
printDlg.PrintDocument(((IDocumentPaginatorSource)flowDocument).DocumentPaginator, "文檔");
輸出的XPS同樣有三列。
FlowDocument還有ColumnRuleWidth和ColumnRuleBrush屬性可以在列中間加一個帶顏色的條框。
//設定列的條框
flowDocument.ColumnRuleBrush = Brushes.Navy;
flowDocument.ColumnRuleWidth = 4;
輸出的XPS文檔: