DOBON.NET DOBON.NETプログラミング掲示板過去ログ

用紙の設定について

環境/言語:[XPPro,VB.NET2005EXP,2.0]
分類:[.NET]

いつもお世話になってます。分からないことがあるので教えて下さい。
PrintDocumentを使用して印刷をしているのですが、
用紙の設定方法(A4とかB5)が分かりません。どのようにすればいいのでしょうか?らしきプロパティはあるのですが、うまくいきません。

PrintDocument1.DefaultPageSettings.PaperSize.RawKind
で9(A4)にしても12(B5)にしてもA4になってしまいますし・・・
PrintDocument1.PrinterSetting.PagerSizesプロパティをループして
コンボボックスに展開して、選択したものを用紙設定する例はあったのですが
今回は、B5とか固定にしたいのです。

分かる方いらしゃいましたらお願いします。
■No22282に返信(maruさんの記事)
> 今回は、B5とか固定にしたいのです。
>

動作未確認です。

Dim strPapaerSZ As String
Dim pPaperSz As System.Drawing.Printing.PaperKind

'用紙サイズ-'B5にする
pPaperSz = Printing.PaperKind.B5
Dim pkSize As System.Drawing.Printing.PaperSize

For Each pkSize In PrintDocument1.PrinterSettings.PaperSizes
If pkSize.Kind = pPaperSz Then
PrintDocument1.DefaultPageSettings.PaperSize = pkSize
End If
Next
■No22283に返信(やじゅさんの記事)
> ■No22282に返信(maruさんの記事)
>>今回は、B5とか固定にしたいのです。
>>
>
> 動作未確認です。
>
> Dim strPapaerSZ As String
> Dim pPaperSz As System.Drawing.Printing.PaperKind
>
> '用紙サイズ-'B5にする
> pPaperSz = Printing.PaperKind.B5
> Dim pkSize As System.Drawing.Printing.PaperSize
>
> For Each pkSize In PrintDocument1.PrinterSettings.PaperSizes
> If pkSize.Kind = pPaperSz Then
> PrintDocument1.DefaultPageSettings.PaperSize = pkSize
> End If
> Next
>
早い回答ありがとうございます。示して頂いたもので実行できました。
A4以外を印刷するプリンタがないので印刷はしていませんが、ちょっと
疑問に思ったことがことがあるので追加で質問させて下さい。
PrintDocument1.DefaultPageSettings.PaperSize = pkSize
でA4からB5になったわけですが、この後の処理で
PrintDocument1.DefaultPageSettings.PrintableArea.HeightやWidth
を取得して使用しているのですが、B5の情報に更新されていません。
どのようにすれば更新した後のPrintableAreaを取得できるのでしょうか?

お願い致します。
■No22284に返信(maruさんの記事)
>
> A4以外を印刷するプリンタがないので印刷はしていませんが、ちょっと
> 疑問に思ったことがことがあるので追加で質問させて下さい。
> PrintDocument1.DefaultPageSettings.PaperSize = pkSize
> でA4からB5になったわけですが、この後の処理で
> PrintDocument1.DefaultPageSettings.PrintableArea.HeightやWidth
> を取得して使用しているのですが、B5の情報に更新されていません。
> どのようにすれば更新した後のPrintableAreaを取得できるのでしょうか?
>

A4以外を印刷するプリンタがないとのことですので、
試しにPDF作成ソフトを使って、B5を出力してみてください。
http://freesoft-100.com/pasokon/pdf_maker.html
■No22286に返信(やじゅさんの記事)
> ■No22284に返信(maruさんの記事)
> >
>>A4以外を印刷するプリンタがないので印刷はしていませんが、ちょっと
>>疑問に思ったことがことがあるので追加で質問させて下さい。
>>PrintDocument1.DefaultPageSettings.PaperSize = pkSize
>>でA4からB5になったわけですが、この後の処理で
>>PrintDocument1.DefaultPageSettings.PrintableArea.HeightやWidth
>>を取得して使用しているのですが、B5の情報に更新されていません。
>>どのようにすれば更新した後のPrintableAreaを取得できるのでしょうか?
>>
>
> A4以外を印刷するプリンタがないとのことですので、
> 試しにPDF作成ソフトを使って、B5を出力してみてください。
> http://freesoft-100.com/pasokon/pdf_maker.html

返信ありです。B5が印刷できないので、PrintPreviewDialogコントロールを
使用して表示させて検証していましたが、やはりB5にしてもA4のままに
なってしまいます。

For Each pkSize In PrintDocument1.PrinterSettings.PaperSizes
If pkSize.Kind = pPaperSz Then
PrintDocument1.DefaultPageSettings.PaperSize = pkSize
End If
Next

実行してみると、エラーにはなりませんが
PrintDocument1.DefaultPageSettings.PaperSize = pkSize
の部分を何回も通過しているので、B5に特定できていないようです。

http://dobon.net/vb/dotnet/graphics/printcomboboxsize.html
にあるコンボボックスの例でやってみると
PrintDocument1.DefaultPageSettings.PrintableArea.HeightやWidth
がちゃんと更新されているし、PrintPreviewDialogコントロールで
の表示もB5になります。指定の仕方がおかしい?

引き続き調査します。
やじゅさん失礼しました。こちらのコーディングミスでした。
教えて頂いたものをコピーすればよかったのですが

Dim strPapaerSZ As String
Dim pPaperSz As System.Drawing.Printing.PaperKind

'用紙サイズ-'B5にする
pPaperSz = Printing.PaperKind.B5
Dim pkSize As System.Drawing.Printing.PaperSize

For Each pkSize In PrintDocument1.PrinterSettings.PaperSizes
If pkSize.Kind = pPaperSz Then
PrintDocument1.DefaultPageSettings.PaperSize = pkSize
End If
Next

pPaperSz = Printing.PaperKind.B5
の部分を
strPapaerSZ = Printing.PaperKind.B5
にしてしまっていた為でした。

これでうまくいきました。ありがとうございます。
またお願いします。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板