Вопрос

В настоящее время я пытаюсь распечатать документ из 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-документа

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top