【发布时间】:2019-08-27 20:18:59
【问题描述】:
如果可能的话,我一直在寻找一种方法来检索特定打印机支持的纸张及其尺寸(宽度和高度)(以毫米为单位)。
我已经看到并“研究”了许多关于使用 Printer.Getprinter 和 Printer.SetPrinter 的帖子和网站,但我对完成这项工作的整个过程真的很了解,我了解到我必须使用 DeviceCapabilities 才能检索特定于一台打印机的数据,但我真的不知道如何使用这些结构。我需要类似于this 的东西,但对于特定的打印机并使用DeviceCapabilities。
我使用 Delphi VCL。
在链接的问题中,他们使用EnumForms,据我所知,它适用于所有打印机,他们还提到DeviceCapabilities 用于特定打印机,这就是我需要的,以获得支持的纸张名称和尺寸但仅适用于选定的打印机,而不是全部。
假设我选择了我的打印机:Printer.PrinterIndex:= Printer.Printers.IndexOf(MyPrinter); 我想获得该打印机支持的纸张和纸张尺寸。
非常感谢您提供的任何帮助!
【问题讨论】:
-
您想为任意打印机编写代码,还是只为这款 Brother 型号编写代码?
-
@DavidHeffernan 打印机可能会因用户而异,但兄弟型号是我目前正在运行的测试。
-
是的@whosrdaddy,这实际上是我在我的问题中链接的帖子。问题是 Sertac 说如果你想要来自特定打印机的数据,你应该使用
DeviceCapabilities而不是EnumForms -
您应该删除对特定打印机的引用,以避免有人认为您需要专门针对该型号的代码
-
嗨,Hiram,我明白了。请试用 here 中的 Peter Lowers 的代码,更具体的是
GetPaperInfo过程。
标签: delphi winapi printing vcl