1

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

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

以这种方式打印是否称为“shell 命令打印”或类似的东西?将需要正确的术语来搜索信息。

对于这项任务,您还有什么其他更好的建议吗?

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

4

3 回答 3

1

我相信这就是您正在寻找的:

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

如果这不起作用,那么还有很多其他方法可以使用宏或编写一个非常简单的 Visual Basic 程序来为您完成。

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

问候~

于 2012-06-19T08:31:40.350 回答
1

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

请参阅Process.Start here,您将需要传入ProcessStartInfo并进行适当的UseShellExecute设置Verb

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

于 2012-06-19T08:46:08.847 回答
-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/ ---请参阅最后一篇文章。

于 2012-06-19T08:39:52.893 回答