另一种解决方案是在Windows中安装多个打印机副本,同时将它们全部指向同一个打印机端口。每个打印机副本都设置了不同的默认每页纸张数。然后软件可以选择适当的打印机,最终结果就像程序选择了必要的每页纸张选项一样。但是,我在这种方案中遇到了各种问题,因此我正在寻找一种更少负担的替代方案。 本文提供了另一个可能的解决方案:操作紧随官方DEVMODE结构之后的私有驱动程序数据中的适当字节。问题在于,并没有保证任何特定的打印机驱动程序实际上使用相同的字节,而我需要支持基本上可以在办公环境中使用的任何打印机。似乎我的软件需要一个配置,以便我可以为不使用默认值的驱动程序指定不同的字节偏移量。这可能是一个罕见的情况,也可能是一个频繁的头痛,具体取决于多少打印机驱动程序已经决定为此设置使用不同的字节。
所以,这里是我的问题:
- 有人在操作私有驱动程序数据的最后一种技术方面有真实世界的经验吗?当处理来自不同制造商的各种打印机时,它的表现如何?
- 还有其他我忽略的技术吗?
- 如果没有其他方法,那么有没有简单的方法可以将绘制文本、线条、图形等代码传递给打印机设备上下文,并强制缩放、移动和可能旋转(对于每张纸双面打印)输出到设备上下文中的必要位置,而不编写所有代码(并且不失去1像素宽的线条)?
注:值得一提的是,我正在使用C++和MFC编写程序。但是,所有这些都同样适用于处理设备上下文和Windows API的任何程序。