Tob*_*ias 5 .net printing file
我们有一个基本上归档文件的应用程序,我们给用户打印这些文件的可能性.它们可以是.txt,.doc,.pdf,.jpg没什么特别的.是否有.NET方法将这些文件发送到打印机而不进一步处理它们,即打开它们?
我已经尝试使用StartInfo.Verb ="print"创建一个进程
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.FileName = fileName;
p.StartInfo.Verb = "print"
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
p.Start();
Run Code Online (Sandbox Code Playgroud)
它仍然打开我不想要的文件.有人可以帮忙吗?
任何帮助,将不胜感激.托比
这实际上非常非常容易.
使用System.Drawing.Printing.PrintDocument.
按照该链接中的示例,或者只使用此处的代码(我摘自我每天都在使用的打印自动化的内容).
例如,打印一个.jpg(BTW,这将不会打开任何编辑应用程序;它在后台打印到打印机)
public void SetupPrintHandler()
{
PrintDocument printDoc = new PrintDocument();
printDoc.PrintPage += new PrintPageEventHandler(OnPrintPage);
printDoc.Print();
}
private void OnPrintPage(object sender, PrintPageEventArgs args)
{
using (Image image = Image.FromFile(@"C:\file.jpg"))
{
Graphics g = args.Graphics;
g.DrawImage(image, 0, 0);
}
}
Run Code Online (Sandbox Code Playgroud)
我的理解是,大多数应用程序将在您打印时打开(甚至是短暂的).尝试右键单击MS Word文档并点击打印.你会看到Word打开,打印和关闭.
但是,您可能希望将其添加到代码中以保持进程隐藏并在完成时关闭:
p.Start();
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
if (p.HasExited == false)
{
p.WaitForExit(10000);
}
p.EnableRaisingEvents = true;
p.CloseMainWindow();
p.Close();
Run Code Online (Sandbox Code Playgroud)