2010-12-06 10 views
24

Winforms와 함께 C#을 사용하고 있습니다. 종이 롤에 지폐를 인쇄하려고합니다. 용지의 폭은 3 인치이지만 용지의 길이는 동적입니다 (롤 용지). 길이는 목록에있는 항목 수에 따라 다릅니다. 예 : 구매 항목이 100 개 이상이면 팔리는 품목이 매우 길어서 작은 품목 일 경우 구입하는 품목의 길이가 길어집니다.롤 용지에 인쇄

보고서를 인쇄 할 때 작업이 끝난 후 프린터에서 필요한만큼 마지막 페이지를 꺼냅니다. A4 크기만큼 용지를 배출합니다. 필요한 줄을 인쇄하고 인쇄를 중단하고 싶습니다. A4, A3 및 Epson LQ-300 + II 프린터가 아닌 롤 용지를 사용합니다.

보다 구체적으로 말하자면, 인쇄는 항상 페이지 크기 단위로 수행됩니다. 페이지를 3in x 8in으로 설정하면 항상 8in 길이의 인쇄물로 끝납니다. 9in 청구서를 인쇄하려면 16in 출력물로 끝내고 7in 용지를 낭비하십시오. 마지막 페이지가 필요한만큼만 인쇄하려면 어떻게해야합니까?

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; 
     } 
+5

무엇이 당신 질문입니까? 완료 될 때까지 인쇄를 계속할 수 있어야합니다. 그럼 끝날거야. 이것이 롤 용지의 장점입니다. –

+0

+1, 작업이 끝날 때까지 그리기를 계속하고 성명서를 작성하여 종이를 자르십시오. 저는 GDI를 사용하여 Crystal Reports에 대한 경험이 없었습니다. – Anton

답변

15

당신은 "한 줄"긴 페이지를 사용하여 시도 적이 : 여기

코드인가?

상단 및 하단 테두리를 생략하면 인쇄가 중단되지 않습니다.

이제 비트를 추가하여 (페이지를 찢을 수 있음) 추출해주세요.

이 시도 :

  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

+0

제약 조건을 감안할 때 이것은 가장 논리적 인 대답처럼 보입니다. – NotMe

+0

한 줄의 용지는 어떻게 정의 할 수 있습니까? 프린터 설정에서는 표준 크기 만 보았습니다. – Thunder

+0

위의 내용을 참조하십시오. –

4

또한 즉석에서 용지 크기를 조정할 수 있습니다. 적은 일이 그것을 페이지 당 하나 개의 라인을 할 수 있지만, 사람이 그렇게하는 원인을 가지고 있다면 나는 더 좋은 인쇄 미리보기를 생성 할 것이 다 치지 : 사용자 정의 용지 크기를 정의 할 수있는 방법을

다음
printdoc.DefaultPageSettings.PaperSize.Height += lineheight; 
+0

이 코딩은 나를 위해 작동하지 않습니다. 어떤 이벤트에서이 코딩을 지정해야합니까? .. 인쇄 페이지 이벤트에 사용되었습니다. – Sathish

+0

각 줄을 그릴 때마다 그렇게하고 싶습니다. 그리고 제안 된 대답에 따라 맞춤형 한 줄짜리 용지 크기로 시작하고 싶을 것입니다. 표준 용지 크기에는 높이를 쓸 수 없습니다. –

0

이며, 보고서에 사용하십시오.

제어판에서 프린터 폴더를 엽니 다.

열기 서버 속성 파일 메뉴. 프린터 및 서버 속성 대화 상자가 열립니다.

선택 점검

가 페이지 너비 높이를 지정 새로운 양식을 작성 . 나는 너의 높이를 3 인치로 만들 것을 제안한다.

이제 양식 저장 버튼을 클릭하십시오.

사용자 정의 페이지가 준비되었습니다.

이 용지를 보고서 및 프린터 속성 모두에서 기본 용지 크기로 설정하십시오.

이제가 보는 것이 좋습니다.

+0

에는 최소한이 용도로 사용하는 운영 체제가 지정되어 있어야합니다. –

0

인쇄 미리보기 옵션을 사용하여이 프로세스를 완료 할 수도 있습니다.

// 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; 
}