我尝试将打印功能添加到WPF项目中。用户可以在运行时向文本框或其他控件添加和删除文本,因此xaml控件的大小不固定。如果他点击打印按钮我想弄清楚控件的大小并打印一个(如果需要的多页)文档。到目前为止这是我的代码
public void Print(FrameworkElement element)
{
System.Windows.Controls.PrintDialog printDlg = new System.Windows.Controls.PrintDialog();
if (printDlg.ShowDialog() == true) {
double height = element.ActualHeight;
double width = element.ActualWidth;
Size pageSize = new Size(printDlg.PrintableAreaWidth, printDlg.PrintableAreaHeight);
//element.Measure(pageSize);
//element.Arrange(new Rect(5, 5, pageSize.Width, pageSize.Height));
printDlg.PrintVisual(element, "this is a test");
}
}
我的想法是检查控件的实际高度和宽度。如果其中一个大于pagesize,我知道我必须打印多个页面。我不太确定该怎么做,但我想我将不得不使用XPSDocument类。有人可以帮助我,我不知道如何将我的文档拆分成多个页面并打印出来,有人也可以告诉我如何从我的xaml代码创建FlowDocument。
提前感谢!
答案 0 :(得分:0)
默认情况下,您无法在多个页面上打印控件,但您可以手动执行此操作。 这是伟大的文章,它解决了你的问题: http://www.codeproject.com/Articles/164033/WPF-Visual-Print-Component