一键打印多个PDF文件

时间:2013-05-30 07:41:11

标签: c# asp.net pdf printing

我想一键打印现有的.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();
}

我的错误在哪里?

3 个答案:

答案 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; }
        }