如何将WPF页面(System.Windows.Controls.Page
类型)打印为PDF文档?
到目前为止,我可以使用以下代码打印部分页面:
//Create A New Event Handler (ButtonBase.Click Type)
private void Print_Click(object sender, RoutedEventArgs e)
{
//Create A New Print Dialog
PrintDialog printDialog = new PrintDialog();
//Print The Page
printDialog.PrintVisual(GlobalVariables.conceptForm, "New PDF Document");
}
注意,GlobalVariables.conceptForm
是在全局变量类中实例化的WPF页面,我的WPF页面有滚动查看器(System.Windows.Controls.ScrollViewer
类型),我现在得到的打印输出是单页当我点击"打印"时只包含屏幕上的页面部分;按钮。
提前谢谢!
编辑:
感谢您回复并将我重定向到this solution,IDisposable。不幸的是,我已经尝试过以下代码:
private void print_Click(object sender, RoutedEventArgs e)
{
//Set up the WPF Control to be printed
Page controlToPrint = GlobalVariables.conceptForm;
controlToPrint.DataContext = GlobalVariables.conceptForm;
FixedDocument fixedDoc = new FixedDocument();
PageContent pageContent = new PageContent();
FixedPage fixedPage = new FixedPage();
//Create first page of document
fixedPage.Children.Add(controlToPrint);
((System.Windows.Markup.IAddChild)pageContent).AddChild(fixedPage);
fixedDoc.Pages.Add(pageContent);
//Create any other required pages here
//View the document
documentViewer.Document = fixedDoc;
}
我也尝试过类似的上述解决方案,但每次点击" Print"我的Microsoft Visual Studio社区2015崩溃并破坏程序。然后它会向我显示代码的这一行:fixedPage.Children.Add(controlToPrint);
并告诉我An unhandled exception of type 'System.InvalidOperationException' occurred in PresentationFramework.dll
。当我点击"查看详细信息"时,它会显示Exception Details: System.InvalidOperationException {"Page can have only Window or Frame as parent."}
我不知道我是在做这件事还是做错了什么或只是没有看到明显错误的事情,无论哪种方式我都对此感到有点沮丧并且一直试图解决这个问题一周。
非常感谢任何帮助。
再次,提前谢谢你!