在我們的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