HTML/CSSに変換されたXMLを読み込んでいるWinFormsアプリケーションにWebBrowserコントロールがあります。私はちょうどそこまたはそれを普通のブラウザで見たいと思えば美しく見えます。WebBrowserコントロールはC#から印刷されません
フォームが読み込まれると、ファイルに移動し、OnDocumentCompletedイベントが発生したときに、ヘッダー、フッター、および既定のプリンター名をレジストリに設定してから、Print()を呼び出します。ユーザーが指定しました。
私はデバッガを介して実行しており、WebBrowser.Print()をOnDocumentCompletedイベントで正しい回数呼び出しています。 nullにはならないものは何もありません。WebBrowserコントロールではVisibleがtrueであり、AllowNavigationもtrueです。はい、プリンタは電源が入っていて、ネットワーク経由でアクセス可能です。まったく同じコードはプロジェクトのどこかで動作しますが、ここでは動作しません。
他に、この地獄のコントロールが私の印刷コマンドを無視する原因になる可能性がありますか?
理想的には、Windowsスケジューラを使用して実行することを意味し、ユーザーは画面に表示されないようにすることが理想的です。私は、コントロールが見えるようにする必要があることを読んだので、この最初のキンクを解決するまで待つことができます。
EDIT:私のOnDocumentCompletedイベントハンドラの最後の2行は、DialogResultをOKに設定してフォームを閉じました。 Close()への呼び出しを削除すると印刷されるので、フォームが閉じられWebBrowserコントロールが破棄される前に印刷スプーラに到達しなかったと思います。
閉じる前に任意の時間制限を設定するだけでは、印刷が完了した時点を知る方法はありますか?
これは、ジョブがスプーラに到達するまでの時間によって異なります。これは、大きなジョブを処理する必要がなく、印刷システムの可用性が高いと想定しています。このようにしなければならない場合は、スレッドを30秒間スリープさせてからフォームを閉じることができます。ジョブが印刷されることを保証するために、印刷ジョブのステータスに基づいてより高いレベルの制御を行う方がよい。 – Yuan