1

現在、WPFからドキュメントを印刷しようとしています。ドキュメントを表示するために必要なオートデスクプラグインを備えたアクティブ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)ドキュメントを印刷するこの方法または別の方法を解決する方法について誰かがアイデアを持っていますか?

よろしくお願いします、SumGuy

4

1 に答える 1

1

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

于 2009-10-02T09:25:03.020 に答える