TonyKang 4 年之前
父節點
當前提交
99fd25ae05
共有 2 個文件被更改,包括 11 次插入26 次删除
  1. 2 20
      app/public/report/js/rpt_jspdf.js
  2. 9 6
      app/view/report/index.ejs

+ 2 - 20
app/public/report/js/rpt_jspdf.js

@@ -274,26 +274,7 @@ let JpcJsPDFHelper = {
                 for (let val of orgValues) {
                     let actW = doc.getTextWidth(val);
                     if (actW > validAreaTxtWidth) {
-                        let lastIdx = 0;
-                        let hasEnd = false;
-                        while (!hasEnd) {
-                            let sCnt = 0;
-                            while (sCnt < val.length) {
-                                let cnt = 1;
-                                //支持HTML5的浏览器全是unicode数据,无需特别处理
-                                if (doc.getTextWidth(val.substring(lastIdx, sCnt + cnt)) > validAreaTxtWidth) {
-                                    vals.push(val.substring(lastIdx, sCnt));
-                                    lastIdx = sCnt;
-                                    sCnt += cnt;
-                                } else {
-                                    sCnt += cnt;
-                                }
-                                if (sCnt >= val.length) {
-                                    hasEnd = true;
-                                    vals.push(val.substring(lastIdx, val.length));
-                                }
-                            }
-                        }
+                        vals = vals.concat(private_splitString(val, validAreaTxtWidth, doc));
                     } else {
                         vals.push(val);
                     }
@@ -369,6 +350,7 @@ let JpcJsPDFHelper = {
                             if (values[i][j] === ' ') spaceIdxArr.push(j);
                         }
                     }
+                    // 但有了_splitValues()处理后,这个加额外空格好像没必要了,但是不加又不好(比如'年 月 日'这种文字) ------------
                     for (let j = spaceIdxArr.length - 1; j >= 0; j--) {
                         values[i] = values[i].slice(0, spaceIdxArr[j]) + ' ' + values[i].slice(spaceIdxArr[j]);
                     }

+ 9 - 6
app/view/report/index.ejs

@@ -597,16 +597,16 @@
         const _createStdWidth = function(dftFontHeight, chkFontName) {
             let dftOthers = '';
             ctx.font = dftOthers + dftFontHeight + "px 宋体";
-            rst[chkFontName]['normal']['_' + dftFontHeight + '_ascii'] = ctx.measureText('_');
-            rst[chkFontName]['normal']['_' + dftFontHeight + '_chn'] = ctx.measureText('一');
+            rst[chkFontName]['normal']['_' + dftFontHeight + '_ascii'] = ctx.measureText('_').width;
+            rst[chkFontName]['normal']['_' + dftFontHeight + '_chn'] = ctx.measureText('一').width;
             dftOthers = 'bold';
             ctx.font = dftOthers + dftFontHeight + "px 宋体";
-            rst[chkFontName][dftOthers]['_' + dftFontHeight + '_ascii'] = ctx.measureText('_');
-            rst[chkFontName][dftOthers]['_' + dftFontHeight + '_chn'] = ctx.measureText('一');
+            rst[chkFontName][dftOthers]['_' + dftFontHeight + '_ascii'] = ctx.measureText('_').width;
+            rst[chkFontName][dftOthers]['_' + dftFontHeight + '_chn'] = ctx.measureText('一').width;
             dftOthers = 'italic';
             ctx.font = dftOthers + dftFontHeight + "px 宋体";
-            rst[chkFontName][dftOthers]['_' + dftFontHeight + '_ascii'] = ctx.measureText('_');
-            rst[chkFontName][dftOthers]['_' + dftFontHeight + '_chn'] = ctx.measureText('一');
+            rst[chkFontName][dftOthers]['_' + dftFontHeight + '_ascii'] = ctx.measureText('_').width;
+            rst[chkFontName][dftOthers]['_' + dftFontHeight + '_chn'] = ctx.measureText('一').width;
         }
         try {
             ctx.save();
@@ -617,8 +617,11 @@
             }
         } finally {
             ctx.restore();
+            return rst;
         }
     }
 
+    //const STD_TXT_WIDTH = getStdTxtWidthByFont(document.getElementById("rptCanvas").getContext('2d')); //这个可以给后台用(if need it)
+
 </script>