loading

프로그래밍/C#

C# Zebra(제브라) 프린터 한글 출력하기

침착곰 2021. 4. 16. 11:19
반응형

안녕하세요

이번에 Zebra 프린터로 바코드 출력 프로그램을 만들면서 생긴 에러사항에 대해서 설명하려고 합니다

Zebra 프린터는 기본적으로 한글을 제공하지 않아서 한글을 출력하려하면 글자가 깨지는 문제가 발생했습니다

한글을 입력해도 글자가 깨지지 않도록 하는 방법에 대해서 설명하겠습니다

해당 프린터는 ZT410-203Dpi 모델로 테스트했습니다

 

1. KFont 다운로드

 밑의 압축파일을 다운로드합니다

 Zebra 프린터 드라이버에 한글 출력이 가능하도록 프로그램을 설치하는 용도입니다  

 압축을 해제하면 Kfont3.zsu와 Uhangul.zse 파일이 있습니다

kfont3.zip
0.34MB

 

2. Zebra 프린터 적용하기

 위에서 다운받은 파일을 Zebra 프린터에 적용하는 방법에 대해서 알아보겠습니다

 2.1. 제어판 - 하드웨어 및 소리 - 장치 및 프린터에 들어갑니다

 2.2. Zebra 프린터 아이콘을 우클릭해서 인쇄 기본 설정에 들어갑니다

 

 2.3. 인쇄 기본 설정에 들어간 후 도구 탭에 들어갑니다

  명령 유형에 작업을 선택하고 명령 이름에 파일 보내기를 선택합니다

  하단의 경로창에서 Uhangul.zse 파일을 보내줍니다

  마찬가지로 방법으로 Kfont3.zsu 파일을 보내줍니다

  여기까지 작업하였으면 Zebra 프린터 환경설정은 모두 끝이 났습니다

 

3. 프로그램 개발(최종소스)

 Zebra 프린터 환경설정을 끝마쳤으니 바코드를 출력하는 간단한 프로그램을 만들어봤습니다

 프로그램을 개발하시는데 참고하시면 좋겠습니다

Zebra.zip
0.19MB

 

 

4. 프로그램 개발(디자인)

 이제 Zebra 프린터를 이용하여 품목명과 생산일자를 간단하게 출력하는 프로그램을 만들어보겠습니다

 C# 윈폼 프로젝트를 시작해 화면을 간단하게 디자인합니다

 

5. 프로그램 개발(cs추가)

 프린터 프로그램을 개발하기 위해서 RawPrintHelper.cs가 필요합니다

 밑의 파일을 다운받아서 RawPrinterHelper.cs를 추가해줍니다

RawPrinterHelper.cs
0.01MB

 

6. 프로그램 개발(전체 소스)

 하단처럼 소스를 개발했습니다

 Zebra로 출력하기 위해서는 바코드String을 이용해 노가다로 그리게됩니다

 한글을 출력하기 위해서는 밑의 두줄을 필수로 입력해야합니다

  ^SEE:UHANGUL.DAT^FS

  ^CW1,E:KFONT3.FNT^CI26^FS

 나머지 바코드String은 하단의 소스를 참고하여 개발해줍니다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
using MesSystem;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Printing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace Zebra
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void btnPrint_Click(object sender, EventArgs e)
        {
            // 프린트 다이얼로그 선언
            PrintDialog pd = new PrintDialog();
            pd.PrinterSettings = new PrinterSettings();
            
            // 바코드String을 가져온다
            string BarCode = getbarcode();
 
            // 바코드 출력
            if (!(RawPrinterHelper.SendStringToPrinter(pd.PrinterSettings.PrinterName, BarCode)))
            {
                MessageBox.Show("에러!!!");
            }
            else
            {
 
            }
        }
 
        /// <summary>바코드 출력</summary>
        private string getbarcode()
        {
            string BarCode = string.Empty;
 
            BarCode = "^XA";                                                            // 시작
            BarCode = BarCode + "^SEE:UHANGUL.DAT^FS";                                  // 바코드 한글 처리
            BarCode = BarCode + "^CW1,E:KFONT3.FNT^CI26^FS";                            // 
            BarCode = BarCode + "\r\n^LH30,30";                                         // 기준점
 
            BarCode = BarCode + "\r\n^FO30,310^A1N,35,35^FD" + "품 목 명 : " + this.txtItem.Text + "^FS";   // 품목명 표시
            BarCode = BarCode + "\r\n^FO30,350^A1N,35,35^FD" + "생산일자 : " + txtDate.Text + "^FS";        // 생산일자 표시
 
            BarCode = BarCode + "\r\n^XZ";
 
            return BarCode;
        }
    }
}
 
cs

 

7. 결과 화면

 밑의 텍스트를 입력하여 바코드출력 버튼을 클릭하면 하단의 사진처럼 바코드가 출력된 것을 확인할 수 있습니다

 

여기까지 C#에서 Zebra 프린터의 한글출력 방법에 대해서 알아봤습니다

이런 프로그램은 처음 개발하여 조금 삽질을 많이했는데

이 글을 보신 분들은 개발하는데 도움이 되셨으면 좋겠습니다

반응형
그리드형