当前位置: 首页 > news >正文

免费注册网站云空间网站开发前台后台怎么交互

免费注册网站云空间,网站开发前台后台怎么交互,品牌推广营销策划公司,大专学计算机我后悔了最近在项目中接手了一个比较有挑战性的模块——用斑马打印机将需要打印的内容打印出来。苦苦折腾了两天#xff0c;总算有所收获#xff0c;就发到网上来骗骗分数-_-|| 项目中使用的打印机型号为GX430t的打印机#xff0c;接手的时候#xff0c;自己对于打印机这块儿是眼前… 最近在项目中接手了一个比较有挑战性的模块——用斑马打印机将需要打印的内容打印出来。苦苦折腾了两天总算有所收获就发到网上来骗骗分数-_-|| 项目中使用的打印机型号为GX430t的打印机接手的时候自己对于打印机这块儿是眼前一抹黑啥都不知道。没办法一步步来。 首先尝试使用WPF中的PrintDialog里面的PrintVisual和PrintDocument方法打印机是一点反应都没有最后得到的结论是斑马打印机不支持MS的XPS文档格式所以使用WPF来排版后进行驱动打印就不要想了不可能这条路到这里就断了。 然后就想到有没有SDK可以直接进行打印就找到了斑马打印机的技术支持还是个妹子我提了一下妹子说没有开发包可以用然后就贴了一个网址给我网址就是这条C#调用斑马打印机打印条码标签(含源码)(支持COM、LPT、USB、TCP连接方式和ZPL、EPL、CPCL指令)_c#控制斑马zebra打印机源码-CSDN博客。可能我的水平有限反正我感觉啰啰嗦嗦一大堆实际的东西没多少不过关键点倒是提了出来使用图像或者指令进行打印。我首先想到的是使用指令进行打印就去找妹子要了Zebra的技术手册一打开就吓尿了尼玛1000页的东西我只是用一下打印机又不是去帮你们打印机开发驱动当时心里那个抵触啊。但是没办法得看呐就仔细看了一些找到打印的指令试了试有东西能打出来当时感觉挺满足的。唯一比较纠结的就是打印机支持的字体和字体本身的一些设置比如粗体、斜体等等资料里面没找到然后去问了下斑马的技术支持得知斜体字可以打但是不清楚有没有对应的指令。没办法项目里面用的字体多还有各种斜体神马的玩WPF的都知道那么多属性一个个设置下来光字体类型斑马就搞不定。 既然直接使用指令打印行不通就考虑使用图像打印图像又跟多媒体挂钩了尼玛真是够了。因为玩过链接里面的仁兄提到的获取打印模板的命令的方法。就是在安装好打印机驱动后手动创建一个新的本地端口并在打印机设置中将打印机端口设为新建的端口。使用Zebra的创建模板的软件创建好你想要的东西然后打印就能在你创建的端口文件中得到你想要的指令序列其实模板里面使用的就是图像打印。指令序列有了对照手册查询相应的指令就能得到你想要的东西。 这里说的图像打印并不是我们平时说的位图或者矢量图手册里面说是叫GRF格式的图像仔细研究了一下其实就是缀着这么个名字而已里面需要的数据其实就是图像矩阵。而且图像矩阵中的像素表示法是一个字节表示8个像素也就是一个bit位0或1表示一个像素的颜色黑或白。看到这里脑子里有了思路将要打印的内容进行排版-将排版好的数据转换成位图-将位图中的数据根据需要转换成指令中要求的格式-交给打印机打印。这样一来就没有什么打印机对字体本身的限制了。思路有了剩下的就是方法。 排版比较简单这个玩过自定义控件的人都知道使用DrawingVisual可以构建自己想要的Visual。然而将Visual转换成位图就难住我了纠结了一个下午终于从网上找到了一个东西----RenderTargetBitmap。这个类可以将你的Visual转换成位图。 下面就是将位图数据转换成指令中的图像数据咳咳数学不够好在分析数据的时候搞错了一个地方让我纠结了好长时间不过总体来说还是解决了。说一下思路 通过RenderTargetBitmap类的CopyPixels方法将像素数据拷贝出来。因为这个位图创建的时候只是作为一个中间的过程所以格式可以随便选我是选择了PixelFormats.Pbgra32格式比较简单。这个格式的图像像素是用4个字节表示依次为Blue、Green、Red、Alpha。拷贝的时候作为缓冲区的数组需要将长度设为像素数的4倍。像素拷贝的时候会有一个“跨距”的东西。这个表示的是图像中一行中数据的字节数必须为4的倍数。也就是取大于或等于真实值的最小的能够被4整除的数值。获取到数据就可以对数据进行整理了遍历整个数组如果当前像素的颜色值不为白色或者透明色就将目标数组中的bit位之一目标数组中用bit位表示对应像素的值将获得的数组转换成string串然后将该串插入到指令序列中相应的位置就得到对应的指令。 说到这里其实说的也差不多了顺便说下WPF里面的打印支持真的很强大给打印机传递指令的操作也很简单具体见下面的代码。 这里是源代码 /// summary         /// 获取绘制Visual的命令         /// /summary         /// param namevisual要获取的Visual/param         /// param namepixelWidth像素宽度/param         /// param namepixelHeight像素高度/param         /// param namedpiX横向dpi/param         /// param namedpiY纵向dpi/param         /// param nameoffsetX横坐标偏移量单位为像素数/param         /// param nameoffsetY纵坐标偏移量单位为像素数/param         /// returns/returns         private string GetPrintZPL(Visual visual, int pixelWidth, int pixelHeight, double dpiX, double dpiY, int offsetX, int offsetY)         {             string ret string.Empty;             //构建图片             RenderTargetBitmap bmp new RenderTargetBitmap(pixelWidth, pixelHeight, dpiX, dpiY, PixelFormats.Pbgra32); #if TEST //test             DrawingVisual newVisual new DrawingVisual();             DrawingContext dc newVisual.RenderOpen();             dc.DrawEllipse(Brushes.Black, new Pen(), new Point(bmp.Width / 2, bmp.Height / 2), bmp.Width / 2, bmp.Height / 2);             dc.Close();             visual null;             bmp.Render(newVisual); #else             bmp.Render(visual); #endif             byte[] datas new byte[bmp.PixelWidth * bmp.PixelHeight * 4];             bmp.CopyPixels(datas, bmp.PixelWidth * 4, 0);//获取图像数据             int rowBytes (pixelWidth 7) / 8;             byte[] targetDatas new byte[rowBytes * bmp.PixelHeight];             for (int i 0; i bmp.PixelHeight; i) //数据调整并将数据             {                 for (int j 0; j bmp.PixelWidth; j)                 {                     byte blue datas[i * bmp.PixelWidth * 4 j * 4 0];                     byte green datas[i * bmp.PixelWidth * 4 j * 4 1];                     byte red datas[i * bmp.PixelWidth * 4 j * 4 2];                     byte alpha datas[i * bmp.PixelWidth * 4 j * 4 3];                     if (blue 0 green 0 red 0)                     {                         if (alpha 255)//alpha也是0则为透明色                         {                             byte cur 1;                             cur (byte)(cur (7 - j % 8));                             targetDatas[i * rowBytes j / 8] | cur;                         }                     }                     else                     {                         if (!(blue 255 green 255 red 255 alpha 255))//全为255则表示白色                         {                             byte cur 1;                             cur (byte)(cur (7 - j % 8));                             targetDatas[i * rowBytes j / 8] | cur;                         }                     }                 }             }             ret string.Format(^XA~TA000~JSN^LT0^MNW^MTT^PON^PMN^LH0,0^JMA^PR3,3~SD29^JUS^LRN^CI0^XZ~DG000.GRF,{0},{1},{2}^XA^MMT^PW260^LL0189^LS0^FT0,192^FO{3},{4},^XG000.GRF,1,1^FS^PQ1,0,1,Y^XZ^XA^ID000.GRF^FS^XZ, targetDatas.Length, rowBytes, BitConverter.ToString(targetDatas).Replace(-, string.Empty), offsetX, offsetY);             return ret;         }
http://www.w-s-a.com/news/559328/

