VBアプリからプリンターのトレイを指定したい
投稿者 PS/55  (社会人)
投稿日時
2016/9/18 23:48:58
コンボボックスの選択値からですけどこれでいけた気がするんですが…
PrintDocument.DefaultPageSettings.PaperSource = CType(ComboBox_Tray.SelectedItem, Printing.PaperSource)
For Each PpSc In PrintDocument.PrinterSettings.PaperSources
ComboBox_Tray.Items.Add(PpSc)
Next
PrintDocument.DefaultPageSettings.PaperSource = CType(ComboBox_Tray.SelectedItem, Printing.PaperSource)
For Each PpSc In PrintDocument.PrinterSettings.PaperSources
ComboBox_Tray.Items.Add(PpSc)
Next
投稿者 HORI  (社会人)
投稿日時
2016/9/19 00:39:18
PS/55 さま。ありがとうございます。
Print1 の Exit For の前に
PrintDocument1.DefaultPageSettings.PaperSource = pt
と入れたらうまくいきました。
PrinterSettings のデータを PageSettings に入れてやらないとだめと云う事ですね。
僕の読解力ではMSのHPから読み取ることができませんですね。
簡単に書いてくれればいいのにねぇ。
ヒントをいただき、ありがとうございました。
Print1 の Exit For の前に
PrintDocument1.DefaultPageSettings.PaperSource = pt
と入れたらうまくいきました。
PrinterSettings のデータを PageSettings に入れてやらないとだめと云う事ですね。
僕の読解力ではMSのHPから読み取ることができませんですね。
簡単に書いてくれればいいのにねぇ。
ヒントをいただき、ありがとうございました。
方法としては、プリンタートレイにセットする用紙を色ごとに分け、どのトレイを使用するかで色の分別ができればいいのですが・・・・・・
いろいろ当たった結果、System.Drawing.Printing.PaperSource で出来そうなんですがうまくいかないのです。PrintDialog を使えばトレイの指定はできますが、その度にいちいちセットするのは大変面倒なのでプログラムで直接指定したいのです。
以下のサンプルは、Form に Button PrintDocument PrintDialog を張り付けて書いたものです。
家のプリンターでは、RawKind と云うパラメーターが、1 でメイントレイ、3 でサブトレイになるはずみたいです。サンプルを実行すると、MsgBox の①と②は[3 : カセット2 : 3]で同じですが、③は[NG]になり、Print1 はメイントレイ、Print2 はサブトレイから給紙され印刷されます。PaperSource の、RawKind、 SourceName、 Kind 以外のパラメーターがあるのでしょうか?。
要は、Print1 でサブトレイから給紙されるようにするにはどうしたらいいのでしょうか?。と云う質問内容です。お分かりの方、おられましたらご教示ください。よろしくお願いいたします。
=============== さんぷる ============================
Public Class Form1
Dim A5PRname As String = "\\SERVER\LBP6600"
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' ======= プリンター設定 ===========
PrintDocument1.PrinterSettings.PrinterName = A5PRname
Dim pk As System.Drawing.Printing.PaperKind
pk = Printing.PaperKind.A5
Dim ps As System.Drawing.Printing.PaperSize
For Each ps In PrintDocument1.PrinterSettings.PaperSizes
If pk = ps.Kind Then
PrintDocument1.DefaultPageSettings.PaperSize = ps
End If
Next
PrintDocument1.DefaultPageSettings.Landscape = True
Dim pt As System.Drawing.Printing.PaperSource
Dim pt2 As System.Drawing.Printing.PaperSource
'=========== Print 1 =======================================
pt = PrintDocument1.DefaultPageSettings.PaperSource
For i = 0 To PrintDocument1.PrinterSettings.PaperSources.Count - 1
pt = PrintDocument1.PrinterSettings.PaperSources.Item(i)
If pt.RawKind = 3 Then
Exit For
End If
Next
MsgBox(CStr(pt.RawKind) & " : " & pt.SourceName & " : " & pt.Kind) ' ①
PrintDocument1.Print()
'============= Print 2 =======================================
If PrintDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
pt2 = PrintDocument1.DefaultPageSettings.PaperSource
MsgBox(CStr(pt2.RawKind) & " : " & pt2.SourceName & " : " & pt2.Kind) '②
PrintDocument1.Print()
Dim ss As String = "NG"
If pt.Equals(pt2) Then ss = "Good"
MsgBox(ss) '③
End If
End Sub
Private Sub PrintDocument1_PrintPage(sender As Object, e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim f10 As New Font("MS ゴシック", 10, FontStyle.Bold)
e.Graphics.DrawString("Test", f10, Brushes.Black, 0, 0)
End Sub
End Class