|
|
|
@ -6,8 +6,7 @@ import lombok.extern.slf4j.Slf4j; |
|
|
|
|
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.math.RoundingMode; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.List; |
|
|
|
import java.util.*; |
|
|
|
|
|
|
|
import com.google.zxing.*; |
|
|
|
import com.google.zxing.client.j2se.MatrixToImageWriter; |
|
|
|
@ -17,10 +16,6 @@ import javax.imageio.ImageIO; |
|
|
|
import java.awt.image.BufferedImage; |
|
|
|
import java.io.ByteArrayInputStream; |
|
|
|
import java.io.ByteArrayOutputStream; |
|
|
|
import java.util.Collections; |
|
|
|
import java.util.HashMap; |
|
|
|
import java.util.Locale; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.regex.Pattern; |
|
|
|
|
|
|
|
/** |
|
|
|
@ -29,7 +24,7 @@ import java.util.regex.Pattern; |
|
|
|
*/ |
|
|
|
@Slf4j |
|
|
|
public class ZplGenerator { |
|
|
|
private static final String DEFAULT_FONT_FILE = "ARIAL UNICODE MS.TTF"; |
|
|
|
private static final String DEFAULT_FONT_FILE = "SIMSUN.TTF"; |
|
|
|
/** |
|
|
|
* 越南文常用字符覆盖: |
|
|
|
* - 基础越南文字母:Ă/ă Â/â Ê/ê Ô/ô Ơ/ơ Ư/ư Đ/đ |
|
|
|
@ -45,7 +40,7 @@ public class ZplGenerator { |
|
|
|
private static final int VIETNAMESE_BITMAP_Y_OFFSET = -5; |
|
|
|
/** |
|
|
|
* 兼容既有标签:默认字体仍绑定J槽位。 |
|
|
|
* 历史模板大量依赖 default -> ^CWJ,E:* 的行为,默认字体改为 ARIAL UNICODE MS 后仍保持 J 槽位, |
|
|
|
* 历史模板大量依赖 default -> ^CWJ,E:* 的行为,默认字体使用 SIMSUN.TTF,仍保持 J 槽位, |
|
|
|
* 避免中文预览/打印丢失。 |
|
|
|
*/ |
|
|
|
private static final String DEFAULT_FONT_LETTER = "J"; |
|
|
|
@ -165,7 +160,7 @@ public class ZplGenerator { |
|
|
|
if (Boolean.TRUE.equals(element.getIsChecked())) { |
|
|
|
zpl.append("^FO").append(x - 60).append(",").append(y) |
|
|
|
.append("^GB45,45,2,B,0^FS ^FO").append(x - 50).append(",").append(y + 10) |
|
|
|
.append("^AJN,35,35^FD√^FS\n"); |
|
|
|
.append("^CI28^CWJ,E:").append(DEFAULT_FONT_FILE).append("^AJN,35,35^FD√^FS\n"); |
|
|
|
} |
|
|
|
|
|
|
|
// 业务原因:越南文在部分机型的TTF字形渲染存在缺字,改走位图可规避固件字形缺失。 |
|
|
|
@ -411,7 +406,7 @@ public class ZplGenerator { |
|
|
|
|
|
|
|
private String resolveBitmapFontFamily(String fontFamily) { |
|
|
|
if (fontFamily == null || fontFamily.trim().isEmpty() || "default".equalsIgnoreCase(fontFamily.trim())) { |
|
|
|
return "Arial Unicode MS"; |
|
|
|
return "SimSun"; |
|
|
|
} |
|
|
|
String normalized = fontFamily.trim(); |
|
|
|
if (normalized.toUpperCase(Locale.ROOT).endsWith(".TTF")) { |
|
|
|
|