言語:[Visual Basic 2003]
お世話になります。
表題の件なのですが、vb2003で印刷ダイアログを出さずに、
印刷を行おうと思っております。
まだその段階ではないのですが、やりたいこととしまして
まず、何かしらの処理を行いそれが済んだときに印刷を自動で行うのですが、その処理の結果によって給紙トレイ先を切り替えたいのです。
例えば、フォーム上にあるチェックボックスがTrueのときに、印刷ボタンを押下するとトレイ1から印刷。
チェックボックスがFalseのときは、トレイ2から印刷といった感じにしたいのです。
とりあえず現段階では、できるかどうかを知りたいのですが
もしお分かりいただける方がいらっしゃいましたら、お教え願えませんでしょうか?
言葉足らずな面もあるかと思われますが、よろしくお願い致します。
No.3ベストアンサー
- 回答日時:
給紙装置と用紙サイズが一対になっているような場合
これを食い違う設定にしてしまうことが問題なように思います
A3の給紙装置を指示したのに、用紙はA4と指示すると
プリンターは指示された給紙装置と要求されている用紙サイズが違うので印刷不能です
となるのではないかと思います
# ん~ いい例えが思いつきません ・・・
プリンターのメーカサイトやプリンターの活用メーリングリストなどで
用紙サイズの設定と給紙装置の指示などの方法の情報を探してみるのもひとつの方法でしょう
つまり A3の上半分と 下半分でページングをしたいような場合
用紙サイズを変更してしまうよりも
その描画範囲のバッファを準備してそこへ描画
2ページ分描画を行って プリンターへデータを転送
といった手法を使ったほうがいいように思います
BitmapとはWindowsの画像を表示する形式のひとつです
Windows付属の『ペイント』で何か描画し、保存するとこの形式を最初に選択します
拡張子が BMPとなっているファイルです
dim bmp as New Bitmap( 640, 480 )
dim g as Graphics = Graphics.FromImage( bmp )
g.DrawLine( New Pen( Color.Red, 1 ), 20, 20, 300, 220 )
g.Dispose()
PictureBox1.Image = bmp
といった具合に GraphicsオブジェクトをBitmapから生成して描画
これを コントロールのImageプロパティに設定することにより
再描画などの処理を Widnowsにやらせてしまう手法があります
これと同様なことを A4サイズの Bitmapを作ってそこへ描画
引数の e.GraphicsのDrawImageで描画内容を プリンターへ転送
といった手法です
何度もご回答ありがとうございます
>A3の給紙装置を指示したのに、用紙はA4と指示すると
>プリンターは指示された給紙装置と要求されている用紙サイズが違うので印刷不能です
>となるのではないかと思います
指定した給紙トレイにセットされている用紙はA3で、
指定した用紙サイズもA3なのに印刷されないということは
何か設定し足りないのかもしれません
あと実験してみたのですが、A3が入っていたトレイにA4をセットして
印刷を行ってみたところ、印刷処理を行ってくれました
(何故か紙詰まりしてしまうけど・・・)
やはりA3のトレイはA3のみ使用可能という風に認識してしまった方が
よさそうな感じがします
>プリンターのメーカサイトやプリンターの活用メーリングリストなどで
>用紙サイズの設定と給紙装置の指示などの方法の情報を探してみるのもひとつの方法でしょう
どうも使用しているプリンタの生産が終了しているようで、それらしい情報が見当たりませんでした
>BitmapとはWindowsの画像を表示する形式のひとつです
想像していたものと同じでした
他に何か特別な意味があるのではと考えていました(笑
>dim bmp as New Bitmap( 640, 480 )
...
>再描画などの処理を Widnowsにやらせてしまう手法があります
なるほど、このような処理はしたことがなかったので
勉強になりました
ゆくゆくはレポート形式のドキュメントを印刷したいと思っているので
Bitmapの手法は使わないことになるかと思いますが、今後の参考にさせていただきます
ありがとうございました
No.2
- 回答日時:
> 「最適用紙がありません 用紙:A4」...
のようなメッセージは カセット型の用紙ポッパーなどの場合に起きる現象のように思います
A3/A4の用紙がセットされたコピー機でB4のコピーをとろうとしたとき
カセット(ホッパー)を代えてくれということのように思います
印刷範囲の設定をしたいのであれば
描画範囲の矩形をもったBitmapからGraphicsオブジェクトを生成して
そのGraphicsオブジェクトに描画
その後 e.Graphicsの DrawImageで希望位置に描画
といった工夫をなさったほうがいいかもしれませんよ
また ps.RawKindは .NET Framework1.1にはありませんのでお気お付けください
> Dim pdoc As New PrintDocument
> pdoc = PrintDocument1
これは
Dim pdoc As PrintDocument
pdoc = PrintDocument1
または
Dim pdoc As PrintDocument = PrintDocument1
でいいと思いますよ
pdocの宣言時にオブジェクトを作って、次にpdocにPrintDocument1を代入してしまっては 宣言時に作ったオブジェクトが無駄になります
ご回答ありがとうございます。助かります
最後に確認してもよろしいですか?
>A3/A4の用紙がセットされたコピー機でB4のコピーをとろうとしたとき
>カセット(ホッパー)を代えてくれということのように思います
これはA3で印刷したいときにVB側で
'使用するトレイ指定
pdoc.PrinterSettings.PaperSources.Item(1) 'トレイ1(A3)
...
Dim ps As New PaperSize
ps.RawKind = PaperKind.A3 'サイズをA3に指定
ps.PaperName = "A3" '〃
のようにA3と指定しても無意味ということでしょうか?
単純に用紙トレイ先を
pdoc.PrinterSettings.PaperSources.Item(0)
の.Item()の値を変更したりするだけではダメということですよね
ということでredfox63様が仰った
>描画範囲の矩形をもったBitmapからGraphicsオブジェクトを生成して
>そのGraphicsオブジェクトに描画
>その後 e.Graphicsの DrawImageで希望位置に描画
の方法を用いて印刷を行うという工夫が必要ということなのですが
これはあらかじめBitmap形式の画像を用意しておいて、
それを基にGraphicsオブジェクトを生成→描画→e.Graphicsに描画→印刷
とするのでしょうか?
この場合のBitmapというものがいまいちわかっていないので、認識が間違っているかもしれません
>また ps.RawKindは .NET Framework1.1にはありませんのでお気お付けください
お気遣いありがとうございます
インストールされているのは.NET Framework2.0でした
>pdocの宣言時にオブジェクトを作って、次にpdocにPrintDocument1を代入してしまっては 宣言時に作ったオブジェクトが無駄になります
なるほど・・・
確かに2度手間ですね、もはや約束事のようにNEW化宣言していたので
ほとんど気にしていませんでした・・・
No.1
- 回答日時:
給紙装置の種別は PrinterSettingsのPaperSourcesが管理しています
印刷物の給紙元の管理は PageSettingsのPaperSourceです
印刷前にPrintDocumentオブジェクトのDefaultPageSettings.PaperSourceを設定するようですよ
たとえば 給紙装置のコレクションの2番目をを選択したいのであれば
dim pd as new PrnteDocument
' pdのPrintPageハンドラなどを設定
pd.DefualtPageSettings.PaperSource = _
pd.PrinterSettings.PaperSources.Item(1)
といった具合にします
# .NETのコレクションは 0ベースですので 1番目が0
# 2番目が 1、3番目が2 といった引数になります
# 実機で試したコードではないので不備があるかもしれません
ご回答ありがとうございます。
redfox63様の方法を参考に、とりあえず印刷されるかどうかだけ
確かめてみました。
'ボタンクリック
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim pdoc As New PrintDocument
pdoc = PrintDocument1
'Item(0)=自動,Item(1)=A3,Item(2)=A4
pdoc.DefaultPageSettings.PaperSource= _
pdoc.PrinterSettings.PaperSources.Item(1) '※1
pdoc.Print()
End Sub
'印字詳細
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)
Handles PrintDocument1.PrintPage
e.Graphics.DrawString("あいうえお", _
New Drawing.Font("MS 明朝", 14), _
Drawing.Brushes.Black, _
10, 10, New Drawing.StringFormat)
Dim ps As New PaperSize
ps.RawKind = PaperKind.A4 '※2
ps.PaperName = "A4" '※3
e.PageSettings.PrinterSettings.DefaultPageSettings.PaperSize = ps
End Sub
諸事情で、今VB2005しか使えなかったのでそちらで試してみましたが
以上のやり方で一応印刷はされました。
が、※1をItem(1)にし、※2,3のところをA4からA3に変えて印刷を行おうとすると
「最適用紙がありません 用紙:A4」のようなメッセージがプリンタ側の画面に表示されて印刷されませんでした。
指定したトレイにはA3の用紙はちゃんとセットされているので、
VB側でのコードが問題なような感じなのですが、よくわかりません。
また、WEBで調べていて見つけた情報なのですが、プリンタによってはVB側からの設定を無視することがあるらしいので、その辺が怪しそうです。
もうちょっと調べてみたいと思いますので、締め切りの方はもうしばらくお待ちください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- プリンタ・スキャナー Wordで作った宛名ラベルを印刷しようと思って、プリンターの上のところにある、手差しトレイ的なところ 3 2022/11/17 18:40
- その他(パソコン・スマホ・電化製品) Webページの印刷 1 2023/04/17 14:01
- プリンタ・スキャナー 電化製品が一度もまともに稼働しない場合、返品・返金してもらえないものなの? 3 2023/01/19 23:37
- プリンタ・スキャナー RICOHオンデマンドで、手差しで中綴じ印刷をしたいです。 (A4の内容を用紙サイズA3で印刷したい 1 2022/10/14 14:29
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- プリンタ・スキャナー ブラザー プリンターMFC-J4720N 2 2022/07/17 20:10
- PDF 2つのPDFを重ねる方法はありますか? 4 2023/01/30 14:04
- Excel(エクセル) エクセルの罫線が印刷できない 4 2023/02/04 10:48
- Excel(エクセル) Excelであるシートだけ印刷できない 1 2022/04/01 09:04
- その他(パソコン・スマホ・電化製品) Webページ印刷時にヘッダー・フッターをつけたい 1 2022/04/25 21:35
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
VB.NET+ActiveReports で印刷時の用紙トレイ選択
Visual Basic(VBA)
-
エクセルVBAで手差しトレイを指定させたい。
Excel(エクセル)
-
Visual Basicから、プリンタの印刷設定を変更する方法。
Visual Basic(VBA)
-
-
4
VBからプリンタに出力する時に印刷方向を縦から横に変更したいのですが・・・
Visual Basic(VBA)
-
5
【VB.Net Windows】印刷設定(Canon 給紙方)の設定方法を教えてください
Visual Basic(VBA)
-
6
マクロでプリンタ、用紙、給紙先を指定するには?
Excel(エクセル)
-
7
クリレポのプリンタ設定について
Visual Basic(VBA)
-
8
VBでExcel印刷する時のプリンタトレイの選択方法について
Visual Basic(VBA)
-
9
C# 印刷可能領域と余白範囲の関係?
C言語・C++・C#
-
10
Accessでのプリンター給紙トレイの指定
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
for文の実行速度を遅くしたいの...
-
ListBoxで改行したい
-
画面に絵を出す方法
-
Word 描画オブジェクトを削除...
-
MFCでのコンボボックスについて
-
win32api複数のタイマーを同時...
-
COLORREF color の反転色
-
ビットマップに描画をしてピク...
-
線を引くには?
-
VB.netで図形描画ができません^^;
-
VB .net Form_Load時、または関...
-
DrawLine
-
水平線の描画
-
VBA listBoxから
-
VBA シートのボタン名を変更し...
-
worksheetFunctionクラスのVloo...
-
ユーザーフォームを表示中にシ...
-
実行時エラー 438になった時の...
-
「Columns("A:C")」の列文字を...
-
VBA(エクセル)で自動的にボタン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ListBoxで改行したい
-
for文の実行速度を遅くしたいの...
-
給紙トレイをダイアログを使わ...
-
Word 描画オブジェクトを削除...
-
VB.NETでグラフィックを描くと...
-
C#を用いて描画する四角形の角...
-
C# DrawImage 物理サイズでな...
-
ビットマップに描画をしてピク...
-
PowerPoint の VBA
-
画面に絵を出す方法
-
DrawLineで引いた線が消えてし...
-
VC++ ドラッグしながらの図の...
-
円の頂点の求め方を知りたいです。
-
MFCでのコンボボックスについて
-
画面の再描画について
-
Windows10のC#のピクチャーボッ...
-
フォームに描画して表示をスク...
-
VB PictureBoxの描画範囲
-
PictureBoxのダブルバッファリ...
-
C#で壁の当たり判定と自キャラ...
おすすめ情報