在Delphi中使用条码打印机打印中文标签时,由于多数打印机无内置中文字体,需要通过一个动态库fnthex32.dll(据说该动态库是Zebra公司整出来的)来把中文转换成16进制图形,然后再发送到打印机上。网络上可以找到一些如何使用该动态库的例子,这里也贴一个:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, strutils; type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Edit1: TEdit; cbx1: TComboBox; Edit2: TEdit; cbx2: TComboBox; Memo1: TMemo; Button1: TButton; Button2: TButton; Memo2: TMemo; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; function GETFONTHEX(chnstr: string; fontname: string; orient: integer; height: integer; width: integer; bold: integer; italic: integer; hexbuf: string): integer; stdcall; external 'fnthex32.dll'; function PrtChnStr(x, y: integer; fontname: string; height, xmf, ymf: integer; chnstr: string): string; var Form1: TForm1; implementation {$R *.dfm} function PrtChnStr(x, y: integer; fontname: string; height, xmf, ymf: integer; chnstr: string): string; var buf, ret: string; count: integer; begin result := ''; setlength(buf, 21 * 1024); count := GETFONTHEX(chnstr, fontname, 0, height, 0, 1, 0, buf); if count > 0 then begin ret := Copy(buf, 1, count); result := ret + '^FO' + inttostr(x) + ',' + inttostr(y) + '^XGOUTSTR01,' + inttostr(xmf) + ',' + inttostr(ymf) + '^FS'; end; end; procedure TForm1.Button1Click(Sender: TObject); var prtstr, code: string; begin if cbx1.Text = 'Code 11' then code := '^B1' else if cbx1.Text = 'Code 39' then code := '^B3' else if cbx1.Text = 'Code 49' then code := '^B4' else if cbx1.Text = 'Code 93' then code := '^BA' else if cbx1.Text = 'Code 128' then code := '^BC' else if cbx1.Text = 'EAN-8' then code := '^B8'; prtstr := '^XA^IA6^XZ^FS^XA^FS^BY3,3^LH20,23^FS'; prtstr := prtstr + '^FO' + '30,25' + code + ',' + '70^FD' + trim(Edit1.Text) + '^FS'; prtstr := prtstr + PrtChnStr(10, 140, pchar(cbx2.Text), 14, 1, 2, pchar(Leftstr(Edit2.Text, 18))); prtstr := prtstr + '^PQ1^FS'; //打印1份 prtstr := prtstr + '^PRC^FS^XZ^FS^XA^EG^XZ'; //打印结束 Memo1.lines.clear; Memo1.lines.Add(prtstr); end; procedure TForm1.Button2Click(Sender: TObject); var prtstr: string; filehandle: integer; begin prtstr := Memo1.Text; filehandle := fileopen('LPT1', fmOpenWrite); if filehandle > 0 then filewrite(filehandle, prtstr[1], length(prtstr)) else showmessage('打开并口错误'); fileclose(filehandle); end; end.
该例子在Delphi7里运行的挺好,可是在Delphi2010上却无法正常转换。原因是在Delphi2010中默认把String都当成UnicodeString来处理。通过把转换函数的接口强制声明为AnsiString可解决该问题。
一、函数声明改为:
function GETFONTHEX(chnstr: AnsiString; fontname: AnsiString; orient: integer; height: integer; width: integer; bold: integer; italic: integer; hexbuf: AnsiString): integer; stdcall; external 'fnthex32.dll';
二、调用位置改为:
function PrtChnStr(x, y: integer; fontname: string; height, xmf, ymf: integer; chnstr: string): string;
var
buf, ret: AnsiString;
count: integer;
begin
result := '';
setlength(buf, 21 * 1024);
count := GETFONTHEX(AnsiString(chnstr), AnsiString(fontname), 0, height, 0, 1, 0, buf);
if count > 0 then
begin
ret := Copy(buf, 1, count);
result := ret + '^FO' + inttostr(x) + ',' + inttostr(y) + '^XGOUTSTR01,' + inttostr(xmf) + ',' + inttostr(ymf) + '^FS';
end;
end;
相关推荐
Zebra条码打印机汉字价签打印完全解决方案
zebra条码打印机SDK开发包
zebra条码打印机的打印指令的应用及汉字打印
Java调用Zebra条码打印机打印条码、中英文数字条码混合标签,可自由控制格式和排版。
Java调用Zebra条码打印机打印条码、中英文数字条码混合标签。相对于上一个版本解决了一些问题。
zebra条码打印机函数调用说明,含一维\二维条码
SAP中如何通过SMARTFORM 在ZEBRA 打印机打印条码
JAVA调用zpl条码打印机打印中文打印及网络打印实例
美国斑马公司条码打印机驱动,可以安装各种斑马打印机,用来测试打印机是否好用。
XiIII条码打印机使用培训 是一款ZEBRA条形码打印机维修调试很好的教材 适宜于办公物流企事业单位
最新款斑马Zebra105SLPlus条码打印机中文说明手册绝对有受益,参数设置,各位参数正确设置。
利用zebra命令打印条码的delphi实例
Zebra斑马条码打印机驱动 Zebra 110XiIII Xi4 600dpi Driver
斑马Zebra条码打印机驱动最新下载Seagull(7.1.9) Zebra 105 Zebra 105S (152 dpi) Zebra 105S (203 dpi) Zebra 105S (300 dpi) Zebra 105Se (152 dpi) Zebra 105Se (203 dpi) Zebra 105Se (300 dpi) Zebra ...
C# 直接通过zebra 指令控制斑马打印机,打印条码
本驱动程序适用斑马Zebra ZT210-220-230系列工业条码打印机,附打印机快速参考指南
斑马打印机开发 所用机器语言解释 分享下
斑马Z4说明书斑马Zebra ZM400条码打印机恢复出厂设置
最好用的Zebra打印机驱动,没有之一。 驱动程序所支持的系统规格: Windows XP SP2 或更高版本,Vista,Windows 7, Windows 8 和 Windows 8.1 的所有版本。 Windows Server 2003、2008、2008 R2, 2012 和 2012 R2...
条码打印机/斑马(zebra) ZM400/ZM600中文设置操作说明书