创建项目
首先說一下,本文章是借鉴了其他大佬的文章,然后我记录一下的文章。
首先创建好一个.net framework的winform项目。
这里面主要用到两个库文件:
Fnthex32.dll、LabelPrint.dll。
Fnthex32这个有8位参数和9位参数的,我这里用9位参数。
如果下载资源要付费,请留下评论。
这只是一个demo,展示一下斑马打印机的一个打印中文的方法。
连接打印机方式多样,请按需调整。
开始
[DllImport("Fnthex32.dll")]
private static extern int GETFONTHEX(
string text,//文本
string fontName,//字体
string tempName,//临时变量
int orient,//方向
int height,//字体高度
int width,//字体宽度
int isBold,//是否加粗0,1
int isItalic,//是否斜体0,1
StringBuilder cmd);//内容
private static string printName = string.Empty;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// 获取打印机名称
GetGetPrintersList();
}
public static void GetGetPrintersList()
{
string pringZDPrintName = string.Empty;
foreach (var item in PrinterSettings.InstalledPrinters)
{
if (item.ToString().Contains("ZD"))
{
pringZDPrintName = item.ToString();
}
}
printName = pringZDPrintName;
}
private void button1_Click(object sender, EventArgs e)
{
//Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
if (printName == null)
{
throw new ArgumentNullException("printName", "打印机名称不能为空。");
}
string sBarCodeCMD = ""; //条码打印命令
//多行汉字打印
string sTemp = GetFontHex("txt0", "Microsoft YaHei", "temp0");
string sTemp1 = GetFontHex("txt1", "Microsoft YaHei", "temp1");
string sTemp2 = GetFontHex("txt2", "Microsoft YaHei", "temp2");
string sTemp3 = GetFontHex("txt3", "Microsoft YaHei", "temp3");
string sTemp4 = GetFontHex("txt4", "Arial", "temp4");
string sTemp5 = GetFontHex("txt5", "Microsoft YaHei", "temp5");
string sTemp6 = GetFontHex("txt6", "Arial", "temp6");
sBarCodeCMD = sTemp.ToString()+ sTemp1.ToString() + sTemp2.ToString()
+ sTemp3.ToString()
//+ sTemp4.ToString()
+ sTemp5.ToString() + sTemp6.ToString() + @"
^XA
^JMA^LL800^PW1200^MD10^PR2^PON^LRN^LH0,0
^FO50,100^GB750,100,1^FS
^FO250,200^GB1,300,1^FS
^FO250,130^ADN,30,30^XGtemp0,1,1^FS
^FO50,200^GB750,100,1^FS
^FO100,230^ADN,30,30^XGtemp1,1,1^FS
^FO450,230^ADN,30,30^XGtemp2,1,1^FS
^FO50,300^GB750,100,1^FS
^FO100,330^ADN,30,30^XGtemp3,1,1^FS
^FO450,330^ADN,30,30^XGtemp4,1,1^FS
^FO50,400^GB750,100,1^FS
^FO100,430^ADN,30,30^XGtemp5,1,1^FS
^FO450,430^ADN,30,30^XGtemp6,1,1^FS
^XZ";
// 发送打印LabelPrint.dll
LabelPrint.LabelPrint.SendStringToPrinter(printName, sBarCodeCMD);
}
/// <summary>
/// 获取文本编码
/// </summary>
/// <param name="text">文本</param>
/// <param name="fontName">字体</param>
/// <param name="tempName">临时变量</param>
/// <param name="height">字体高度</param>
/// <param name="width">字体宽度</param>
/// <param name="isBlod">是否加粗</param>
/// <param name="isItalic">是否斜体</param>
/// <returns></returns>
public static string GetFontHex(string text, string fontName, string tempName,
int height = 30, int width = 15, bool isBlod = false, bool isItalic = false)
{
int nIsBlod = isBlod ? 1 : 0;
int nIsItalic = isItalic ? 1 : 0;
StringBuilder context = new StringBuilder(text.Length * 1024);
int count = GETFONTHEX(text, fontName, tempName, 1, height, width, nIsBlod, nIsItalic, context);
string temp = " " + context.ToString();
temp = temp.Substring(0, count);
return temp;
}
最后的结果是: