質問

現在、WPF からドキュメントを印刷しようとしています。Web ブラウザには、ドキュメントを表示するために必要な Autodesk プラグインを備えた Active X コントロールが含まれているため、Web ブラウザを使用しています。

WPF が Web ブラウザーを直接サポートしていないことは承知していますが、このために Windows フォーム ライブラリを統合しました。コードを実行して印刷することはできましたが、印刷されるドキュメントは空白です。

Windows フォーム ライブラリと 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();
    }

考えられる問題の 1 つは、アクティブ X コントロールのロードが許可されていないことです。コントロールを強制的に初期化する方法を知っている人はいますか。

これを解決する方法、またはオートデスク (.dwf) ドキュメントを印刷する別の方法について何かアイデアを持っている人はいますか?

よろしくお願いします、 サムガイ

役に立ちましたか?

解決

実際には一種の答えではありませんが、誰かが .dwf ファイルを印刷したい場合の解決策です。使用しないでください。新しい形式 .dwfx を使用してください。これは Autodesk も切り替えている新しいファイル タイプで、実際には作業を非常に簡単にする XPS の形式です。これは、XPS ビューアに非常に簡単にロードできるため、active x を必要とせずに Web ブラウザにロードすることも、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 ドキュメントとして使用できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top