Печать файла dwf / dwfx из WPF - PullRequest
1 голос
/ 20 июля 2009

Я сейчас пытаюсь распечатать документ из 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)

Спасибо заранее, SumGuy

1 Ответ

1 голос
/ 02 октября 2009

Не совсем своего рода ответ, но решение, если кто-то хочет напечатать файл .dwf. Не используйте новую форму .dwfx. Это новый тип файлов, которые Autodesk также переключает, и это фактически форма XPS, которая делает вещи довольно простыми. Вы можете загрузить его в веб-браузер, не требуя активного x ИЛИ (это лучший способ), использовать библиотеки XPS в Visual Studio, поскольку его можно очень просто загрузить в средство просмотра 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

...