从 WPF 打印 dwf/dwfx 文件

Posted

技术标签:

【中文标题】从 WPF 打印 dwf/dwfx 文件【英文标题】:Printing a dwf/dwfx file from WPF 【发布时间】:2010-11-12 08:18:45 【问题描述】:

我目前正在尝试从 WPF 打印文档。我正在使用 Web 浏览器,因为它包含一个活动的 x 控件,其中包含我需要查看文档的 autodesk 插件。

我知道 WPF 不直接支持 Web 浏览器,但我刚刚为此集成了 Windows 窗体库。我已经设法让代码运行甚至打印,但是打印的文档是空白的。

我不确定这是否可能是 Windows 窗体库和 WPF 之间的冲突;我正在导航到文档,并且仅在加载后才打印,没有抛出任何错误。

这是我正在使用的代码:

    private void btnPrint_Click(object sender, RoutedEventArgs e)
    
        System.Windows.Forms.WebBrowser w = new System.Windows.Forms.WebBrowser();

        Uri uri = new Uri("C:\\BOS-BD-4518-000.dwg.dwf");
        w.Navigate(uri);

        w.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(w_DocumentCompleted);
    

    void w_DocumentCompleted(object sender, System.Windows.Forms.WebBrowserDocumentCompletedEventArgs e)
    
        System.Windows.Forms.WebBrowser w = (System.Windows.Forms.WebBrowser)sender;

        w.Print();
    

一个可能的问题是不允许加载活动的 x 控件,有谁知道如何强制初始化控件。

有没有人知道如何解决这个或其他打印 Autodesk (.dwf) 文档的方法

提前致谢, 总和

【问题讨论】:

您是否尝试过使用 .NET 3.5 SP1 中预封装的 WPF WebBrowser 控件? blogs.msdn.com/llobo/archive/2008/06/12/wpf-webbrowser.aspx 就此而言,您是否尝试过直接从 Internet Explorer 打印? 据我所知,WPF WebBrowser 不包含打印选项。可能有办法做到这一点(这是有道理的),但我一直没能找到它。我已经直接从 Internet Explorer 打印了文档,它确实可以工作,但是我被提示关于活动的 x 控件并且必须在它加载之前允许它,这让我想知道这是否是问题 【参考方案1】:

如果有人想打印 .dwf 文件,这并不是一个真正的答案,而是一个解决方案。不要,使用新格式 .dwfx。这也是 Autodesk 正在切换的新文件类型,它实际上是 XPS 的一种形式,使事情变得非常简单。您可以将其加载到 Web 浏览器中,而无需激活 x 或者(这是更好的方法)使用 Visual Studio 中的 XPS 库,因为它可以非常简单地加载到 XPS 查看器中。

我最终用来打印可怕文件的代码如下:

private PrintQueue printQueue;

PrintDialog pDialog = new PrintDialog();
pDialog.PageRangeSelection = PageRangeSelection.AllPages;
pDialog.UserPageRangeEnabled = true;

if (pDialog.ShowDialog() == true)
    PrintSystemJobInfo xpsPrintJob = printQueue.AddJob(v.FileName, v.FilePath, false);

这有多容易???使用 XPS 有很多其他方法可以做到这一点。您基本上可以将 dwfx 文件用作 XPS 文档

【讨论】:

以上是关于从 WPF 打印 dwf/dwfx 文件的主要内容,如果未能解决你的问题,请参考以下文章

WPF 打印操作之PrintDocument,WPF获取打印机列表,WPF指定打印机

WPF 打印操作之PrintDialog

WPF安装打印机驱动后PrintDialog 执行打印事件

在 WPF 中打印集合

C# WPF发票打印

一个WPF开发的打印对话框-PrintDialogX