如果我理解正确,打印机也是操作系统视图中的文件。我可以为打印机获取.NET C#FileStream类型吗?这样做似乎很疯狂。 提前谢谢。
答案 0 :(得分:3)
打印机在Win32中建模为一组位图。它由PrintDocument
包装,它基本上设置了一个回调,允许您单独绘制每个页面并将它们逐个发送到打印假脱机程序,然后打印假脱机程序将数据(通常为.ps格式)发送到打印机。
这就是现代打印机的运作方式,它们是绘制页面而不是文本。只有旧式矩阵打印机以流式方式逐个字符地绘制文本。他们过去常常使用“PRN:”特殊文件。然而,这在现代环境中失去了所有意义。
好消息是,使用PrintDocument
类非常容易,每个页面都有一个Graphics
对象,可用于在页面的任何位置打印文本,以及绘制图形。
如果您愿意,可以通过缓存所有数据然后只为每个页面调用DrawText
来模拟类似流的打印机。
答案 1 :(得分:1)
构建Windows Forms
应用程序,您可以将打印机视为Graphics Device.
System.Drawing.Printing
命名空间为Windows窗体应用程序提供与打印相关的服务。
如果要从Windows Presentation Foundation (WPF)
应用程序进行打印,请参阅System.Printing
命名空间。它提供的类使您能够自动管理打印服务器,打印队列和打印作业。
答案 2 :(得分:1)
假设您要将原始数据发送到打印机,请参阅How to send raw data to a printer by using Visual C# .NET
答案 3 :(得分:0)
从.Net 3.0开始,你可以使用 PrintSystemJobInfo.JobStream
在假脱机程序中创建printjob时,例如
var job = LocalPrinter.GetDefaultQueue().AddJob();
您可以写信至
job.JobStream
关闭该流将其排队以进行打印。 有趣的是,您可以使用该流将控制代码和文本写入通用/纯文本打印机(例如LPT1并行端口冲击打印机)