0

我使用的一种方法:

                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 文件,它会打开 Adob​​e 阅读器并在那里显示错误消息。它如何解释。

“打开文档时出错。找不到文件。”

谁能帮我解决这些问题?

4

1 回答 1

0

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

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

你刚刚设置WorkingDirectory。如何printJob获得实际的文件名?


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

于 2013-03-13T07:09:18.763 回答