Imprimindo um arquivo DWF / DWFx de WPF
Pergunta
Atualmente estou tentando imprimir um documento de WPF. Eu estou usando o navegador web, pois contém um controle Active X que tem o plugin autodesk que eu preciso para visualizar o documento.
Estou ciente de que WPF não suporta diretamente do navegador web, mas eu acabei integrado biblioteca do Windows Forms para isso. Eu consegui obter o código de execução e até mesmo impressão, no entanto, o documento que imprime está em branco.
Eu não tenho certeza se ele poderia ser um conflito entre o Windows Forms biblioteca e WPF; Eu estou navegando para o documento e só imprimir uma vez que é carregado sem erros lançados.
Aqui está o código que estou usando:
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();
}
Uma possível engate pode ser que o controle Active X não está sendo permitido ser carga, Alguém sabe como forçar o controle a ser inicializado.
Alguém tem alguma idéia sobre como resolver este ou outro método de impressão de um documento autodesk (.dwf)
Agradecemos antecipadamente, SumGuy
Solução
Não é realmente uma resposta das sortes mas uma solução se alguém fora quer imprimir um arquivo .dwf. Não, usar o novo formulário .dwfx. Este é o novo tipo de arquivo Autodesk estão mudando muito e sua realmente uma forma de XPS que torna as coisas muito fácil. Você pode carregá-lo em um navegador web sem a necessidade ativo X ou (esta é a melhor maneira) usar as bibliotecas XPS no visual studio, porque ele pode ser carregado muito simplesmente em um visualizador XPS.
O código que eventualmente usado para imprimir o arquivo temido está abaixo:
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);
Como é fácil de que ??? Há um monte de outras maneiras de fazê-lo usando XPS. Basicamente você pode simplesmente usar o DWFx como um documento XPS