我想一键打印现有的.pdf文件。 当我一次只打印一个文件时它工作正常,但是当选择一次打印多个文件时它只打印一个文件。
这是我的代码:
List<string> ListFilePath; //Assume i have a collection of filepath stored here
foreach(string FilePath in ListFilePath)
{
Process proc = new Process();
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.StartInfo.Verb = "print";
proc.StartInfo.FileName = FilePath;
proc.StartInfo.Arguments = String.Format(@"/p /h {0}", FilePath);
proc.StartInfo.CreateNoWindow = true;
proc.Start();
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
if (proc.HasExited == false)
{
proc.WaitForExit(10000);
}
proc.EnableRaisingEvents = true;
proc.Close();
}
我的错误在哪里?
答案 0 :(得分:2)
您的代码正在启动进程并在服务器上创建打印作业。你确定这是正确的,它不应该在客户端打印吗?
您可能尝试的一件事是将所有pdf合并为一个(PDFSharp does that nicely),然后仅打印合并的pdf。
答案 1 :(得分:0)
您可以分配给事件处理程序,然后停止该过程吗?
不在此方法内。
答案 2 :(得分:0)
这对我很有用
foreach (string pdf in ListFilePath)
{
string filename = System.IO.Path.GetFileName(pdf);
string fullPath = (@"U:\Define\Full\Path" + filename);
Print(fullPath, 'PrinterNameHere');
}
public static bool Print(string file, string printer)
{
try
{
Process.Start(Registry.LocalMachine.OpenSubKey(
@"SOFTWARE\Microsoft\Windows\CurrentVersion" +
@"\App Paths\AcroRd32.exe").GetValue("").ToString(),
string.Format("/h /t \"{0}\" \"{1}\"", file, printer));
return true;
}
catch
{ return false; }
}