2014-12-10 4 views
0

영수증 종류를 만들려고합니다. 내 프린터의 드라이버 (내 OS에는 존재하지 않음)가 없습니다. 그래서 일반 프린터 텍스트 만 설치했습니다. 내 프린터는 POS 프린터 중 하나입니다. 내가 사용C# 인쇄 Y 위치 혼자 변경

int _x = 10; 
int _y = 5; 
int _width = 270; // max width I found through trial and error 
int _height = 0; 

StringFormat _center = new StringFormat(); 
StringFormat _left = new StringFormat(); 
StringFormat _right = new StringFormat(); 

_center.Alignment = StringAlignment.Center; 
_left.Alignment = StringAlignment.Near; 
_right.Alignment = StringAlignment.Far; 

PrintDocument _print = new PrintDocument(); 
PrintPreviewDialog _printPrev = new PrintPreviewDialog(); 

_print.DefaultPageSettings.PaperSize = new PaperSize("My Custom Receipt", _width, 600); 
_print.DefaultPageSettings.PaperSize.RawKind = (int)PaperKind.Custom; 
_print.DefaultPageSettings.Landscape = false; 
_print.DefaultPageSettings.Margins = new Margins(0, 0, 0, 0); 

_print.OriginAtMargins = true; 

_printPrev.Document = _print; 
_printPrev.PrintPreviewControl.AutoZoom = false; 
_printPrev.PrintPreviewControl.Zoom = 1; 

그리고 종이에 쓰기 :

내 구성입니다

_print.PrintPage += (Object sender, PrintPageEventArgs e) => { 

    // Header information 
    e.Graphics.DrawString("Number:", small, Brushes.DarkGray, new Rectangle(_x, _y, _width, _height), _left); 
    e.Graphics.DrawString(number.ToString(), medium, Brushes.Black, new Rectangle(_x, _y, _width, _height), _center); 
    _y += (int)e.Graphics.MeasureString(number.ToString(), medium).Height; 

    e.Graphics.DrawString("BARCODE:", small, Brushes.DarkGray, new Rectangle(_x, _y, _width, _height), _left); 
    e.Graphics.DrawString(barcode.ToString(), medium, Brushes.Black, new Rectangle(_x, _y, _width, _height), _center); 
    _y += (int)e.Graphics.MeasureString(barcode.ToString(), medium).Height; 

    // And so on.. 
} 

무엇 일어나는 것은 그 난 단지 (예를 들어) 그 라인을 모두 두 줄을 작성하는 경우 머리말에 +/- 스티커를 붙이십시오. 그렇지 않으면 맨 아래로 밀리기 시작합니다.

enter image description here

enter image description here

답변

0

를 해결 : 다음 이미지는 문제를 보여줍니다.

다음 변수를 _print.PrintPage()에 복사하면됩니다.

int _x = 10; 
int _y = 5; 
int _width = 270; // max width I found through trial and error 
int _height = 0;