| 
					
				 | 
			
			
				@@ -4,10 +4,11 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 let JV = require('../rpt_component/jpc_value_define'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-let pdf = require('pdfkit'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// let pdf = require('pdfkit'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 let jpcCmnHelper = require('../rpt_component/helper/jpc_helper_common'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 let SCREEN_DPI = jpcCmnHelper.getScreenDPI(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-let fontUtil = require('./rpt_font_util'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// let fontUtil = require('./rpt_font_util'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+let fontWidthMap = require('../rpt_component/helper/jpc_helper_font_width'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 module.exports = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     exportSvgStr: function (pagesData, offsetX, offsetY) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -16,7 +17,7 @@ module.exports = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             fonts = pagesData[JV.NODE_FONT_COLLECTION], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             controls = pagesData[JV.NODE_CONTROL_COLLECTION] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        let pdf_doc = new pdf({autoFirstPage: false}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // let pdf_doc = new pdf({autoFirstPage: false}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (let idx = 0; idx < pagesData.items.length; idx++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let page = pagesData.items[idx]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let svgPageArr = [], pixelSize = getPixelSize(pagesData); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -24,7 +25,7 @@ module.exports = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let adjustY = 0.5 * ((idx + 1) % 2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // let cnt = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             for (let cell of page.cells) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                svgPageArr.push(buildCellSvg(cell, fonts, styles, controls, page[JV.PROP_PAGE_MERGE_BORDER], pagesData[JV.BAND_PROP_MERGE_BAND], offsetX, offsetY, adjustY, pdf_doc)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                svgPageArr.push(buildCellSvg(cell, fonts, styles, controls, page[JV.PROP_PAGE_MERGE_BORDER], pagesData[JV.BAND_PROP_MERGE_BAND], offsetX, offsetY, adjustY)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // cnt++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // console.log(cnt); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -55,7 +56,7 @@ function getActualBorderStyle(cell, styles, mergeBorderStyle, pageBorderArea, bo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-function buildCellSvg(cell, fonts, styles, controls, pageMergeBorder, rptMergeBorder, offsetX, offsetY, adjustY, pdf_doc) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function buildCellSvg(cell, fonts, styles, controls, pageMergeBorder, rptMergeBorder, offsetX, offsetY, adjustY) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let rst = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let style = styles[cell[JV.PROP_STYLE]]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let mergeBandStyle = null; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -101,18 +102,18 @@ function buildCellSvg(cell, fonts, styles, controls, pageMergeBorder, rptMergeBo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 "' style='stroke:rgb(0,0,0);stroke-width:" + bottomBS[JV.PROP_LINE_WEIGHT] +"'/>") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    buildText(rst, cell, font, controls[cell[JV.PROP_CONTROL]], offsetX, offsetY, adjustY, pdf_doc); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    buildText(rst, cell, font, controls[cell[JV.PROP_CONTROL]], offsetX, offsetY, adjustY); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return rst.join(""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-function buildText(destRst, cell, font, control, offsetX, offsetY, adjustY, pdf_doc) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function buildText(destRst, cell, font, control, offsetX, offsetY, adjustY) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let orgFontHeight = parseInt(font[JV.FONT_PROPS[JV.FONT_PROP_IDX_HEIGHT]]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let fontWeight = (font[JV.FONT_PROPS[JV.FONT_PROP_IDX_BOLD]] === 'T')?"bold":"normal"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let fontStyle = (font[JV.FONT_PROPS[JV.FONT_PROP_IDX_ITALIC]] === 'T')?"italic":"normal"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let dftFontBold = font[JV.FONT_PROPS[3]]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let dftFontItalic = font[JV.FONT_PROPS[4]]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    let fontFile = __dirname + '/pdf_base_files/' + fontUtil.getActualFont(font[JV.FONT_PROPS[0]], (dftFontBold === 'T'), (dftFontItalic === 'T')) + '.ttf'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // let fontFile = __dirname + '/pdf_base_files/' + fontUtil.getActualFont(font[JV.FONT_PROPS[0]], (dftFontBold === 'T'), (dftFontItalic === 'T')) + '.ttf'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let left = parseInt(cell[JV.PROP_AREA][JV.PROP_LEFT]) + offsetX + 0.5, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         right = parseInt(cell[JV.PROP_AREA][JV.PROP_RIGHT]) + offsetX + 0.5, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         top = parseInt(cell[JV.PROP_AREA][JV.PROP_TOP]) + offsetY + adjustY, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -148,9 +149,10 @@ function buildText(destRst, cell, font, control, offsetX, offsetY, adjustY, pdf_ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let area = [cell[JV.PROP_AREA][JV.PROP_LEFT] + offsetX, cell[JV.PROP_AREA][JV.PROP_TOP] + offsetY, cell[JV.PROP_AREA][JV.PROP_RIGHT] + offsetX, cell[JV.PROP_AREA][JV.PROP_BOTTOM] + offsetY]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let inner_draw_text = function (textValue) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let dftFontHeight = orgFontHeight; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        pdf_doc.font(fontFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        pdf_doc.fontSize(dftFontHeight); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        let actLines = private_splitString(textValue, (area[JV.PROP_RIGHT] - area[JV.PROP_LEFT]), pdf_doc); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // pdf_doc.font(fontFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // pdf_doc.fontSize(dftFontHeight); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // let actLines = private_splitString(textValue, (area[JV.PROP_RIGHT] - area[JV.PROP_LEFT]), pdf_doc); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let actLines = private_splitStringEx(textValue, (area[JV.PROP_RIGHT] - area[JV.PROP_LEFT]), font[JV.FONT_PROPS[0]], dftFontHeight); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         function inner_build_text(innerTxt, innerArea) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let innerDftFontHeight = (dftFontHeight * 3 / 4); //SVG的字体与canvas的字体大小的切换, 不用考虑取整 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (control) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -177,10 +179,11 @@ function buildText(destRst, cell, font, control, offsetX, offsetY, adjustY, pdf_ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             while (true) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (dftFontHeight > 6) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     dftFontHeight--; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    pdf_doc.fontSize(dftFontHeight); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    // pdf_doc.fontSize(dftFontHeight); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     let lines = Math.floor((area[JV.IDX_BOTTOM] - area[JV.IDX_TOP]) / (dftFontHeight + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_BOTTOM] + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_TOP] + 4)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     lines = (lines === 0)?1:lines; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    actLines = private_splitString(textValue, (area[JV.PROP_RIGHT] - area[JV.PROP_LEFT]), pdf_doc); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    // actLines = private_splitString(textValue, (area[JV.PROP_RIGHT] - area[JV.PROP_LEFT]), pdf_doc); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    let actLines = private_splitStringEx(textValue, (area[JV.PROP_RIGHT] - area[JV.PROP_LEFT]), font[JV.FONT_PROPS[0]], dftFontHeight); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if (lines >= actLines.length) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         let aH = dftFontHeight + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_BOTTOM] + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_TOP] + 4; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         if ((aH * actLines.length) < (area[JV.IDX_BOTTOM] - area[JV.IDX_TOP]) && (control && control.Vertical !== 'top')) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -250,12 +253,13 @@ function buildText(destRst, cell, font, control, offsetX, offsetY, adjustY, pdf_ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-function private_splitString(strVal, areaWidth, doc) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function private_splitStringEx(strVal, areaWidth, chkFontName, chkFontHeight) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let rst = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (strVal) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let preSIdx = 0, txtWidth = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let currentW = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        let chnW = doc.widthOfString('一'), otherW = doc.widthOfString('_'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // let chnW = doc.widthOfString('一'), otherW = doc.widthOfString('_'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let chnW = fontWidthMap.getFontWidth(chkFontName, chkFontHeight, '宽'), otherW = fontWidthMap.getFontWidth(chkFontName, chkFontHeight, '窄'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (let sIdx = 0; sIdx < strVal.length; sIdx++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             currentW = (strVal.charCodeAt(sIdx) > 127)?chnW:otherW; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             txtWidth += currentW; 
			 |