在我们的VB6应用程序中,当用户的默认打印机设置为Microsoft Office Document Image Writer下面的代码行导致应用程序抛出错误号380(无效的属性值)。Microsoft Office Document Image Writer无法在VB6中以编程方式设置为Landscape?
Printer.Orientation = vbPRORLandscape
如果您不熟悉这行是干什么的,它是负责确保用户的默认打印机设置为打印无论是提供给它在横向模式,并且还提供了横向尺寸(高/宽度)(在打印机对象上),所以下面的代码可以正确地基于页面上的项目放置坐标。
我已经四处看到了,它似乎是一个普遍接受(并抱怨)的MODIW驱动程序“缺少的功能”,例如见this thread。有一些解决方法,例如向用户显示Windows打印机设置窗口(在推断指示他们选择选项中的横向之后)或检查打印机是否为MODIW,然后阻止用户生成需要处于横向位置的文档模式。还有一个建议涉及DEVMODE,但我不明白这个建议,也没有找到一个体面的例子,我也没有发现任何人确认它的工作。
我有点在我的智慧结束。物理打印机对这条生产线没有任何问题;即使是Microsoft XPS Document Writer和我尝试过的各种PDF打印机也没有问题。我在这里抛出了这个问题,希望一些很棒的VB6开发者发现了一些以前没有记录的方式,使用Microsoft Office Document Image Writer驱动程序进行方向更改。
非常感谢Badfish,但请介绍一下这个建议吗?我没有找到在VB6中使用的PrintSchema对象,并且Google似乎对此建议也没有任何帮助。 – ckittel 2009-09-03 16:16:45
提供的链接确实有一些建议。如果你使用.NET而OP不是。 – Corin 2009-09-03 16:40:02
PrintSchema是WPF,所以它肯定不是VB6。该页面也没有讨论ckittel的问题。 – MarkJ 2009-09-03 16:44:09