web-dev-qa-db-ja.com

ロール紙への印刷

WinformsでC#を使用しています。請求書をロール紙に印刷しようとしています。紙の幅は3インチですが、紙の長さは動的です(ロール紙)。長さは、リストにあるアイテムの数によって異なります。例えば。購入時に100個のアイテムが販売されている場合、それはかなり長いロールになりますが、購入された単一のアイテムの場合は短い長さになります。

レポートを印刷するとき、ジョブの終了後、プリンターは必要以上に最後のページを排出します。 A4サイズの用紙を排出します。必要な行を印刷してから、印刷を停止したい。私はA4やA3ではなくロール紙とEpsonLQ-300 + IIプリンターを使用しています。

具体的には、印刷は常にページサイズの単位で行われます。ページを3inx 8inに設定すると、常に8inの倍数の長さのプリントアウトになります。 9インチの請求書を印刷する場合、16インチの印刷物になり、7インチの紙が無駄になります。最後のページを必要な長さだけにして印刷するにはどうすればよいですか?

コードは次のとおりです。

private void printDoc_PrintPage(Object sender, PrintPageEventArgs e)
        {
            Font printFont = new Font("Courier New", 12);
            int y = 15;
            e.Graphics.DrawString("a Line", printFont, Brushes.Black, 0, y); y = y + 20;
            e.Graphics.DrawString(" Line", printFont, Brushes.Black, 0, y); y = y + 25;
            e.Graphics.DrawString(" Line", printFont, Brushes.Black, 0, y); y = y + 35;
            e.Graphics.DrawString(" Line", printFont, Brushes.Black, 0, y); y = y + 45;
        }
24
Thunder

「1行」しかないページを使ってみましたか?

上下の境界線を省略すれば、ノンストップで印刷できます。

次に、ビットを追加して(ページを切り離すことができるように)、それを取り出します。

これを試して:

            PaperSize pkCustomSize1 = new PaperSize("First custom size", 100, 200);

            printDoc.DefaultPageSettings.PaperSize = pkCustomSize1

参照: http://msdn.Microsoft.com/en-us/library/system.drawing.printing.pagesettings.papersize.aspx

17
Heiko Hatzfeld

用紙サイズをその場で調整することもできます。 1ページに1行の作業は少なくて済みますが、誰かがそうする理由があれば、これにより印刷プレビューがより良くなると思います。

printdoc.DefaultPageSettings.PaperSize.Height += lineheight;
5
Kevin Stricker

カスタム用紙サイズを定義してレポートで使用する方法は次のとおりです。

(コントロールパネルから)プリンタフォルダを開きます。

ファイルメニューからサーバープロパティを開きます。 プリンタとサーバーのプロパティダイアログボックスが開きます。

チェックを選択新しいフォームを作成

ページ幅の高さを指定します。身長を3インチにすることをお勧めします。

フォームの保存ボタンをクリックします。

カスタムページの準備が整いました。

レポートとプリンタのプロパティの両方で、この用紙をデフォルトの用紙サイズとして設定します。

今、あなたは行ってもいいです。

0
Deb

印刷プレビューオプションを使用して、このプロセスを完了することもできます。

// This is for the print preview event
 private void printPreviewDialog1_Load(object sender, EventArgs e)
 {
     int j = 0;
     z = 185;

     while (j < dataGridView1.Rows.Count)
     {                 
         j += 1;
         z += 30;
     }

     z += 60;

     PaperSize pkCustomSize1 = new PaperSize("First custom size", 350, z);

     printDocument1.DefaultPageSettings.PaperSize = pkCustomSize1;
 }

 // This is the loop for generating print Document
 private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
 {
     int i = 0; //For Gridview Row Count
     int sno = 1; //For Grid Serial Number

     e.Graphics.DrawString(
         "HEADING", 
         new Font("Calibri", 20, FontStyle.Bold), 
         Brushes.Black, 
         new Point(100, 5));

     e.Graphics.DrawString(
         "Address", 
         new Font("Calibri", 12, FontStyle.Bold), 
         Brushes.Black, 
         new Point(75, 35));

    int y = 185; //For Grid y axis start to print 

    while (i < dataGridView1.Rows.Count)
    {
        e.Graphics.DrawString(
            sno.ToString(), 
            new Font("Calibri", 10, FontStyle.Bold), 
            Brushes.Black, 
            new Point(10, y)); //For Serial Number

        e.Graphics.DrawString(
            dataGridView1.Rows[i].Cells[1].FormattedValue.ToString(), 
            new Font("Calibri", 10, FontStyle.Bold), 
            Brushes.Black, 
            new Point(240, y));

        //This is for Trim content to next line
        Graphics df1 = e.Graphics;
        SizeF ef1 = df1.MeasureString(
            dataGridView1.Rows[i].Cells[0].FormattedValue.ToString(),
            new Font(new FontFamily("Calibri"), 12F, FontStyle.Bold),
            200); //160

        df1.DrawString(
            dataGridView1.Rows[i].Cells[0].FormattedValue.ToString(),
            new Font(new FontFamily("Calibri"), 12F, FontStyle.Bold), 
            Brushes.Black,
            new RectangleF(new PointF(60.0F, y), ef1), //350.0
            StringFormat.GenericTypographic);

        i += 1;
        sno += 1;
        y += 30;
    }

    e.Graphics.DrawString(
        "------------------------------------------------------------------------------------",
        new Font("Calibri", 10, FontStyle.Bold), 
        Brushes.Black, 
        new Point(0, y));

    e.Graphics.DrawString(
        "Total Amount-:" + TotalAmnt_txt.Text, 
        new Font("Calibri", 10, FontStyle.Bold), 
        Brushes.Black, 
        new Point(150, y+=20));

    e.Graphics.DrawString(
        "------------------------------------------------------------------------------------", 
        new Font("Calibri", 10, FontStyle.Bold), 
        Brushes.Black, 
        new Point(0, y+=20));

    e.Graphics.DrawString(
        "***Care For You ****", 
        new Font("Calibri", 10, FontStyle.Bold), 
        Brushes.Black, 
        new Point(150, y += 20));

    i = 0;
    sno = 1;
}
0
safik rahman