2

我想一键打印现有的 .pdf 文件。It works fine when i only print one file at a time, but when choose to print multiple files at once it only prints one file.

这是我的代码:

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();
}

我的错在哪里?

4

3 回答 3

2

您的代码正在启动一个进程并在服务器上创建一个打印作业。您确定这是正确的,并且不应该在客户端上打印吗?

您可能会尝试的一件事是将所有 pdf 合并为一个(PDFSharp 做得很好),然后只打印合并的 pdf。

于 2013-05-30T10:53:42.220 回答
0

您可以分配给事件处理程序,然后停止该过程吗?

不在这个方法里面。

于 2013-05-30T08:13:31.173 回答
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; }
        }
于 2013-10-01T22:44:59.560 回答