| 
					
				 | 
			
			
				@@ -73,7 +73,7 @@ let JpcJsPDFHelper = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (i > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     doc.addPage(paperSize.toLowerCase(), orientation); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                let ctx = doc.canvas.getContext(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let ctx = doc.canvas.getContext("2d"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let page = pageObj.items[i], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     fonts = pageObj[JV.NODE_FONT_COLLECTION], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     styles = pageObj[JV.NODE_STYLE_COLLECTION], 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -266,6 +266,46 @@ let JpcJsPDFHelper = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        function _splitValues(cell, control, orgValues, doc) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //根据control的 自动折行 及 缩放优先 这俩属性 来分解cell value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_WRAP]] === 'T' && control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_SHRINK_FIRST]] !== 'T') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let vals = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let validAreaTxtWidth = cell[JV.PROP_AREA][JV.PROP_RIGHT] - JV.OUTPUT_OFFSET[JV.OFFSET_IDX_RIGHT] - cell[JV.PROP_AREA][JV.PROP_LEFT] - JV.OUTPUT_OFFSET[JV.OFFSET_IDX_LEFT]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                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)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        vals.push(val); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (vals.length > orgValues.length) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    for (let idx = 0; idx < vals.length; idx++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        orgValues[idx] = vals[idx]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         function private_drawCellText(doc, ctx, cell, fonts, controls) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (cell[JV.PROP_VALUE] !== undefined && cell[JV.PROP_VALUE] !== null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let values = ("" + cell[JV.PROP_VALUE]).split('|'); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -293,6 +333,12 @@ let JpcJsPDFHelper = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     control = cell[JV.PROP_CONTROL]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (font) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    doc.setFontSize(1 * font[JV.FONT_PROPS[1]]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                _splitValues(cell, control, values, doc); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let height = cell[JV.PROP_AREA][JV.PROP_BOTTOM] - cell[JV.PROP_AREA][JV.PROP_TOP]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 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 ah = height; 
			 |