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

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top