2011-09-13 2 views
1

저는 POS 프린터를 사용할 소매 관리 소프트웨어를위한 작은 프로젝트를 진행하고 있습니다. 나는 그것을 위해 결국 법안을 만들어야합니다. 그러나 나는 여기에서 붙어서 진행할 수 없다. 따라서 적절한 크기 (POS 청구서의 너비)로 별도의 양식으로 청구서를 생성하면 올바르게 인쇄 할 수 있습니까? C# 및 .NET 4.0 프레임 워크를 사용하고 있습니다. POS 장치에 대한 지식이별로 없습니다. 나는 소프트웨어의 기본 모델을 필요로하는 작은 로컬 클라이언트를 위해 일하고있다. 나는 또한 더 신선한 나를 도와주세요.POS (Point of Sale) 응용 프로그램 영수증 인쇄

내 질문에 명확하지 않은 경우 내 생각을 자세히 설명하려고합니다.

+0

그냥 알다시피, POS == 판매 시점이 – jadarnel27

+1

이것은 다소 큰 문제이며 POS 프린터를 통해 인쇄 가능한 영수증을 만드는 것은 결코 쉬운 일이 아닙니다. StackOverflow는 특정 프로그래밍에 대한 질문이기 때문에 Google에서 먼저 검색해야합니다. – qJake

+0

@ jadarnel27 : 나는 이것을 알고 있고 WEPOS에 대한 아이디어가 있다고 말할 수있다. – Sandy

답변

1

글쎄, POS 응용 프로그램 (델파이)을 설계했고, 로켓 과학이 아닌 영수증이나 계산서 인쇄에 많은 문제가있는 것으로 보입니다. 다른 프린터와 마찬가지로 간단하게 영수증을 인쇄합니다. 차이점은 프린터 드라이버, 글꼴 및 크기에 따라 30-38 자 길이의 줄을 보내는 것입니다. 시작하려면 Ascii 문자를 보내고 프린터 명령 (글꼴 스타일, 색 등을 설정)을 특정 프린터에 보내거나 두 번째 방법은 C#을 사용하여 인쇄 할 글꼴, 크기 등을 설정하는 두 가지 방법으로 인쇄 할 수 있습니다. 다른 일반/데스크탑 프린터. 나는 이것이 이전 게시물 알고 http://ondotnet.com/pub/a/dotnet/2002/06/24/printing.html

+0

회신을 보내 주셔서 감사합니다. Luis. 내가 끝까지 가자. 모든 것이 계획대로 진행되지 않는다면 의견을 말할 것입니다. – Sandy

2

하지만 그 여전히 솔루션, 내가 무엇을했는지를 알 수 있습니다 찾고 :

당신은 페이지 내 제안의 예를 다음 인쇄를 시도 할 수 있습니다.

많은 시간을 OPOS 및 POS for .Net으로 보내고 난 후에 나는 그만 포기하고 내장 된 System.Drawing.Printing 라이브러리를 사용했습니다. .Net을위한 OPOS와 POS는 일하기가 어려워 결국 궁극적으로 내장 라이브러리와 마찬가지로 작동하지 못했습니다.

저는 영수증 프린터 인 Epson TM-T20II를 사용하고 있습니다.

다음은 저에게 잘 맞았던 코드입니다.

public static void PrintReceiptForTransaction() 
    { 

     PrintDocument recordDoc = new PrintDocument(); 

     recordDoc.DocumentName = "Customer Receipt"; 
     recordDoc.PrintPage += new PrintPageEventHandler(ReceiptPrinter.PrintReceiptPage); // function below 
     recordDoc.PrintController = new StandardPrintController(); // hides status dialog popup 
     // Comment if debugging 
     PrinterSettings ps = new PrinterSettings(); 
     ps.PrinterName = "EPSON TM-T20II Receipt"; 
     recordDoc.PrinterSettings = ps; 
     recordDoc.Print(); 
     // -------------------------------------- 

     // Uncomment if debugging - shows dialog instead 
     //PrintPreviewDialog printPrvDlg = new PrintPreviewDialog(); 
     //printPrvDlg.Document = recordDoc; 
     //printPrvDlg.Width = 1200; 
     //printPrvDlg.Height = 800; 
     //printPrvDlg.ShowDialog(); 
     // -------------------------------------- 

     recordDoc.Dispose(); 

    } 


private static void PrintReceiptPage(object sender, PrintPageEventArgs e) 
    { 
     float x = 10; 
     float y = 5; 
     float width = 270.0F; // max width I found through trial and error 
     float height = 0F; 

     Font drawFontArial12Bold = new Font("Arial", 12, FontStyle.Bold); 
     Font drawFontArial10Regular = new Font("Arial", 10, FontStyle.Regular); 
     SolidBrush drawBrush = new SolidBrush(Color.Black); 

     // Set format of string. 
     StringFormat drawFormatCenter = new StringFormat(); 
     drawFormatCenter.Alignment = StringAlignment.Center; 
     StringFormat drawFormatLeft = new StringFormat(); 
     drawFormatLeft.Alignment = StringAlignment.Near; 
     StringFormat drawFormatRight = new StringFormat(); 
     drawFormatRight.Alignment = StringAlignment.Far; 

     // Draw string to screen. 
     string text = "Company Name"; 
     e.Graphics.DrawString(text, drawFontArial12Bold, drawBrush, new RectangleF(x, y, width, height), drawFormatCenter); 
     y += e.Graphics.MeasureString(text, drawFontArial12Bold).Height; 

     text = "Address"; 
     e.Graphics.DrawString(text, drawFontArial10Regular, drawBrush, new RectangleF(x, y, width, height), drawFormatCenter); 
     y += e.Graphics.MeasureString(text, drawFontArial10Regular).Height; 

     // ... and so on 

} 

사용자가 맞춤식 드라이버를 사용하여 주변을 어지럽히는 데 도움이되기를 바랍니다. :)

관련 문제