1

我目前正在尝试从 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

4

1 回答 1

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 文档

于 2009-10-02T09:25:03.020 回答