WINAPI 打印 - 具有相同尺寸的两种纸张类型

WINAPI Print - Two paper types with same dimensions

我在使用 WINAPI 打印时遇到问题。有这台打印机,DS40,这台打印机提供了两种不同的"paper sizes"(6x4",6x4"x2),它们的尺寸完全相同,但每个都有一些不同(这背后的原因很难解释,我认为这里没有必要这样做)。

对于打印,我使用的是 Qt 框架,它使用 GDI 打印 API。但是,无论我选择哪种纸张变体,它总是使用相同的变体。

查看Qt的源代码,我发现它是通过这个结构传递纸张尺寸的:https://msdn.microsoft.com/en-us/library/windows/desktop/dd183565%28v=vs.85%29.aspx,即成员dmPaperWidth和dmPaperLength。

现在,我如何区分这两种纸张尺寸变体?

DEVMODE structure 的文档所述:

dmPaperWidth/dmPaperLength 覆盖 dmPaperSize

要select特定dmPaperSize(例如 A4、Letter、Legal 等),请使用以下设置:

  • dmFields |= DM_PAPERSIZE
  • dmPaperSize = papersize_index

  • 不要在 dmFields 标志中使用 DM_PAPERWIDTHDM_PAPERLENGTH

您可以使用 DeviceCapabilitiesDC_PAPERNAMES 来获取当前打印机支持的纸张尺寸列表。