我使用的方法之一:
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阅读器并在那里显示错误消息。它解释说。
“打开文档时出错。无法找到该文件。”
有人可以帮我解决这些问题吗?
答案 0 :(得分:0)
在第二个片段中,这似乎是错误的:
string fname = Path.GetFileName(file);
printJob.StartInfo.WorkingDirectory = Path.GetDirectoryName(fname);
printJob.Start();
您只需设置WorkingDirectory
即可。 printJob
如何获取实际文件名?
在第一个片段中,您可能没有设置所有内容。你检查过the MSDN documentation了吗?在询问SO之前,尝试查找,然后阅读并尝试理解文档通常是个好主意...