私はこの問題を2日近く解決しようとしています。ネット上には多かれ少なかれ良い解決策がたくさんありますが、私の仕事に完全に適合するものは1つではありません。
タスク:
- プログラムでPDFを印刷する
- 固定プリンターで行う
- ユーザーに複数のButton_Clickを実行させないでください
- 黙ってください-多ければ多いほど良いです
- クライアント側で行う
最初の解決策:
Forms.WebBrowserでそれを行う
Adobe Readerがインストールされている場合は、WebブラウザにPDFを表示するためのプラグインがあります。このソリューションを使用すると、優れたプレビューが得られ、webbrowserControlName.Print()を使用して、コントロールをトリガーしてコンテンツを印刷できます。
問題-まだPrintDialogがあります。
開始引数を使用してAcroRd32.exeを開始します
次のCMDコマンドを使用すると、AdobeReaderを使用してPDFを印刷できます。
InsertPathTo .. \ AcroRd32.exe / t "C:\ sample.pdf" "\ printerNetwork \ printerName"
問題-AcroRd32.exeへの絶対パスが必要です| Adobe Readerウィンドウが開いており、印刷タスクの準備ができるまで開く必要があります。
Windowsプリセットを使用する
Process process = new Process();
process.StartInfo.FileName = pathToPdf;
process.StartInfo.Verb = "printto";
process.StartInfo.Arguments = "\"" + printerName + "\"";
process.Start();
process.WaitForInputIdle();
process.Kill();
問題-AdobeReaderウィンドウがポップアップ表示されたままですが、印刷が完了すると通常は閉じます。
解決策-FoxitReaderを使用するようにクライアントを説得します(最後の2行のコードは使用しないでください)。
PDFページをDrawing.Imageに変換します
コードを使ってそれを行う方法がわかりませんが、これを機能させると、残りは簡単なものになります。Printing.PrintDocumentは、すべての要求を満たすことができます。
それらのPDFからいくつかのDrawing.Imageを取得するアイデア、またはそれを行う別のアプローチはありますか?
よろしく、マックス