将System.Windows.Controls.Page打印为PDF文档

时间:2016-07-16 04:50:46

标签: c# wpf pdf

如何将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 solutionIDisposable。不幸的是,我已经尝试过以下代码:

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."}

我不知道我是在做这件事还是做错了什么或只是没有看到明显错误的事情,无论哪种方式我都对此感到有点沮丧并且一直试图解决这个问题一周。

非常感谢任何帮助。

再次,提前谢谢你!

0 个答案:

没有答案