在我们的 VB6 应用程序中,当用户的默认打印机设置为Microsoft Office Document Image Writer时,以下代码行会导致应用程序抛出错误号 380(无效的属性值)。
Printer.Orientation = vbPRORLandscape
如果您不熟悉这条线的作用,它负责确保用户的默认打印机设置为在横向模式下打印提供给它的任何内容,并且还提供横向尺寸(高度/宽度)(在打印机object) 所以下面的代码可以正确地基于页面上的项目放置坐标。
我已经环顾四周,它似乎是 MODIW 驱动程序中普遍接受(并抱怨)的“缺失功能”,例如看到这个线程。有一些变通方法,例如向用户显示 Windows 打印机设置窗口(可能指示他们在选项中选择横向)或检查打印机是否为 MODIW,然后阻止用户生成需要横向的文档模式。还有另一个建议涉及称为 DEVMODE 的东西,但我不明白这个建议,也没有找到一个像样的例子,也没有找到任何人确认它有效。
我有点不知所措。物理打印机对这条线没有问题;即使是 Microsoft XPS Document Writer 和我尝试过的各种 PDF 打印机,这条线也没有问题。我把它扔在这里,希望一些很棒的 VB6 开发人员找到了一些以前未记录的方法来使用 Microsoft Office Document Image Writer 驱动程序更改方向。