Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
VBアプリからプリンターのトレイを指定したい
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30158#CommentId82505
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
HORI
 (社会人)
投稿日時
2016/9/16 23:19:50
VB2010EX でプログラムを書いてますが、印刷の際、用紙の大きさは同じでも、用途によって色の違う紙に印刷したく思うのですがうまくできません。
方法としては、プリンタートレイにセットする用紙を色ごとに分け、どのトレイを使用するかで色の分別ができればいいのですが・・・・・・
いろいろ当たった結果、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