相关文章:

  • 万全网站建设wl17581做旅游广告在哪个网站做效果好
  • 钢城网站建设安徽省住房和城乡建设厅网站
  • 协会网站建设方案大良营销网站建设好么
  • 网站引导页一般是什么格式网页设计师的应聘岗位
  • 构建网站空间网站开发与维护招聘
  • 网站建设的网页怎么做番禺网站开发哪家强
  • 网站开发是程序员吗百度网盘下载电脑版官方下载
  • 中国电力建设集团网站杭州网站运营
  • 大气网站模板下载效果好的网站建设公
  • 住房和城乡建设部网站打不开重庆市建设工程信息网官网30系统
  • 做美食软件视频网站大数据精准营销策略
  • 网站后台密码错误陕西大型网站建设
  • 网站建站中关键字搜索怎么弄wordpress 后台插件无法访问
  • 做减肥餐的网站网站优化注意事项
  • 做网站做推广有效果吗专门做淘宝优惠券的网站
  • 菜谱网站开发系统ps做网页效果图
  • 徐州品牌网站建设wordpress多重筛选页面
  • 网站改版提示无需改版个人怎么申请微信小程序
  • 电子商务网站建设的简要任务执行书可以注册免费网站
  • 公司网站设计需要什么豪爵铃木摩托车官网
  • 建收费网站合肥地区网站制作
  • 自己做头像网站小网站建设公司
  • 电子商务建设与网站规划wordpress linux安装
  • wordpress新手建站win8网站模版
  • 网站的简单布局孝感 商务 网站建设
  • 湖北手机版建站系统价格优化网站内容
  • 网站后台登录不显示验证码软文发布网站
  • 企业微网站建设方案收费的网站如何免费
  • 平昌县建设局网站中国500强企业有哪些
  • 网站开发制作的流程是什么网页打不开显示不安全怎么办