2010-06-29 74 views
5

我想使用.net打印选定打印机中的任何文档,例如pdf,word,excel或文本文件。我已成功在默认打印机中执行此类打印。现在唯一的问题是在选定的打印机中打印。如何在SELECTED打印机中打印任何文档

这里是打印的代码。

public bool Print(string FilePath) 
    { 
     if (File.Exists(FilePath)) { 
      if (ShellExecute((System.IntPtr)1, "Print", FilePath, "", Directory.GetDirectoryRoot(FilePath), SW_SHOWNORMAL).ToInt32() <= 32) { 
       return false; 
      } else { 
       return true; 
      } 
     } else { 
      return false; 
     } 
    } 

回答

0

什么文件格式测试成功与默认打印机?

无法将“任何”文档发送到打印机,通常特定的文件格式需要由可以读取文件格式的应用程序解释,然后将其呈现给打印机或可以被解释的文件打印机。

在大多数情况下,如果您可以渲染到PostScript或PDF,则可以使用单个解释器进行打印。

+0

我与PDFword和Excel files.You测试是正确的,不能打印任何文件,但如果安装了该文件的软件,它可以在不指定文件的类型它is.It被处理的打印只有窗户。 – Thunder 2010-06-30 05:27:53

+0

打印文件的问题已经解决,如问题所示。只有指定打印机的问题仍然存在。 – Thunder 2010-06-30 05:29:11

+0

嗨,好的,不是如何指定特定的打印机,但它可能值得研究如何在打印前更改默认打印机? – 2010-06-30 07:21:07

8
Process printJob = new Process(); 
printJob.StartInfo.FileName = path; 
printJob.StartInfo.UseShellExecute = true; 
printJob.StartInfo.Verb = "printto"; 
printJob.StartInfo.CreateNoWindow = true; 
printJob.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
printJob.StartInfo.Arguments = "\"" + printerAddress + "\"" + " " + printerExtraParameters; 
printJob.StartInfo.WorkingDirectory = Path.GetDirectoryName(path); 
printJob.Start(); 
+0

格式化为您的代码。通过选择要格式化的文本并按下输入窗口上方的“101010 ..”按钮,您可以做同样的事情。使代码更容易(阅读:可能)来看待。 :) – 2010-11-22 23:39:45