1

この VB6 アプリケーションでは、ユーザーの既定のプリンターがMicrosoft Office Document Image Writerに設定されている場合、次のコード行により、アプリケーションはエラー番号 380 (無効なプロパティ値) をスローします。

Printer.Orientation = vbPRORLandscape

この行の動作に慣れていない場合は、横向きモードで提供されているものをすべて印刷するようにユーザーのデフォルト プリンターが設定されていることを確認し、横向きの寸法 (高さ/幅) を (プリンターで) 提供します。オブジェクト) したがって、次のコードは、ページ上のアイテム配置座標を適切にベースにすることができます。

私はゴーグルしてみましたが、これは MODIW ドライバーから一般的に受け入れられている (そして不満を持っている) 「欠落している機能」のようです。たとえば、このスレッドを参照してください。ユーザーに Windows プリンター設定ウィンドウを表示する (おそらくオプションで横向きを選択するように指示した後) か、プリンターが MODIW かどうかを確認し、横向きにする必要があるドキュメントをユーザーが生成できないようにするなど、いくつかの回避策がありました。モード。DEVMODE と呼ばれるものに関する別の提案がありましたが、私はこの提案を理解できず、適切な例も見つけられず、それが機能することを確認した人も見つけませんでした。

私はちょっと頭がおかしいです。物理プリンターでは、この行に問題はありません。Microsoft XPS Document Writer と私が試したさまざまな PDF プリンターでさえ、この行に問題はありません。素晴らしい VB6 開発者が、Microsoft Office Document Image Writer ドライバーを使用して向きを変更する、以前は文書化されていなかった方法を発見したことを期待して、これをここに投げ出します。

4

3 に答える 3

1

Document Image Writer を使用したことはありませんが、このスレッドは、方向が実際にはレジストリ値によって制御されていることを示唆しています。ドライバーはレジストリ値で示されるモードでのみ動作し、レジストリ値と一致しない Print.Orientation プロパティの値は無効として扱われるように感じます。

于 2009-09-03T16:47:15.843 に答える
1

この奇妙なバグに対して試すことができる奇妙な回避策を次に示します。Microsoftは、Printer オブジェクトを使用して現在のドキュメントを一時的に横向きに設定するだけでなく、プリンターの既定の設定を変更できる無料の DLL を提供しています。

したがって、次のようなことを試すことができます ( KnowledgeBase 記事のサンプル フォーム コード)。印刷を行う前に、デフォルトの向きを横向きに変更します。その後、フォームがアンロードされると、元のデフォルトの向きが復元されます。私はこれを試したことがないので、うまくいくかどうかわかりません。

Dim obj As PageSet.PrinterControl

Private Sub Command1_Click()
  On Error GoTo errorhandler:
  Set obj = New PrinterControl
  obj.ChngOrientationLandscape
  <Now do the printing>

  Exit Sub

errorhandler:
   MsgBox Err.Description
   obj.ReSetOrientation

End Sub


Private Sub Form_Unload(Cancel As Integer)

  obj.ReSetOrientation 'This resets the printer to portrait.'

End Sub
于 2009-09-03T17:00:14.600 に答える
-1

これを試して:

PrintSchema.OrientationValue.Landscape

このリンクをクリックしてください(下にスクロールするか、ページで「風景」を検索する必要があります) そこで議論されている問題は、あなたが説明したものと同じではありませんが、答えが得られると思います私があなたを正しく理解していれば、あなたは探しています。

于 2009-09-03T16:11:04.417 に答える