以编程方式右键单击并打印文件



我想读取所有文件的文件夹并以编程方式打印它们,就像我右键单击>打印一样。

我知道以这种方式打印是默认应用程序特定的。所以我认为这是一个两步过程:如何检查文件及其默认应用程序是否支持打印;我如何实际发出命令来打印文件?

这种打印方式是称为"shell命令打印"还是类似的东西?将需要正确的术语来谷歌搜索信息。

您对此任务还有其他更好的建议吗?

编辑:文件类型可以是简单的.txt文件以外的任何东西,例如.PDF,DWG,JPEG等。

您可以使用

Directory.GetFiles 枚举文件夹中的文件,然后使用 Process.Start 的 ShellExecute 模式依次对每个文件执行"print"谓词(命令)。

请参阅此处的 Process.Start,您需要传入一个 ProcessStartInfo 并正确设置UseShellExecuteVerb

通过要求操作系统计算出如何打印它们,您不必担心如何打印不同类型的数据等的复杂性。

我相信

这就是你要找的:

http://support.microsoft.com/kb/314499

如果这不起作用,那么还有很多其他方法可以使用宏或通过编写非常简单的视觉基本程序来为您执行此操作。

如果这不起作用,请回复评论,我将编辑我的帖子。

问候~

As you said: You want to read files in a folder and automatically print them

因此,一种选择可能是读取文件>打开文件流并将流发送到打印。下面是打印流的示例 -

http://msdn.microsoft.com/en-us/library/system.drawing.printing.printdocument.print.aspx

请注意示例中的Printing()函数。[我没有尝试过,但看起来可以实现]

// Print the file.
     public void Printing()
     {
         try 
         {
            streamToPrint = new StreamReader (filePath);
            try 
            {
               printFont = new Font("Arial", 10);
               PrintDocument pd = new PrintDocument(); 
               pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
               // Print the document.
               pd.Print();
            } 
            finally 
            {
               streamToPrint.Close() ;
            }
        } 
        catch(Exception ex) 
        { 
            MessageBox.Show(ex.Message);
        }
     }

这是另一个选项 - http://channel9.msdn.com/forums/TechOff/151242-How-to-send-a-PDF-to-a-printer/--- 请参阅最后一篇文章。

最新更新