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_PAPERWIDTH
和 DM_PAPERLENGTH
您可以使用 DeviceCapabilities 和 DC_PAPERNAMES
来获取当前打印机支持的纸张尺寸列表。
我在使用 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_PAPERWIDTH
和DM_PAPERLENGTH
您可以使用 DeviceCapabilities 和 DC_PAPERNAMES
来获取当前打印机支持的纸张尺寸列表。