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

时间:2012-06-19 08:21:28

标签: c# winforms

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

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

打印这种方式称为“shell命令打印”或类似的东西?谷歌搜索信息需要正确的条款。

您建议执行此任务的其他更好的方法是什么?

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

3 个答案:

答案 0 :(得分:1)

我相信这就是你要找的东西:

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

如果这不起作用,那么还有很多其他方法可以使用宏来完成它,或者编写一个非常简单的可视化基本程序来为你完成它。

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

此致〜

答案 1 :(得分:1)

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

请参阅Process.Start here,您需要传递ProcessStartInfoUseShellExecuteVerb设置正确。

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

答案 2 :(得分:-1)

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

因此,一个选项可能是读取文件>打开FileStream并将流发送到打印。这是一个打印流的示例 -

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/ --- See the last post