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

C#から印刷

  • 題名: C#から印刷
  • 著者: みなこ
  • 日時: 2004/04/22 17:57:39
  • ID: 3794
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[環境(XP)、使用言語(C#)]
分類:[.NET]

お世話になります。
またみなさん教えて下さい。

textBoxにデータを入れ、printDocument1_PrintPageで1行だけ印刷をしています
1行分のデータは印刷はされますが、何故か改ページしてまいます。
どうすれば改ページせずに終了する事ができますか?

Font fontB = new Font("MS P明朝", 11, FontStyle.Regular);
e.Graphics.DrawString(textBox1.Text, fontB, Brushes.Black, 72, 144);
e.HasMorePages = false;
fontB.Dispose();
this.Close();
  • 題名: Re[1]: C#から印刷
  • 著者: ゆうとっと
  • 日時: 2004/04/23 12:22:34
  • ID: 3803
  • この記事の返信元:
  • この記事への返信:
  • ツリーを表示
■No3794に返信(みなこさんの記事)
> お世話になります。
> またみなさん教えて下さい。
>
> textBoxにデータを入れ、printDocument1_PrintPageで1行だけ印刷をしています
> 1行分のデータは印刷はされますが、何故か改ページしてまいます。
> どうすれば改ページせずに終了する事ができますか?
>
> Font fontB = new Font("MS P明朝", 11, FontStyle.Regular);
> e.Graphics.DrawString(textBox1.Text, fontB, Brushes.Black, 72, 144);
> e.HasMorePages = false;
> fontB.Dispose();
> this.Close();

ゆうとっと と申します。
おかしいですね、当方では再現しませんが、再度確認してみては。
ちなみに、DOBONさん サンプルでやってみました。
http://dobon.net/vb/dotnet/graphics/printtext.html
※フォームにtextBox1 のみ置きました。
   private void Form1_Load(object sender, System.EventArgs e) {
    PrintDocument_Print();
   }
   private void PrintDocument_Print() {
    //印刷する文字列と位置を設定する
    printingText = textBox1.Text;
    printingPosition = 0;
    //PrintDocumentオブジェクトの作成
    System.Drawing.Printing.PrintDocument pd =
     new System.Drawing.Printing.PrintDocument();
    //PrintPageイベントハンドラの追加
    pd.PrintPage +=
      new System.Drawing.Printing.PrintPageEventHandler
       (pd_PrintPage);
    //印刷を開始する
    pd.Print();
   }
   private void pd_PrintPage(object sender,
      System.Drawing .Printing .PrintPageEventArgs e) {
      //ここにみなこ さん コード追加
   }
これで改行してないと思いますが、どうですか?
やってみてチョ!
> ゆうとっと と申します。
> おかしいですね、当方では再現しませんが、再度確認してみては。
> ちなみに、DOBONさん サンプルでやってみました。
> http://dobon.net/vb/dotnet/graphics/printtext.html
> ※フォームにtextBox1 のみ置きました。
>    private void Form1_Load(object sender, System.EventArgs e) {
>     PrintDocument_Print();
>    }
>    private void PrintDocument_Print() {
>     //印刷する文字列と位置を設定する
>     printingText = textBox1.Text;
>     printingPosition = 0;
>     //PrintDocumentオブジェクトの作成
>     System.Drawing.Printing.PrintDocument pd =
>      new System.Drawing.Printing.PrintDocument();
>     //PrintPageイベントハンドラの追加
>     pd.PrintPage +=
>       new System.Drawing.Printing.PrintPageEventHandler
>        (pd_PrintPage);
>     //印刷を開始する
>     pd.Print();
>    }
>    private void pd_PrintPage(object sender,
>       System.Drawing .Printing .PrintPageEventArgs e) {
>       //ここにみなこ さん コード追加
>    }
> これで改行してないと思いますが、どうですか?
> やってみてチョ!

ありがとうございます。
早速やってみましたが、これって改行ですよね?
私の場合は改ページさせないようにしたいのですが...
ゆうとっと です。
改行(記述ミス)->改ページですが、どっちにしろ
してないと思うのですが・・・
プロパティ又は、プリンタの設定は、変更無しかな?
これでも改ページするのなら、その辺が怪しく思うのですが・・・
ゆうとっと さん、ありがとうございます。
やってみましたが結果は同じでした。 改ページします。

private void Form1_Load(object sender, System.EventArgs e)
{
     textBox1.Text = "あいうえお";
PrintDocument_Print();
}
private void PrintDocument_Print()
{
   //印刷する文字列と位置を設定する
  printingText = textBox1.Text;
  printingPosition = 0;
printFont = new Font("MS Pゴシック", 10);
//PrintDocumentオブジェクトの作成
   System.Drawing.Printing.PrintDocument pd = new System.Drawing.Printing.PrintDocument();
     //PrintPageイベントハンドラの追加
   pd.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(pd_PrintPage);
   //印刷を開始する
pd.Print();
this.Close();
}

private void pd_PrintPage(object sender,System.Drawing .Printing .PrintPageEventArgs e)
{
int x = e.MarginBounds.Left;
int y = e.MarginBounds.Top;

e.Graphics.DrawString(printingText, printFont, Brushes.Black, x, y);
e.HasMorePages = false;
printingPosition = 0;
  }

> プロパティ又は、プリンタの設定は、変更無しかな?
> これでも改ページするのなら、その辺が怪しく思うのですが・・・
プリンタの設定は用紙だけ連続用紙にしています。15*11インチ
後は変更無しです。

もしかして連続用紙だとダメとか?
> プリンタの設定は用紙だけ連続用紙にしています。15*11インチ
> 後は変更無しです。
>
> もしかして連続用紙だとダメとか?
ゆうとっと です。
その環境が無いので、分かりませんが、
設定変えてやって見るべし!
■No3807に返信(ゆうとっとさんの記事)
>>プリンタの設定は用紙だけ連続用紙にしています。15*11インチ
>>後は変更無しです。
>>
>>もしかして連続用紙だとダメとか?
> ゆうとっと です。
> その環境が無いので、分かりませんが、
> 設定変えてやって見るべし!

ありがとうございました。
もう少し頑張ってみます。
何を期待されているのかいまいち分かりませんが、とりあえず当たり前のことを書かせていただきます。

「PrintPageイベント」という名の通り、PrintPageイベントハンドラでは現在のページにどのように印刷するかを指定する訳ですから、ここで処理された内容が一ページとして印刷されることになります。よって、一ページに収めたい事柄は、PrintPageイベントハンドラ内ですべて行ってください。
> 何を期待されているのかいまいち分かりませんが、とりあえず当たり前のことを書かせていただきます。

> 「PrintPageイベント」という名の通り、PrintPageイベントハンドラでは現在のページにどのように印刷するかを指定する訳ですから、ここで処理された内容が一ページとして印刷されることになります。よって、一ページに収めたい事柄は、PrintPageイベントハンドラ内ですべて行ってください。


説明不足ですいませんでした。
私が今回、作成したいのは1バッチ毎のロギングを連続用紙に印刷したかったんです。
1バッチは10個位のデータで30分に1回位で1バッチ終了です。
この1バッチのデータを1行に印刷し改行してプリンターは待機してる状態にしたいのです。
また、1バッチ毎のデータを25行印刷後改ページさせたいのですが、どうすれば良いのでしょうか?


  • 題名: Re[9]: C#から印刷
  • 著者: ポン
  • 日時: 2004/04/30 6:50:02
  • ID: 3864
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
> 私が今回、作成したいのは1バッチ毎のロギングを連続用紙に印刷したかったんです。
> 1バッチは10個位のデータで30分に1回位で1バッチ終了です。
> この1バッチのデータを1行に印刷し改行してプリンターは待機してる状態にしたいのです。
> また、1バッチ毎のデータを25行印刷後改ページさせたいのですが、どうすれば良いのでしょうか?
>

それは、ジャーナル印刷と呼ばれる方法ですね。
参考までに、VB6ですが、以下のサイトに解説があります。
Win32 APIを使えばできるみたいです。

http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/9801/vbprint/
http://www.galliver.co.jp/writing/nikkei_tokushu/prn908/

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