1

.NET アプリケーションでpdfprint.exe ( http://www.verypdf.com/app/pdf-print-cmd/index.html ) を使用しています。複数のPDFファイルと各ファイルの複数のコピーをループで印刷しています。コードは次のようになります。このメソッドはループで呼び出されます。

    private bool PrintFile(string file, string printer, short copies)
    {
        try
        {
            this.log.Debug("Send command to verypdf...");

            var info = new ProcessStartInfo
            {
                FileName = this.veryPdfExe,
                Arguments = string.Format(@"-printer ""{0}"" -printermargins -mergeprintjobs -copies {1} ""{2}""", printer, copies, file),
                CreateNoWindow = true
            };

            this.log.Debug(info.Arguments);

            var process = new Process { StartInfo = info };
            process.Start();

            return true;
        }
        catch (Exception ex)
        {
            this.log.Error(ex);
            throw new LabelMakerException("Failed to print file: " + file);
        }
    }

私の問題は、ファイルがプリンターに送信された順序で印刷されないことです。これを制御する方法はありますか。コマンドライン引数が見つかりません。プリンターを同期するように構成する方法はありますか? すべてのアイデアとヒントを歓迎します。

4

1 に答える 1

2

起動後にProcess.WaitForExitを呼び出してみてください。

うまくいかない場合 (プリンターが印刷を開始する前に、verypdf が自動的にシャットダウンした場合)、プロセスの開始後にThread.Sleepコマンドを使用します。さまざまな状況 (つまり、コピー数、プリンターの最初の使用、ファイルのサイズ) に応じてタイムアウトを動的に設定してみてください。

于 2013-10-03T12:39:01.903 に答える