从WPF打印dwf / dwfx文件

时间:2009-07-20 14:47:28

标签: c# wpf printing xps autodesk

我目前正在尝试从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)文档的方法有任何想法

提前致谢, SumGuy

1 个答案:

答案 0 :(得分:1)

如果有人想要打印.dwf文件,那么这不是一个真正的答案,而是一个解决方案。不要,使用新表单.dwfx。这是Autodesk正在切换的新文件类型,它实际上是XPS的一种形式,使事情变得非常简单。您可以将其加载到Web浏览器中而无需使用活动x OR(这是更好的方法)在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文档