无法打印文档

时间:2013-03-13 06:52:08

标签: c# printing

我使用的方法之一:

                PrintDocument doc = new PrintDocument();
                doc.PrinterSettings.PrinterName = "printername";

                string[] files = Directory.GetFiles("D:\\Invoice");
                foreach (string file in files)
                {
                    string fname = Path.GetFileName(file);
                    doc.DocumentName = fname;
                    doc.Print();
                    Console.WriteLine(file);
                }

这给出了doc.Print()行的一个例外。

  

“访问打印机'printername'的设置无效。”

我使用的另一种方法:

                Process printJob = new Process();
                printJob.StartInfo.FileName = @"C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRD32.exe";
                printJob.StartInfo.UseShellExecute = false;
                printJob.StartInfo.Verb = "Print";
                printJob.StartInfo.CreateNoWindow = true;
                printJob.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                printJob.StartInfo.Arguments = "\"" + printerAddress + "\"";
                string[] files = Directory.GetFiles("D:\\Invoice");
                foreach (string file in files)
                {
                    string fname = Path.GetFileName(file);
                    printJob.StartInfo.WorkingDirectory = Path.GetDirectoryName(fname);
                     printJob.Start();

                    //Console.WriteLine(fname);
                }

这会在printJob.Start()之后出错。因为它是pdf文件,它打开Adobe阅读器并在那里显示错误消息。它解释说。

  

“打开文档时出错。无法找到该文件。”

有人可以帮我解决这些问题吗?

1 个答案:

答案 0 :(得分:0)

在第二个片段中,这似乎是错误的:

string fname = Path.GetFileName(file);
printJob.StartInfo.WorkingDirectory = Path.GetDirectoryName(fname);
printJob.Start();

您只需设置WorkingDirectory即可。 printJob如何获取实际文件名?


在第一个片段中,您可能没有设置所有内容。你检查过the MSDN documentation了吗?在询问SO之前,尝试查找,然后阅读并尝试理解文档通常是个好主意...