|
@@ -38,6 +38,11 @@ let JpcJsPDFHelper = {
|
|
let me = this;
|
|
let me = this;
|
|
let offsetX = 0;
|
|
let offsetX = 0;
|
|
let offsetY = 0;
|
|
let offsetY = 0;
|
|
|
|
+ let strReplaceReg1 = new RegExp('\n\r', 'gm'),
|
|
|
|
+ strReplaceReg2 = new RegExp('\r\n', 'gm'),
|
|
|
|
+ strReplaceReg3 = new RegExp('\n', 'gm'),
|
|
|
|
+ strReplaceReg4 = new RegExp('\r', 'gm')
|
|
|
|
+ ;
|
|
// let newName = pdfName;
|
|
// let newName = pdfName;
|
|
let pageObj = pageData;
|
|
let pageObj = pageData;
|
|
let paperSizeIdx = JV.PAGES_SIZE_STR.indexOf(paperSize);
|
|
let paperSizeIdx = JV.PAGES_SIZE_STR.indexOf(paperSize);
|
|
@@ -266,6 +271,14 @@ let JpcJsPDFHelper = {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ function _preHandleSpliter(orgVal) {
|
|
|
|
+ let rst = orgVal;
|
|
|
|
+ if (rst !== null && rst !== '') {
|
|
|
|
+ rst = rst.replace(strReplaceReg1, '|').replace(strReplaceReg2, '|').replace(strReplaceReg3, '|').replace(strReplaceReg4, '|');
|
|
|
|
+ }
|
|
|
|
+ return rst;
|
|
|
|
+ }
|
|
|
|
+
|
|
function _splitValues(cell, control, orgValues, doc) {
|
|
function _splitValues(cell, control, orgValues, doc) {
|
|
//根据control的 自动折行 及 缩放优先 这俩属性 来分解cell value
|
|
//根据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') {
|
|
if (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_WRAP]] === 'T' && control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_SHRINK_FIRST]] !== 'T') {
|
|
@@ -289,7 +302,8 @@ let JpcJsPDFHelper = {
|
|
|
|
|
|
function private_drawCellText(doc, ctx, cell, fonts, controls) {
|
|
function private_drawCellText(doc, ctx, cell, fonts, controls) {
|
|
if (cell[JV.PROP_VALUE] !== undefined && cell[JV.PROP_VALUE] !== null) {
|
|
if (cell[JV.PROP_VALUE] !== undefined && cell[JV.PROP_VALUE] !== null) {
|
|
- let values = ("" + cell[JV.PROP_VALUE]).split('|');
|
|
|
|
|
|
+ // let values = ("" + cell[JV.PROP_VALUE]).split('|');
|
|
|
|
+ let values = _preHandleSpliter("" + cell[JV.PROP_VALUE]).split('|');
|
|
// let font = fonts[cell[JV.PROP_FONT]];
|
|
// let font = fonts[cell[JV.PROP_FONT]];
|
|
let font = null;
|
|
let font = null;
|
|
if (typeof cell[JV.PROP_FONT] === "string") {
|
|
if (typeof cell[JV.PROP_FONT] === "string") {
|
|
@@ -361,6 +375,14 @@ let JpcJsPDFHelper = {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ function _chkIfShinkFirst(control, actLines) {
|
|
|
|
+ let rst = false;
|
|
|
|
+ if (control.ShrinkFirst === 'T' && control.Wrap !== 'T' && actLines > 1) {
|
|
|
|
+ rst = true;
|
|
|
|
+ }
|
|
|
|
+ return rst;
|
|
|
|
+ }
|
|
|
|
+
|
|
function private_drawText(doc, ctx, val, area, font, control) {
|
|
function private_drawText(doc, ctx, val, area, font, control) {
|
|
let dftFontHeight = 12;
|
|
let dftFontHeight = 12;
|
|
let output = [];
|
|
let output = [];
|
|
@@ -450,7 +472,8 @@ let JpcJsPDFHelper = {
|
|
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));
|
|
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 || (control.Shrink === 'T' && control.ShrinkFirst === 'T'))?1:lines;
|
|
lines = (lines === 0 || (control.Shrink === 'T' && control.ShrinkFirst === 'T'))?1:lines;
|
|
let actLines = private_splitString(val, validAreaTxtWidth, doc);
|
|
let actLines = private_splitString(val, validAreaTxtWidth, doc);
|
|
- if (actLines.length > lines && dftFontHeight >= 6) {
|
|
|
|
|
|
+ // if (actLines.length > lines && dftFontHeight >= 6) {
|
|
|
|
+ if ((actLines.length > lines || _chkIfShinkFirst(control, actLines.length)) && dftFontHeight >= 6) {
|
|
dftFontHeight--;
|
|
dftFontHeight--;
|
|
doc.setFontSize(dftFontHeight);
|
|
doc.setFontSize(dftFontHeight);
|
|
options.width = validAreaTxtWidth * PDF_SCALE;
|
|
options.width = validAreaTxtWidth * PDF_SCALE;
|