文档章节

佳博标签打印问题-

mellen
 mellen
发布于 05/23 17:29
字数 645
阅读 5
收藏 0

由于网页打印不行,要么sdk 写成activex,这样浏览器支持又有局限。

因此,采用客户端编写打印服务启动,定时轮询服务端打印队列,从服务的获取打印队列进行打印。

服务端web 点击打印,讲打印数据写到打印队列的表中。

打印服务客户端程序 调用TSCLIB.dll 进行打印。

delphi 代码:


//打印
procedure printcp(code: string; cl: string; lb: string; cd: string; gg: string; bz: string; lh: string; yzh: string);
var
  i: Integer;
  pStr: PChar;

begin

 

  //openport('Gprinter  GP-2120T');
  openport(PChar(port));
  clearbuffer;
  setup('50', '40', '2', '9', '0', '2', '0');
  sendcommand('DIRECTION 1');
  windowsfont(strtoint(x), strtoint(y1) - 30, 25, 0, 2, 0, 'Arial', pchar('南京xx金属材料科技有限公司'));
  barcode(x, y1, '39', '64', '1', '0', '1', '4', pchar(code));
  windowsfont(strtoint(x), strtoint(y1) + 90, 25, 0, 2, 0, 'Arial', pchar('材料:' + cl + '  类别:' + lb));
  windowsfont(strtoint(x), strtoint(y1) + 120, 25, 0, 2, 0, 'Arial', pchar('产地:' + cd));
  windowsfont(strtoint(x), strtoint(y1) + 150, 25, 0, 2, 0, 'Arial', pchar('规格:' + gg + '  标准:' + bz));
  windowsfont(strtoint(x), strtoint(y1) + 180, 25, 0, 2, 0, 'Arial', pchar('炉批号:' + lh));
  windowsfont(strtoint(x), strtoint(y1) + 210, 25, 0, 2, 0, 'Arial', pchar('移植号:' + yzh));

  printlabel('1', '1');
  closeport;

end;

 

//获取数据 打印job
procedure TForm1.printjob(url: string);
var
  HttpClient: TIdHttp;
  ParamList: TStringList;
  ResponseStr: string;
  aJson,jo,jt:ISuperObject;
  code, cl,lb,cd, gg, bz,lh,yzh: string;
  gid:string;
  i:integer;
begin

   url:='/getPrintJob.shtml';
  //获取远程打印队列
  try
    HttpClient := TIdHttp.Create(nil);
    ParamList := TStringList.Create;
    ParamList.Add('');
    ResponseStr := HttpClient.Post(basepath + url, ParamList);

    if ResponseStr ='[]' then begin
        exit;
    end;

    //mmo1.Lines.Add(ResponseStr);

    ResponseStr:=StringReplace (ResponseStr, '[', '', [rfReplaceAll]);
    ResponseStr:=StringReplace (ResponseStr, ']', '', [rfReplaceAll]);
    aJson:=SO(ResponseStr);

    //[{"id":20,"goodscode":"GC25","material":"316/316L","typename":"绠℃潗","company":"涔呯珛","model":"89*4","standard":"GB/T14976-2012","furnacenum":"YX1710-148","batchnum":"171L11040","verno":"2100019759-3","isDel":1,"createUserId":1,"createTime":"2019-05-23 15:28:22.0"}]

    gid:=ajson.S['id'];
    code:=ajson.S['goodscode'];
    cl:=ajson.S['material'];
    lb:=ajson.S['typeName'];
    cd:=ajson.S['company'];
    gg:=ajson.S['model'];
    bz:=ajson.S['standard'];
    lh:=ajson.S['furnacenum']+'/'+ajson.S['batchnum'];

    yzh:=ajson.S['verno'];

    HttpClient.Free;


    //判断是否在本地打印队列里
     i:=lstjob.Items.IndexOf(gid);
     if i>=0 then begin
          // 打印
          printcp(code,cl,lb,cd,gg,bz,lh,yzh);

          //删除远程队列
          deljob(gid);

          //删除本地
          lstjob.Items.Delete(i);

     end else begin   //如果不在打印队列
          lstjob.Items.Add(gid);
          i:=lstjob.Items.IndexOf(gid);

          printcp(code,cl,lb,cd,gg,bz,lh,yzh);
          //删除远程队列
          if deljob(gid) then
               lstjob.Items.Delete(i);   //删除本地
     end;
    //


  except
     HttpClient.Free;
  end;

 

 

