Эх сурвалжийг харах

3.4.4 update-20250514 内嵌字体

xiaofei 1 сар өмнө
parent
commit
0ca4220491

+ 13 - 8
distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/PdfFillUtils.java

@@ -1,26 +1,23 @@
 package com.qmth.distributed.print.business.util;
 
-import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
-import com.itextpdf.awt.AsianFontMapper;
 import com.itextpdf.text.*;
+import com.itextpdf.text.io.StreamUtil;
 import com.itextpdf.text.pdf.*;
 import com.qmth.distributed.print.business.bean.dto.PdfPackageDto;
 import com.qmth.distributed.print.business.bean.dto.PdfSignDto;
 import com.qmth.distributed.print.business.entity.BasicTemplate;
 import com.qmth.distributed.print.business.enums.RequiredFieldsEnum;
-import com.qmth.distributed.print.business.service.PrintCommonService;
 import com.qmth.teachcloud.common.bean.examRule.CodeNameEnable;
 import com.qmth.teachcloud.common.bean.examRule.CodeNameEnableValue;
-import com.qmth.teachcloud.common.contant.SpringContextHolder;
-import com.qmth.teachcloud.common.contant.SystemConstant;
-import com.qmth.teachcloud.common.enums.ClassifyEnum;
-import org.apache.commons.collections4.CollectionUtils;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.util.FileUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.File;
+import java.io.InputStream;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.List;
@@ -45,12 +42,17 @@ public class PdfFillUtils {
     public static Font textFont10;
     public static Font textFont9;
     public static Font textFont8;
+    public static BaseFont bfChinese;
 
     // 静态代码块
     static {
         try {
             //解决中文不显示问题
-            BaseFont bfChinese = BaseFont.createFont(AsianFontMapper.ChineseSimplifiedFont, AsianFontMapper.ChineseSimplifiedEncoding_H, BaseFont.NOT_EMBEDDED);
+//            BaseFont bfChinese = BaseFont.createFont(AsianFontMapper.ChineseSimplifiedFont, AsianFontMapper.ChineseSimplifiedEncoding_H, BaseFont.EMBEDDED);
+            InputStream fontStream = FileUtil.getStream("fonts/SimSun.ttf");
+            // 将InputStream转换为byte数组
+            byte[] fontData = StreamUtil.inputStreamToArray(fontStream);
+            bfChinese = BaseFont.createFont("SimSun.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED, BaseFont.CACHED, fontData, null);
             textFont28 = new Font(bfChinese, 28);
             textFont24 = new Font(bfChinese, 24);
             textFont22 = new Font(bfChinese, 22);
@@ -64,6 +66,7 @@ public class PdfFillUtils {
             textFont8 = new Font(bfChinese, 8);
         } catch (Exception e) {
             e.printStackTrace();
+            throw ExceptionResultEnum.ERROR.exception(e.getMessage());
         }
     }
 
@@ -482,6 +485,8 @@ public class PdfFillUtils {
         //设置字体
         if (hideCode) {
             barcode128.setFont(null);
+        } else {
+            barcode128.setFont(bfChinese);
         }
         return barcode128.createImageWithBarcode(writer.getDirectContent(), barColor, textColor);
     }

BIN
distributed-print/src/main/resources/fonts/SimSun.ttf