ハードドライブから複数のPDFファイルを印刷する必要があります。私は、プリンタにファイルを送信する方法のこの美しいsolutionを見つけました。このソリューションの問題点は、複数のファイルを印刷する場合は、各ファイルが完了するまで待つ必要があることです。1つのプロセスコールでプリンタに複数のファイルを送信する方法
コマンドシェルでは、複数のファイル名で同じコマンドを使用することができます。print /D:printerName file1.pdf file2.pdf
と1つの呼び出しですべてが出力されます。残念ながら、単純にProcessStartInfo
にすべてのファイル名を入れて
は
string filenames = @"file1.pdf file2.pdf file3.pdf"
ProcessStartInfo info = new ProcessStartInfo();
info.Verb = "print";
info.FileName = filenames;
を仕事でもない、それは私が常にエラーを取得Process
info.Arguments = filename;
のArguments
としてファイル名を入れていていません:ファイルを見つけることができません!
1回のプロセスコールで多数のファイルを印刷するにはどうすればよいですか?ここで
は、私は今、それを使用する方法の例です:
public void printWithPrinter(string filename, string printerName)
{
var procInfo = new ProcessStartInfo();
// the file name is a string of multiple filenames separated by space
procInfo.FileName = filename;
procInfo.Verb = "printto";
procInfo.WindowStyle = ProcessWindowStyle.Hidden;
procInfo.CreateNoWindow = true;
// select the printer
procInfo.Arguments = "\"" + printerName + "\"";
// doesn't work
//procInfo.Arguments = "\"" + printerName + "\"" + " " + filename;
Process p = new Process();
p.StartInfo = procInfo;
p.Start();
p.WaitForInputIdle();
//Thread.Sleep(3000;)
if (!p.CloseMainWindow()) p.Kill();
}
メソッドは(パラメータとして与えられた)一つのファイルを印刷するようにしてください。このメソッドをN回呼び出します。 'Arguments'はうまくいくはずです。あまりにも多くのファイルを渡しているかもしれませんが、最大値を持っています(32699)(https://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.arguments(v = vs.110 ).aspx)Win7 +(以前のバージョンでは2080)の文字。 – Sinatr
私はこれをすでにやっていましたが、プロセスが完了するまで毎回待たなければならず、2〜3秒かかりました。私は200ファイルを印刷する必要があります。それは少なくとも10または20のステップにそれを壊すことはいいです。私は今まで2つのファイルでそれを試してみてください。余りにも過ぎてはいけません。 –
'ProcessStartInfo'は常にファイル名を要求します。私がファイル名を割り当てずに 'Arguments'プロパティー –