end;

 

function deljob(id: string):boolean;
var
  HttpClient: TIdHttp;
  ParamList: TStringList;
  ResponseStr: string;

begin
  result:=true;

  try
    HttpClient := TIdHttp.Create(nil);
    ParamList := TStringList.Create;
    ParamList.Add('ids='+id);
    ResponseStr := HttpClient.Post(basepath +'/printJob/DelPrintJob.shtml', ParamList);
    HttpClient.Free;

  except
    result:=false;
    HttpClient.Free;

  end;
end;

© 著作权归作者所有

上一篇: 项目管理要点
下一篇: serverless 的缺点
mellen
粉丝 10
博文 130
码字总数 74053
作品 1
南京
部门经理
私信 提问
快递、外卖、标签这类做过打印的同学帮个忙阿!

在互联网上发布了一个web浏览器的应用(linux环境 JAVA平台) 用户利用网络和浏览器登录系统后,怎么在页面上直接进行打印标签操作{ 比如佳博蓝牙\USB连接的打印机就可以打印出标签(标签数据来自...

车车来咯
2018/05/12
267
2
通过linux 的pc端网站,连接(usb或者内网的)标签打印机进行打印 !

在互联网上发布了一个web浏览器的应用(linux环境 JAVA平台) 用户利用网络和浏览器登录系统后,怎么在页面上直接进行打印标签操作{ 比如佳博蓝牙\USB连接的打印机就可以打印出标签(标签数据来自...

车车来咯
2018/05/12
362
2
ios连接佳博蓝牙切刀打印机 第一次打印出现乱码

佳博蓝牙切刀打印机 第一次打印图片出现乱码 有时候打印紊乱

Surjur
2016/08/26
9
5
热敏打印机怎么设置右边距为0

热敏打印机,佳博的,使用word打印,怎么能让打印内容偏向最右边呢,右边一点边距都没有,像图片里的一样。我在word文件里设置右边距为0,打印出来发现右边还是有2毫米左右的边距。

rgone
2017/03/27
79
0
【Python】Python爬虫包 BeautifulSoup 学习—— bs基本对象与函数

四大对象种类 BeautifulSoup将复杂HTML文档转换成一个复杂的树形结构。 每个节点都是Python对象,我们只用根据节点进行查询就可以了,因为解析工作交给了框架本身。所有对象可以归纳为4种: T...

CS青雀
02/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

rocketmq之源码分析阶段总结(二十一)

RocketMQ是队列模型的消息中间件,具有高性能,高可靠,高实时,分布式的特点。同时支持分布式事物的两阶段提交,实现在分布式环境的事物操作。 1,nameserv是分布式的部署,并且相互之间不通...

wangshuaixin
28分钟前
2
0
小猿圈linux之在mac上安装 docker

docker极大提高了应用的运行效率,降低了云计算资源供应的成本,同时让应用的部署、测试和分发都变得前所未有的高效和轻松!docker是一个容器,不像kvm,他是真实的系统,启动时,KVM消耗的资...

小猿圈加加
33分钟前
1
0
spring aop 代理private方法 报错的问题分析

spring aop 代理private方法报空指针的问题 这两天做aop切面日志时,发现private方法报空指针。 原切入点配置如下: @Pointcut("@within(org.springframework.web.bind.annotation.RestC...

my_juke
38分钟前
2
0
c 基础教程六:c 循环结构

有的时候,我们可能需要多次执行同一块代码,c 语言提供了如下几种循环,各有特色。 while 循环 for 循环 do-while 循环 while 循环 只要给定的条件为真,C 语言中的 while 循环语句会重复执...

故城以南丶思念不安
57分钟前
4
0
spark 常见操作

为spark DataFrom 添加一个为 空的新列,使用UDF函数 想产生一个IntegerType类型列为null的DataFrame该怎么做。 import org.apache.spark.sql.functions._import org.apache.spark.sql.type...

蜉先生
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部