VB.NETでどのプリンターでも用紙を規定のサイズで出力するには?

解決


k4r  2004-10-02 04:15:55  No: 116716

VB.NETでどのプリンターでもB5の用紙で出力するようにしたいのですが
うまくいきません。
(ダイアログボックスは出さずに、プログラムで自動的にB5を選択、
  という方法が分かりません)
以下の方法でうまくいくかと思いましたが、うまくいきませんでした。

Dim prnAny As New Printing.PrintDocument
prnAny.DefaultPageSettings.PaperSize = prnAny.PrinterSettings.PaperSizes(Printing.PaperKind.B5)

誰か知っていたら教えて頂けますでしょうか?


特攻隊長まるるう  2004-10-02 04:25:55  No: 116717

全く試してないですが、過去ログ検索『PrintDocument』で

http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200310/03100151.txt

B5 に変えるだけではないの?


k4r  2004-10-02 06:00:15  No: 116718

お早い返事ありがとうございますm(_ _)m
Printing.PaperKindの定数で単純に指定できないかと考えていたのですが、
コレクションを回すのが良いみたいですね。

リンク先のソースのIF文を以下のように変更して実行しました。

If PS.PaperName Like "*B5*" Then

ただ、一見うまくいってると思ったのですが(MsgBoxで以下の値を見ても
B5が選択されてるのですが)A4で出力されてしまいます(汗)

pDoc.PrinterSettings.DefaultPageSettings.PaperSize.PaperName()

謎です。。。.NETには全然詳しくないので私が何か勘違いをしてるのかも
しれません(汗)  コレクションから探す方法で少しソースを変更して
みました。

Dim PS As System.Drawing.Printing.PaperSize
Dim papCnt As Integer = 0
For Each PS In pDoc.PrinterSettings.PaperSizes
    If PS.PaperName Like "*B5*" Then
        Exit For
    End If
    papCnt += 1
Next
pDoc.DefaultPageSettings.PaperSize = pDoc.PrinterSettings.PaperSizes(papCnt)

一応これでうまくいきました(^-^)

特攻隊長まるるう様、どうもありがとうございました。この件で半日は
悩んでました(苦笑)


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加