Печать файла dwf /dwfx из WPF
Вопрос
В настоящее время я пытаюсь распечатать документ из WPF.Я использую веб-браузер, потому что он содержит активный элемент управления x, в котором есть плагин autodesk, который мне нужен для просмотра документа.
Я знаю, что WPF напрямую не поддерживает веб-браузер, но я только что интегрировал библиотеку Windows Forms для этого.Мне удалось запустить код и даже распечатать, однако печатаемый документ является пустым.
Я не уверен, может ли это быть конфликтом между библиотекой Windows Forms и 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)
Заранее спасибо, Сумги
Решение
На самом деле это не своего рода ответ, а решение, если кто-то действительно хочет распечатать файл .dwf.Не делайте этого, используйте новую форму .dwfx.Это новый тип файлов, на который также переключается Autodesk, и на самом деле это форма XPS, которая упрощает работу.Вы можете загрузить его в веб-браузер без использования active x ИЛИ (это лучший способ) использовать библиотеки XPS в visual Studio, поскольку его можно очень просто загрузить в XPS viewer.
Код, который я в конечном итоге использовал для печати страшного файла, приведен ниже:
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-документа