Prechádzať zdrojové kódy

1.修改打印边距参数。
2.修改excel图标问题

lhy 1 rok pred
rodič
commit
1dcf490f79

+ 9 - 7
PrintServer/src/main/java/com/jd/printserver/controller/PrintServerController.java

@@ -123,16 +123,18 @@ public class PrintServerController extends BaseController {
             log.info("接口参数excelUrl缺失:{}", excelUrl);
             return error("参数缺失");
         }
-        if (StringUtils.isEmpty(printConfig)) {
-            log.info("接口参数printConfig缺失:{}", printConfig);
-            return error("参数缺失");
-        }
-        PrintParam printParam = JSONUtil.toBean(printConfig,PrintParam.class);
         //PrintParam printParam = FileUtils.readFile2PrintParam();
-        log.info("初始化打印参数:{}", printParam);
+        PrintParam printParam = null;
+        if (StringUtils.isNotEmpty(printConfig)) {
+            printParam = JSONUtil.toBean(printConfig,PrintParam.class);
+        }
         if(printParam == null){
-            return error("初始化打印参数失败");
+            printParam = new PrintParam();
         }
+        log.info("初始化打印参数:{}", printParam);
+        printParam.setNullToDefault();
+
+        log.info("初始化打印参数(null设置为默认参数):{}", printParam);
         Map<String, String> urlMap = SeleniumUtils.getURLParameters(excelUrl);
         //添加打印区域参数
         if (printParam.getPrintArea() == 2) {

+ 90 - 6
PrintServer/src/main/java/com/jd/printserver/javafx/entity/PrintParam.java

@@ -1,5 +1,6 @@
 package com.jd.printserver.javafx.entity;
 
+import cn.hutool.core.util.StrUtil;
 import com.jd.printserver.common.constants.Constants;
 import lombok.Data;
 
@@ -10,13 +11,13 @@ public class PrintParam {
      * (print)
      * 作业名称
      */
-    private String jobName = "EI Auto Print Job  1111111";
+    private String jobName = "EI Auto Print Job";
 
     /**
      * (print)
      * 打印方向  0 自动(停用) 1 横向 2 纵向
      */
-    private Integer orientation = 2;
+    private Integer orientation = 1;
 
     /**
      * (print)
@@ -28,7 +29,7 @@ public class PrintParam {
      * (jacob)
      * 打印页面类型 1 A3  2 A4 ...
      */
-    private Integer pageType=1;
+    private Integer pageType=2;
     /**
      * (print/jacob)
      * 打印区域
@@ -63,7 +64,7 @@ public class PrintParam {
      * 缩放比例 0 自适应(停用)  x x%
      * 打印缩放fitToPages=4时,scale参数有用
      */
-    private Float scale = 0f;
+    private Float scale = 100f;
 
     /**
      * (print)
@@ -103,14 +104,14 @@ public class PrintParam {
      * (jacob)
      * 打印缩放  1 无打印缩放 2 将所有列打印在一页 3 将所有行打印在一页 4 自定义缩放
      */
-    private Integer fitToPages = 1;
+    private Integer fitToPages = 2;
 
     /**
      * 毫米转像素
      *  px = mm * 72 / 25.4
      * @return int
      */
-    public int mm2px(int value){
+    public int mm2px(double value){
         return (int)(value * Constants.PRINT_PX / Constants.MM2INCH);
     }
 
@@ -118,4 +119,87 @@ public class PrintParam {
         System.err.println(new PrintParam());
     }
 
+    public void setNullToDefault(){
+        PrintParam defaultPrintParam = new PrintParam();
+        if(StrUtil.isEmpty(this.jobName)){
+            this.jobName = defaultPrintParam.getJobName();
+        }
+
+        if(this.orientation == null || (this.orientation < 1)){
+            this.orientation = defaultPrintParam.getOrientation();
+        }
+
+        if(this.copies == null || copies < 1){
+            this.copies = defaultPrintParam.getCopies();
+        }
+
+        if(this.pageType == null || pageType < 1){
+            this.pageType = defaultPrintParam.getPageType();
+        }
+
+        if(this.width == null || width < 1){
+            this.width = defaultPrintParam.getWidth();
+        }
+
+        if(this.height == null || height < 1){
+            this.height = defaultPrintParam.getHeight();
+        }
+
+        if(this.marginLeft == null || marginLeft < 1){
+            this.marginLeft = defaultPrintParam.getMarginLeft();
+        }
+
+        if(this.marginTop == null || marginTop < 1){
+            this.marginTop = defaultPrintParam.getMarginTop();
+        }
+
+        if(this.marginRight == null || marginRight < 1){
+            this.marginRight = defaultPrintParam.getMarginRight();
+        }
+
+        if(this.marginBottom == null || marginBottom < 1){
+            this.marginBottom = defaultPrintParam.getMarginBottom();
+        }
+
+        if(this.unit == null || unit < 1){
+            this.unit = defaultPrintParam.getUnit();
+        }
+
+        if(this.sides == null || sides < 1){
+            this.sides = defaultPrintParam.getSides();
+        }
+
+        if(this.chromaticity == null || chromaticity < 1){
+            this.chromaticity = defaultPrintParam.getChromaticity();
+        }
+
+        if(this.pageRange == null || pageRange < 1){
+            this.pageRange = defaultPrintParam.getPageRange();
+        }
+
+        if(pageRange == 2 && (this.pageRangeStart == null || pageRangeStart < 1)){
+            this.pageRangeStart = defaultPrintParam.getPageRangeStart();
+        }
+
+        if(pageRange == 2 && (this.pageRangeEnd == null || pageRangeEnd < 1)){
+            this.pageRangeEnd = defaultPrintParam.getPageRangeEnd();
+        }
+
+        if(this.printArea == null || printArea < 1){
+            this.printArea = defaultPrintParam.getPrintArea();
+        }
+
+        if(printArea == 2 && StrUtil.isEmpty(printAreaValue)){
+            this.printAreaValue = defaultPrintParam.getPrintAreaValue();
+        }
+
+        if(this.fitToPages == null || fitToPages < 1){
+            this.fitToPages = defaultPrintParam.getFitToPages();
+        }
+
+        if(fitToPages == 4 && (this.scale == null || scale < 1)){
+            this.scale = defaultPrintParam.getScale();
+        }
+    }
+
 }

+ 9 - 5
PrintServer/src/main/java/com/jd/printserver/utils/JacobUtils.java

@@ -14,8 +14,12 @@ import java.math.BigDecimal;
 public class JacobUtils {
 
     public static void main(String[] args) {
-        String excelFilePath = "C:\\Users\\Administrator\\Desktop\\test.xlsx";
+        String excelFilePath = "G:\\WorkSoft\\STS\\workspace\\read_opc\\PrintServer\\20230923180901839_1705524545278054400.xlsx";
         PrintParam printParam = new PrintParam();
+        printParam.setMarginRight(20);
+        printParam.setMarginLeft(20);
+        printParam.setMarginBottom(20);
+        printParam.setMarginTop(20);
         excelToPDF(excelFilePath,printParam);
     }
 
@@ -155,13 +159,13 @@ public class JacobUtils {
         Dispatch.put(page, "PaperSize", new Integer(paperSize.getValue()));
 
         //左
-        Dispatch.put(page, "LeftMargin", new Variant(printParam.getMarginLeft()));
+        Dispatch.put(page, "LeftMargin", printParam.mm2px(printParam.getMarginLeft()));
         //上
-        Dispatch.put(page, "TopMargin", new Variant(printParam.getMarginTop()));
+        Dispatch.put(page, "TopMargin", printParam.mm2px(printParam.getMarginTop() ));
         //右
-        Dispatch.put(page, "RightMargin", new Variant(printParam.getMarginRight()));
+        Dispatch.put(page, "RightMargin", printParam.mm2px(printParam.getMarginRight() ));
         //下
-        Dispatch.put(page, "BottomMargin", new Variant(printParam.getMarginBottom()));
+        Dispatch.put(page, "BottomMargin", printParam.mm2px(printParam.getMarginBottom() ));
         //是否设置区域打印
         //Dispatch.put(page, "PrintArea", true);
         //打印方向 0 自动 1 横向 2 纵向

+ 10 - 12
PrintServer/src/main/java/com/jd/printserver/utils/PrintUtils.java

@@ -24,15 +24,13 @@ public class PrintUtils {
     public static final Logger log = LoggerFactory.getLogger(PrintUtils.class);
 
     public static void main(String[] args) throws PrinterException {
-        String excelFilePath = "C:\\Users\\Administrator\\Desktop\\a.xlsx";
+        String excelFilePath = "G:\\WorkSoft\\STS\\workspace\\read_opc\\PrintServer\\20230923180901839_1705524545278054400.xlsx";
 
         PrintParam printParam = new PrintParam();
-        printParam.setMarginTop(0);
-        printParam.setMarginLeft(0);
-        printParam.setMarginRight(0);
-        printParam.setMarginBottom(0);
-        printParam.setOrientation(0);
-        printParam.setScale(0f);
+        printParam.setMarginTop(50);
+        printParam.setMarginLeft(50);
+        printParam.setMarginRight(50);
+        printParam.setMarginBottom(50);
         JacobUtils.excelToPDF(excelFilePath, printParam);
         String outputFilePath = JacobUtils.getPdfFilePath(excelFilePath);
         PDFprint(outputFilePath, printParam);
@@ -48,10 +46,10 @@ public class PrintUtils {
             //单位:像素
             // 10mm边距, 对应 28px
             // 28px = 10mm * 72 / 25.4
-            int marginLeft = printParam.mm2px(printParam.getMarginLeft());
-            int marginTop = printParam.mm2px(printParam.getMarginTop());
-            int marginRight = printParam.mm2px(printParam.getMarginRight());
-            int marginBottom = printParam.mm2px(printParam.getMarginBottom());
+            int marginLeft = 0;//printParam.mm2px(printParam.getMarginLeft());
+            int marginTop = 0;//printParam.mm2px(printParam.getMarginTop());
+            int marginRight = 0;//printParam.mm2px(printParam.getMarginRight());
+            int marginBottom = 0;//printParam.mm2px(printParam.getMarginBottom());
             int paperWidth = printParam.mm2px(printParam.getWidth());
             int paperHeight = printParam.mm2px(printParam.getHeight());
             int printWidth = paperWidth - marginLeft -marginRight;
@@ -154,7 +152,7 @@ public class PrintUtils {
             // SHRINK_TO_FIT 如果需要,缩小图像以适应页面
             // STRETCH_TO_FIT 如果需要,拉伸图像以填充页面
             // SCALE_TO_FIT 根据需要拉伸或收缩图像以填充页面
-            PDFPrintable pdfPrintable = new PDFPrintable(document, Scaling.ACTUAL_SIZE);
+            PDFPrintable pdfPrintable = new PDFPrintable(document, Scaling.SHRINK_TO_FIT);
 
 
             Paper paper = new Paper();

+ 2 - 2
PrintServer/src/main/resources/static/cy-sheet/excel.js

@@ -22,7 +22,7 @@ function exportSheetExcel(luckysheet, reportChartList, name = "file") { // 参
 			// saveFile(buf, name);
 			uploadExcel(buf, uploadpath+"?randomId="+ getURLParameter('randomId') )
 		})
-	},2000);
+	},500);
 
 }
 
@@ -1664,7 +1664,7 @@ var setStyleAndValue = function(cellArr, worksheet) {
 		}
 		const dbrow = worksheet.getRow(rowid + 1);
 		//设置单元格行高,默认乘以1.2倍
-		dbrow.height = luckysheet.getRowHeight([rowid])[rowid] * 1.2;
+		dbrow.height = luckysheet.getRowHeight([rowid])[rowid] * 0.9;
 		row.every(function(cell, columnid) {
 			if (!cell) return true;
 			if (status) {

+ 1 - 0
PrintServer/src/main/resources/static/cy-sheet/index.html

@@ -27,6 +27,7 @@
 		<script src="lib/Luckysheet-2.1.13/luckysheet.umd.js"></script>
 		<script src="lib/util.js"></script>
 		<script src="lib/chart.js"></script>
+		<script src="lib/html2canvas.min.js"></script>
 		<script src="lib/exceljs.min.js"></script>
 		<script src="excel.js"></script>
 		<script src="index.js"></script>

+ 8 - 4
PrintServer/src/main/resources/static/cy-sheet/lib/chart.js

@@ -74,10 +74,14 @@ function insertLuckysheetEChart({
 	S.on('finished', function() {
 		const imgBase = n(`.${u} canvas`)[0].toDataURL('image/png');
 		console.log(imgBase);
-		sessionStorage.setItem(e.id, JSON.stringify({
-			src: imgBase,
-			addr: toExcelColumn(h[0] + 1) + (g[0] + 1) + ":" + toExcelColumn(h[h.length - 1] + 1) + (g[g.length - 1] + 1)
-		}));
+		html2canvas(n(`.${u}`)[0]).then(function(canvas) {
+			// 将 Canvas 转换为图像(Base64 数据)
+			const imageBase64 = canvas.toDataURL('image/png');
+			sessionStorage.setItem(e.id, JSON.stringify({
+				src: imageBase64,
+				addr: toExcelColumn(h[0] + 1) + (g[0] + 1) + ":" + toExcelColumn(h[h.length - 1] + 1) + (g[g.length - 1] + 1)
+			}));
+		})
 	})
 	S.setOption(f);
 	let k = S.getConnectedDataURL({

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 19 - 0
PrintServer/src/main/resources/static/cy-sheet/lib/html2canvas.min.js


Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov