Przeglądaj źródła

Merge branch '1.0.0_online' of http://smartcost.f3322.net:3000/SmartCost/ConstructionCost into 1.0.0_online

zhangweicheng 6 lat temu
rodzic
commit
113eaf6b5f

+ 2 - 0
.gitignore

@@ -7,3 +7,5 @@ tmp/*.pdf
 tmp/*.jsp
 test/unit/logs
 *.log
+modules/reports/util/pdf_base_files/*.ttf
+modules/reports/util/pdf_base_files/*.ttc

+ 4 - 2
modules/reports/rpt_component/jpc_flow_tab.js

@@ -10,6 +10,7 @@ let JpcTextHelper = require('./helper/jpc_helper_text');
 let JpcCommonOutputHelper = require('./helper/jpc_helper_common_output');
 let JpcAreaHelper = require('./helper/jpc_helper_area');
 let PDFKit = require('pdfkit');
+let fontUtil = require('../util/rpt_font_util');
 
 let JpcFlowTabSrv = function(){};
 JpcFlowTabSrv.prototype.createNew = function(){
@@ -316,10 +317,11 @@ JpcFlowTabSrv.prototype.createNew = function(){
                         if (values.length > rst) rst = values.length;
                         let font = private_get_font(tab_field[JV.PROP_FONT]);
                         if (font) {
-                            doc.font(__dirname.slice(0, __dirname.length - 14) + '/util/pdf_base_files/simsun_1.ttf');
+                            let fontFile = __dirname.slice(0, __dirname.length - 14) + '/util/pdf_base_files/' + fontUtil.getActualFont(font[JV.FONT_PROPS[0]], (font[JV.FONT_PROPS[3]] === 'T'), (font[JV.FONT_PROPS[4]] === 'T')) + '.ttf';
+                            doc.font(fontFile);
                             doc.fontSize(parseInt(font[JV.FONT_PROPS[JV.FONT_PROP_IDX_HEIGHT]]));
                         } else {
-                            doc.font(__dirname.slice(0, __dirname.length - 14) + '/util/pdf_base_files/simsun_1.ttf');
+                            doc.font(__dirname.slice(0, __dirname.length - 14) + '/util/pdf_base_files/Smart.ttf');
                             doc.fontSize(12);
                         }
                         let hasSplitStr = false, splitStrArr = [];

BIN
modules/reports/util/pdf_base_files/simhei.ttf


BIN
modules/reports/util/pdf_base_files/simhei_bold.ttf


BIN
modules/reports/util/pdf_base_files/simhei_bold_italic.ttf


BIN
modules/reports/util/pdf_base_files/simhei_italic.ttf


BIN
modules/reports/util/pdf_base_files/simkai.ttf


BIN
modules/reports/util/pdf_base_files/simkai_bold.ttf


BIN
modules/reports/util/pdf_base_files/simkai_bold_italic.ttf


BIN
modules/reports/util/pdf_base_files/simkai_italic.ttf


BIN
modules/reports/util/pdf_base_files/simsun_1.ttf


BIN
modules/reports/util/pdf_base_files/simsun_1_bold.ttf


BIN
modules/reports/util/pdf_base_files/simsun_1_bold_italic.ttf


BIN
modules/reports/util/pdf_base_files/simsun_1_italic.ttf


+ 16 - 7
modules/reports/util/rpt_font_util.js

@@ -3,20 +3,29 @@
  */
 
 let fontMapObj = {
-    "宋体": "simsun_1"
+    "宋体": "Smart"
     ,"楷体": "simkai"
     ,"黑体": "simhei"
-    // ,"Arial": "arial"
+    // ,"华文中宋": "STZHONGS"
+    // ,"华文宋体": "STSONG"
+    //"宋体": "Smart"
 };
-// 目前不支持下划线
+//下划线在option中支持
+//另注意:
 
 module.exports = {
     getActualFont: getActualFont
 }
 
 function getActualFont(mapName, isBold, isItalic) {
-    let rst = "simsun_1";
-    if (fontMapObj[mapName]) rst = fontMapObj[mapName];
-    rst = rst + (isBold?"_bold":"") + (isItalic?"_italic":"");
-    return rst;
+    let rst = ["Smart"];
+    if (fontMapObj[mapName]) rst[0] = fontMapObj[mapName];
+    // rst = rst + (isBold?"_bold":"") + (isItalic?"_italic":"");
+    if (isBold) {
+        rst.push("_bold");
+    }
+    if (isItalic) {
+        rst.push("_italic");
+    }
+    return rst.join("");
 }

+ 10 - 12
modules/reports/util/rpt_pdf_util.js

@@ -147,11 +147,10 @@ function export_pdf_file (pageData, paperSize, fName, callback) {
         let fontFile = __dirname + '/pdf_base_files/simkai.ttf';
         if (font) {
             dftFontHeight = 1 * font[JV.FONT_PROPS[1]];
-            let dftFontBold = font[JV.FONT_PROPS[3]];
-            let dftFontItalic = font[JV.FONT_PROPS[4]];
-            fontFile = __dirname + '/pdf_base_files/' + fontUtil.getActualFont(font[JV.FONT_PROPS[0]], (dftFontBold === 'T'), (dftFontItalic === 'T')) + '.ttf';
+            fontFile = __dirname + '/pdf_base_files/' + fontUtil.getActualFont(font[JV.FONT_PROPS[0]], (font[JV.FONT_PROPS[3]] === 'T'), (font[JV.FONT_PROPS[4]] === 'T')) + '.ttf';
             doc.fontSize(dftFontHeight);
         }
+        doc.font(fontFile);
         let options={};
         if (control) {
             private_setupAreaH(area, control.Horizon, font.FontAngle, dftFontHeight, output,options);
@@ -164,23 +163,22 @@ function export_pdf_file (pageData, paperSize, fName, callback) {
         if (parseInt(font.FontAngle) !== 0) {
             w = area[JV.IDX_BOTTOM] - JV.OUTPUT_OFFSET[JV.OFFSET_IDX_BOTTOM] - area[JV.IDX_TOP] - JV.OUTPUT_OFFSET[JV.OFFSET_IDX_TOP];
         }
-        doc.save();
+        // doc.save();
         //doc.translate(output[0], output[1]);
         if (w >= doc.widthOfString(val)) {
-            options.width=w;
-            options.height=dftFontHeight;
+            options.width = w;
+            options.height = dftFontHeight;
         } else {
             while (true) {
                 dftFontHeight--;
                 doc.fontSize(dftFontHeight);
                 if (w >= doc.widthOfString(val) || dftFontHeight < 6) {
-                    options.width=w;
-                    options.height=dftFontHeight;
+                    options.width = w;
+                    options.height = dftFontHeight;
                     break;
                 }
             }
         }
-
         function private_drawUnderline() {
             //A. 暂不支持角度; B. PDF输出时,坐标没有translate
             let ctx = doc;
@@ -232,9 +230,9 @@ function export_pdf_file (pageData, paperSize, fName, callback) {
             }
             doc.rotate(font.FontAngle,rotateOptions);
         }
-        // doc.text(val,output[0], output[1],options);
-        doc.font(fontFile).text(val,output[0], output[1],options);
-        doc.restore();
+        doc.text(val,output[0], output[1], options);
+        doc.font(__dirname + '/pdf_base_files/Smart.ttf');
+        // doc.restore();
     }
 
     function private_setupAreaH(area, type, fontAngle, dftFontHeight, outputPoint,options) {