From f65443d8abeaedc9d102324565e8368e7c9d90c8 Mon Sep 17 00:00:00 2001
From: 郑永安 <zyazyz250@sina.com>
Date: 星期一, 19 六月 2023 14:41:54 +0800
Subject: [PATCH] commit

---
 src/main/java/com/gk/firework/Domain/Vo/ZplUtil.java |   81 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 81 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/gk/firework/Domain/Vo/ZplUtil.java b/src/main/java/com/gk/firework/Domain/Vo/ZplUtil.java
new file mode 100644
index 0000000..cc40290
--- /dev/null
+++ b/src/main/java/com/gk/firework/Domain/Vo/ZplUtil.java
@@ -0,0 +1,81 @@
+package com.gk.firework.Domain.Vo;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @author : jingjy
+ * @date : 2021/7/27 16:41
+ * @Description: 用于ZPL把文字转换为图片,但是生成数据太大,废弃
+ * @deprecated
+ */
+public class ZplUtil {
+    private byte[] dotFont;
+    private String sPrt = "";
+    private String sPrtBuffer ="";
+
+    public String getCharPicture(String str, int x, int y, int h, int w, int b){
+        printChineseChar(str,x,y,h,w,b);
+        return sPrtBuffer+sPrt;
+    }
+
+    public ZplUtil() throws Exception {
+        String path = "E:\\ts24.lib";
+        File file = new File(path);
+        FileInputStream fis = new FileInputStream(file);
+        dotFont = new byte[fis.available()];
+        fis.read(dotFont);
+        fis.close();
+    }
+
+    private void printChineseChar(String str, int x, int y, int h, int w, int b) {
+        byte[] ch = str2bytes(str);
+        for (int off = 0; off < ch.length;) {
+            if (((int) ch[off] & 0x00ff) >= 0xA0) {
+                int qcode = ch[off] & 0xff;
+                int wcode = ch[off + 1] & 0xff;
+                sPrtBuffer = sPrtBuffer
+                        + String.format("^FO%d,%d^XG0000%01X%01X,%d,%d^FS", x,
+                        y, qcode, wcode,b,b);
+                sPrt +=  String.format("~DG0000%02X%02X,00072,003,", qcode,
+                        wcode);
+                qcode = (qcode + 128 - 32) & 0x00ff;
+                wcode = (wcode + 128 - 32) & 0x00ff;
+                int offset = (qcode - 16) * 94 * 72 + (wcode - 1)
+                        * 72;
+                for (int j = 0; j < 72; j += 3) {
+                    qcode = (int) dotFont[j + offset] & 0x00ff;
+                    wcode = (int) dotFont[j + offset + 1] & 0x00ff;
+                    int qcode1 = (int) dotFont[j + offset + 2] & 0x00ff;
+                    sPrt +=  String.format("%02X%02X%02X", qcode, wcode,
+                            qcode1);
+                }
+                x = x + 25*b;
+                off = off + 2;
+            } else if (((int) ch[off] & 0x00FF) < 0xA0) {
+                ;
+                printChar(String.format("%c",ch[off]), x,  y, h, w);
+                x = x + 15;
+                off++;
+            }
+        }
+    }
+
+    private void printChar(String str, int x, int y, int h, int w) {
+        sPrtBuffer +="^FO"+x+","+y+"^A0,"+h+","+w+"^FD"+str+"^FS";
+    }
+
+    private byte[] str2bytes(String s) {
+        if (null == s || "".equals(s)) {
+            return null;
+        }
+        byte[] abytes = null;
+        try {
+            abytes = s.getBytes("gb2312");
+        } catch (UnsupportedEncodingException ex) {
+
+        }
+        return abytes;
+    }
+}

--
Gitblit v1.9.2