我想读取所有文件的文件夹并以编程方式打印它们,就像我右键单击 > 打印一样。
我知道以这种方式打印是特定于默认应用程序的。所以我认为这是一个两步过程:如何检查带有默认应用程序的文件是否支持打印;以及如何实际发出打印文件的命令?
以这种方式打印是否称为“shell 命令打印”或类似的东西?将需要正确的术语来搜索信息。
对于这项任务,您还有什么其他更好的建议吗?
编辑:文件类型可以是简单的 .txt 文件以外的任何文件,例如 PDF、DWG、JPEG 等。
我相信这就是您正在寻找的:
http://support.microsoft.com/kb/314499
如果这不起作用,那么还有很多其他方法可以使用宏或编写一个非常简单的 Visual Basic 程序来为您完成。
如果这不起作用,请回复评论,我将编辑我的帖子。
问候~
您可以使用Directory.GetFiles枚举文件夹中的文件,然后使用 ShellExecute 模式Process.Start
依次对每个文件执行“打印”动词(命令)。
请参阅Process.Start here,您将需要传入ProcessStartInfo并进行适当的UseShellExecute
设置Verb
。
通过询问操作系统如何打印它们,您不必担心如何打印不同类型的数据等的复杂性。
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/ ---请参阅最后一篇文章。