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