| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542 |
- // /**
- // * Created by Tony on 2019/9/10.
- // */
- // import { IArea, ICell, IControlCollection, IFontCollection, IFontSubCollection, IMergeBand, IPreviewPage, IRptTpl, IStyleCollection, IStyles } from '../interface/basic';
- // import { jsPDF as JsPDF } from 'jspdf';
- // import { Canvas } from 'canvas';
- // import JV from '../core/jpc_value_define';
- // const PDF_SCALE = 0.75;
- // // const DPI = getScreenDPI();
- // export default class JpcJsPDFHelper {
- // doc: JsPDF;
- // initialize(
- // orientation: string ,
- // unit: 'pt' | 'px' | 'in' | 'mm' | 'cm' | 'ex' | 'em' | 'pc',
- // format: string | number[]
- // ) {
- // this.doc = new JsPDF(orientation, unit, format);
- // }
- // outputAsPdf(pageData:IPreviewPage, paperSize:string, pdfName:string) {
- // const me = this;
- // const offsetX = 0;
- // const offsetY = 0;
- // const newName = pdfName;
- // const pageObj = pageData;
- // const paperSizeIdx = JV.PAGES_SIZE_STR.indexOf(paperSize);
- // const size = JV.PAGES_SIZE[paperSizeIdx];
- // let orientation = '';
- // if (pageData.打印页面_信息.纸张宽高[0] > pageData.打印页面_信息.纸张宽高[1]) {
- // orientation = 'landscape';
- // } else {
- // orientation = 'portrait';
- // }
- // this.doc = me.initialize(orientation, 'pt', paperSize.toLowerCase());
- // const {doc}=this;
- // doc.setFont('SmartSimsun', 'normal'); // 目前只考虑宋体
- // const privateDrawCell=(doc:JsPDF, ctx:Canvas, cell:ICell, fonts:IFontCollection, styles:IStyles, controls:IControlCollection, mergedBand:IMergeBand) =>{
- // ctx.beginPath();
- // const style = styles[cell.style];
- // if (style) {
- // const isNeedMergeBand = private_chkIfInMergedBand(mergedBand, cell);
- // private_drawLine(
- // cell,
- // doc,
- // ctx,
- // style,
- // 'Top',
- // ['Left', 'Top'],
- // ['Right', 'Top'],
- // mergedBand,
- // styles,
- // isNeedMergeBand
- // );
- // private_drawLine(
- // cell,
- // doc,
- // ctx,
- // style,
- // 'Right',
- // ['Right', 'Top'],
- // ['Right', 'Bottom'],
- // mergedBand,
- // styles,
- // isNeedMergeBand
- // );
- // private_drawLine(
- // cell,
- // doc,
- // ctx,
- // style,
- // 'Bottom',
- // ['Right', 'Bottom'],
- // ['Left', 'Bottom'],
- // mergedBand,
- // styles,
- // isNeedMergeBand
- // );
- // private_drawLine(
- // cell,
- // doc,
- // ctx,
- // style,
- // 'Left',
- // ['Left', 'Bottom'],
- // ['Left', 'Top'],
- // mergedBand,
- // styles,
- // isNeedMergeBand
- // );
- // }
- // private_drawCellText(doc, ctx, cell, fonts, controls);
- // ctx.closePath();
- // }
-
- // const private_chkIfInMergedBand=(mergedBand:IMergeBand, cell:ICell)=> {
- // let rst = false;
- // if (mergedBand && cell) {
- // rst =
- // mergedBand.Top <= cell.area.Top&&
- // mergedBand.Bottom >= cell.area.Bottom &&
- // mergedBand.Left<= cell.area.Left &&
- // mergedBand.Right >= cell.area.Right;
- // }
- // return rst;
- // }
- // const private_drawLine=(
- // cell:ICell,
- // doc:JsPDF,
- // ctx:Canvas,
- // style:IStyles,
- // styleBorderDest:'Top'|'Left'|'Right'|'Bottom',
- // startP:['Top'|'Left'|'Right'|'Bottom','Top'|'Left'|'Right'|'Bottom'],
- // destP:['Top'|'Left'|'Right'|'Bottom','Top'|'Left'|'Right'|'Bottom'],
- // mergedBand:IMergeBand,
- // styles:Record<string,IStyleCollection>,
- // isNeedMergeBand:boolean
- // ) =>{
- // let destStyle = style;
- // if (mergedBand) {
- // if (
- // isNeedMergeBand &&
- // parseFloat(`${mergedBand[styleBorderDest]}`) === parseFloat(`${cell.area[styleBorderDest]}`)
- // ) {
- // Object.assign(destStyle, styles[mergedBand.style.ID])
- // }
- // }
- // if (destStyle[styleBorderDest] && parseFloat(destStyle[styleBorderDest][JV.PROP_LINE_WEIGHT]) !== 0) {
- // doc.setDrawColor(destStyle[styleBorderDest][JV.PROP_COLOR]);
- // if (parseInt(destStyle[styleBorderDest][JV.PROP_LINE_WEIGHT]) === 2) {
- // doc.setLineWidth(1 * destStyle[styleBorderDest][JV.PROP_LINE_WEIGHT]);
- // } else {
- // doc.setLineWidth(0.1);
- // }
- // doc.line(
- // (cell.area[startP[0]] + offsetX) * PDF_SCALE,
- // (cell.area[startP[1]] + offsetY) * PDF_SCALE,
- // (cell.area[destP[0]] + offsetX) * PDF_SCALE,
- // (cell.area[destP[1]] + offsetY) * PDF_SCALE
- // );
- // }
- // }
- // const private_drawCellText=(doc:JsPDF, ctx:Canvas, cell:ICell, fonts:IFontCollection, controls:IControlCollection)=> {
- // if (cell.Value !== undefined && cell.Value !== null) {
- // const values = `${cell.Value}`.split('|');
- // // let font = fonts[cell[JV.PROP_FONT]];
- // let font = null;
- // if (typeof cell.font === 'string') {
- // font = fonts[cell.font];
- // } else {
- // font = cell.font;
- // }
- // if (font[JV.FONT_PROPS[JV.FONT_PROP_IDX_BOLD]] === 'T') {
- // doc.setFont('SmartSimsun', 'bold');
- // // doc.setFontStyle("bold");
- // } else {
- // doc.setFont('SmartSimsun', 'normal');
- // }
- // // let control = controls[cell[JV.PROP_CONTROL]];
- // let control = null;
- // if (typeof cell.control === 'string') {
- // control = controls[cell.control];
- // } else {
- // control = cell.control;
- // }
- // const height = cell.area.Bottom - cell.area.Top;
- // const area = [
- // cell.area.Left + offsetX,
- // cell.area.Top + offsetY,
- // cell.area.Right+ offsetX,
- // cell.area.Bottom + offsetY,
- // ];
- // let ah = height;
- // let restTopH = 0;
- // let restBottomH = 0;
- // if (control.CloseOutput === 'T') {
- // ah =
- // (parseFloat(`${font.FontHeight}`) +
- // JV.OUTPUT_OFFSET[JV.OFFSET_IDX_TOP] +
- // JV.OUTPUT_OFFSET[JV.OFFSET_IDX_BOTTOM]) *
- // values.length;
- // const restH = height - ah;
- // if (control.Vertical === 'center') {
- // restTopH = restH / 2;
- // restBottomH = restH / 2;
- // } else if (control.Vertical === 'bottom') {
- // restBottomH = restH;
- // } else {
- // restTopH = restH;
- // }
- // }
- // let spaceIdxArr = [];
- // for (let i = 0; i < values.length; i++) {
- // area[JV.IDX_TOP] = cell.area.Top + i * (ah / values.length) + offsetY + restTopH;
- // area[JV.IDX_BOTTOM] =
- // cell.area.Top + (i + 1) * (ah / values.length) + offsetY + restBottomH;
- // if (values[i] === null || values[i] === undefined || values[i] === 'null') {
- // values[i] = '';
- // }
- // // 因pdfkit输出空格只有浏览器的一半宽度,需要额外加空格补上,jspdf也有这个情况 -----------------------------
- // if (typeof values[i] === 'string') {
- // for (let j = 0; j < values[i].length; j++) {
- // if (values[i][j] === ' ') spaceIdxArr.push(j);
- // }
- // }
- // for (let j = spaceIdxArr.length - 1; j >= 0; j--) {
- // values[i] = `${values[i].slice(0, spaceIdxArr[j])} ${values[i].slice(spaceIdxArr[j])}`;
- // }
- // // -----------------------------
- // private_drawText(doc, ctx, values[i], area, font, control);
- // spaceIdxArr = [];
- // }
- // }
- // }
- // const private_drawText=(doc:JsPDF, ctx:Canvas, val:string, area:number[], font:IFontSubCollection, control:IControlCollection)=> {
- // let dftFontHeight = 12;
- // const output:any = [];
- // if (font) {
- // dftFontHeight = 1 * font.FontHeight;
- // doc.setFontSize(dftFontHeight);
- // }
- // // doc.font(fontFile);
- // const options = {};
- // const inner_setupControl = (outVal: string, inArea: IArea, inFontHeight: number, inOutput: any[])=> {
- // if (control) {
- // private_setupAreaH(outVal, inArea, control.Horizon, font.FontAngle, inFontHeight, inOutput, options);
- // private_setupAreaV(outVal, inArea, control.Vertical, font.FontAngle, inFontHeight, inOutput);
- // } else {
- // private_setupAreaH(outVal, inArea, 'left', parseInt(`${font.FontAngle}`), inFontHeight, inOutput, options);
- // private_setupAreaV(outVal, inArea, 'bottom', parseInt(`${font.FontAngle}`), inFontHeight, inOutput);
- // }
- // };
- // inner_setupControl(val, area, dftFontHeight, output);
- // let validAreaTxtWidth =
- // area[JV.IDX_RIGHT] -
- // JV.OUTPUT_OFFSET[JV.OFFSET_IDX_RIGHT] -
- // area[JV.IDX_LEFT] -
- // JV.OUTPUT_OFFSET[JV.OFFSET_IDX_RIGHT];
- // let validTxtLines = 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)
- // );
- // if (parseInt(`${font.FontAngle}`) !== 0) {
- // validAreaTxtWidth =
- // area[JV.IDX_BOTTOM] -
- // JV.OUTPUT_OFFSET[JV.OFFSET_IDX_BOTTOM] -
- // area[JV.IDX_TOP] -
- // JV.OUTPUT_OFFSET[JV.OFFSET_IDX_TOP];
- // validTxtLines = Math.floor(
- // (area[JV.IDX_RIGHT] - area[JV.IDX_LEFT]) /
- // (dftFontHeight + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_RIGHT] + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_LEFT] + 4)
- // );
- // }
- // const private_drawUnderline=(underLineVal, underLineArea)=> {
- // // A. 暂不支持角度; B. PDF输出时,坐标没有translate
- // // let ctx = doc;
- // // 1. 计算下划线的相关坐标
- // let width = doc.getTextWidth(underLineVal);
- // if (width > underLineArea[JV.IDX_RIGHT] - underLineArea[JV.IDX_LEFT]) {
- // width = underLineArea[JV.IDX_RIGHT] - underLineArea[JV.IDX_LEFT];
- // }
- // const height = dftFontHeight;
- // let startX = underLineArea[JV.IDX_LEFT];
- // let startY = underLineArea[JV.IDX_TOP];
- // let endX = underLineArea[JV.IDX_RIGHT];
- // let endY = underLineArea[JV.IDX_BOTTOM];
- // // let startX = 0, startY = 0, endX = width, endY = startY;
- // if (control.Horizon === 'left') {
- // startX = Math.round(underLineArea[JV.IDX_LEFT] + JV.OUTPUT_OFFSET[JV.IDX_LEFT]);
- // } else if (control.Horizon === 'right') {
- // startX = Math.round(underLineArea[JV.IDX_RIGHT] - width - JV.OUTPUT_OFFSET[JV.IDX_RIGHT]);
- // } else {
- // startX = Math.round(
- // underLineArea[JV.IDX_LEFT] + (underLineArea[JV.IDX_RIGHT] - underLineArea[JV.IDX_LEFT] - width) / 2
- // );
- // }
- // endX = Math.round(startX + width);
- // if (control.Vertical === 'top') {
- // startY = Math.round(
- // underLineArea[JV.IDX_TOP] + JV.OUTPUT_OFFSET[JV.IDX_TOP] + JV.OUTPUT_OFFSET[JV.IDX_BOTTOM] + height
- // );
- // } else if (control.Vertical === 'bottom') {
- // startY = Math.round(underLineArea[JV.IDX_BOTTOM] + JV.OUTPUT_OFFSET[JV.IDX_BOTTOM]);
- // } else {
- // startY =
- // Math.round(
- // underLineArea[JV.IDX_TOP] + (underLineArea[JV.IDX_BOTTOM] - underLineArea[JV.IDX_TOP] + height) / 2
- // ) +
- // JV.OUTPUT_OFFSET[JV.IDX_TOP] +
- // JV.OUTPUT_OFFSET[JV.IDX_BOTTOM];
- // }
- // endY = Math.round(startY);
- // // 2. 画线
- // // ctx.save();
- // if (output[1] !== Math.round(output[1])) {
- // ctx.translate(0, 0.5);
- // }
- // doc.setDrawColor('BLACK');
- // doc.setLineWidth(0.1);
- // doc.line(startX * PDF_SCALE, startY * PDF_SCALE, endX * PDF_SCALE, endY * PDF_SCALE);
- // }
- // let rotateOptions;
- // if (parseInt(font.FontAngle) !== 0) {
- // if (control) {
- // rotateOptions = private_setupAreaRotateOption(
- // area,
- // validAreaTxtWidth,
- // control.Vertical,
- // dftFontHeight,
- // output
- // );
- // } else {
- // rotateOptions = private_setupAreaRotateOption(area, validAreaTxtWidth, 'bottom', dftFontHeight, output);
- // }
- // doc.rotate(font.FontAngle, rotateOptions);
- // }
- // if (
- // validAreaTxtWidth >= doc.getTextWidth(val) ||
- // (control && control.Shrink !== 'T' && validTxtLines < private_splitString(val, validAreaTxtWidth, doc))
- // ) {
- // options.width = validAreaTxtWidth * PDF_SCALE;
- // options.height = dftFontHeight * PDF_SCALE;
- // doc.setFontSize(dftFontHeight);
- // if (font[JV.FONT_PROPS[5]] === 'T' && parseInt(font.FontAngle) === 0) {
- // private_drawUnderline(val, area);
- // }
- // doc.setFontSize(dftFontHeight * PDF_SCALE);
- // doc.text(output[0] * PDF_SCALE, output[1] * PDF_SCALE, val);
- // } else {
- // while (true) {
- // 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;
- // const actLines = private_splitString(val, validAreaTxtWidth, doc);
- // if (actLines.length > lines && dftFontHeight >= 6) {
- // dftFontHeight--;
- // doc.setFontSize(dftFontHeight);
- // options.width = validAreaTxtWidth * PDF_SCALE;
- // options.height = dftFontHeight * PDF_SCALE;
- // } else {
- // const 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'
- // ) {
- // if (control.Vertical === 'bottom') {
- // area[JV.IDX_TOP] = area[JV.IDX_BOTTOM] - aH * actLines.length;
- // } else {
- // area[JV.IDX_TOP] = (area[JV.IDX_TOP] + area[JV.IDX_BOTTOM]) / 2 - (aH * actLines.length) / 2;
- // area[JV.IDX_BOTTOM] = area[JV.IDX_TOP] + aH * actLines.length;
- // }
- // }
- // const newArea = [];
- // const baseTop = area[JV.IDX_TOP];
- // for (let ai = 0; ai < area.length; ai++) {
- // newArea[ai] = area[ai];
- // }
- // options.width = validAreaTxtWidth * PDF_SCALE;
- // options.height = dftFontHeight * PDF_SCALE;
- // for (let lIdx = 0; lIdx < actLines.length; lIdx++) {
- // newArea[JV.IDX_TOP] = Math.round(aH * lIdx + baseTop);
- // newArea[JV.IDX_BOTTOM] = Math.round(aH * (lIdx + 1) + baseTop);
- // doc.setFontSize(dftFontHeight);
- // inner_setupControl(actLines[lIdx], newArea, dftFontHeight, output);
- // if (font[JV.FONT_PROPS[5]] === 'T' && parseInt(font.FontAngle) === 0) {
- // private_drawUnderline(actLines[lIdx], newArea);
- // }
- // doc.setFontSize(dftFontHeight * PDF_SCALE);
- // doc.text(output[0] * PDF_SCALE, output[1] * PDF_SCALE, actLines[lIdx]);
- // }
- // break;
- // }
- // }
- // }
- // }
- // const private_setupAreaH=(outVal, area, type, fontAngle, dftFontHeight, outputPoint, options)=> {
- // // jspdf输出方式不同(但与H5的canvas处理方式有所不同,因为没有相关alignment属性,需要自己算,而且角度还暂时不支持)-------------------------------------------
- // let lType = type;
- // if (type !== 'left' && type !== 'right' && type !== 'center') lType = 'left';
- // switch (lType) {
- // case 'left':
- // if (fontAngle === JV.VERTICAL_ANGLE_INT) {
- // // outputPoint[1] = 1 * area[JV.IDX_TOP] + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_LEFT];
- // } else if (fontAngle === JV.ANTI_VERTICAL_ANGLE_INT) {
- // // outputPoint[1] = 1 * area[JV.IDX_BOTTOM] - JV.OUTPUT_OFFSET[JV.OFFSET_IDX_LEFT];
- // } else {
- // outputPoint[0] = 1 * area[JV.IDX_LEFT] + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_LEFT];
- // }
- // // ctx.textAlign="start";
- // break;
- // case 'right':
- // if (fontAngle === JV.VERTICAL_ANGLE_INT) {
- // outputPoint[1] = 1 * area[JV.IDX_BOTTOM] - JV.OUTPUT_OFFSET[JV.OFFSET_IDX_RIGHT];
- // } else if (fontAngle === JV.ANTI_VERTICAL_ANGLE_INT) {
- // outputPoint[1] = 1 * area[JV.IDX_TOP] + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_RIGHT];
- // } else {
- // const width = doc.getTextWidth(outVal);
- // outputPoint[0] = 1 * area[JV.IDX_RIGHT] - JV.OUTPUT_OFFSET[JV.OFFSET_IDX_RIGHT] - width;
- // }
- // // ctx.textAlign="end";
- // break;
- // case 'center':
- // if (fontAngle === JV.VERTICAL_ANGLE_INT || fontAngle === JV.ANTI_VERTICAL_ANGLE_INT) {
- // outputPoint[1] = (1 * area[JV.IDX_TOP] + 1 * area[JV.IDX_BOTTOM]) / 2;
- // } else {
- // const width = doc.getTextWidth(outVal);
- // outputPoint[0] = (1 * area[JV.IDX_LEFT] + 1 * area[JV.IDX_RIGHT]) / 2 - width / 2;
- // }
- // // ctx.textAlign="center";
- // break;
- // }
- // }
- // const private_setupAreaV=(outVal, area, type, fontAngle, dftFontHeight, outputPoint)=> {
- // // jspdf输出方式不同(与H5的canvas一样处理)-------------------------------------------
- // let lType = type;
- // if (type !== 'top' && type !== 'bottom' && type !== 'center') lType = 'top';
- // switch (lType) {
- // case 'top':
- // if (fontAngle === JV.VERTICAL_ANGLE_INT) {
- // outputPoint[0] = 1 * area[JV.IDX_RIGHT] - dftFontHeight - JV.OUTPUT_OFFSET[JV.OFFSET_IDX_TOP];
- // } else if (fontAngle === JV.ANTI_VERTICAL_ANGLE_INT) {
- // outputPoint[0] = 1 * area[JV.IDX_LEFT] + dftFontHeight + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_TOP];
- // } else outputPoint[1] = 1 * area[JV.IDX_TOP] + dftFontHeight + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_TOP];
- // break;
- // case 'bottom':
- // if (fontAngle === JV.VERTICAL_ANGLE_INT) {
- // outputPoint[0] = 1 * area[JV.IDX_LEFT] + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_BOTTOM];
- // } else if (fontAngle === JV.ANTI_VERTICAL_ANGLE_INT) {
- // outputPoint[0] = 1 * area[JV.IDX_RIGHT] - JV.OUTPUT_OFFSET[JV.OFFSET_IDX_BOTTOM];
- // } else {
- // outputPoint[1] = 1 * area[JV.IDX_BOTTOM] - JV.OUTPUT_OFFSET[JV.OFFSET_IDX_BOTTOM];
- // // if (fontName === "宋体") outputPoint[1] = outputPoint[1] - 1;
- // outputPoint[1] -= 1; // 宋体需要提上一个像素点
- // }
- // break;
- // case 'center':
- // if (fontAngle === JV.VERTICAL_ANGLE_INT) {
- // outputPoint[0] = (1 * area[JV.IDX_LEFT] + 1 * area[JV.IDX_RIGHT] - dftFontHeight) / 2;
- // } else if (fontAngle === JV.ANTI_VERTICAL_ANGLE_INT) {
- // outputPoint[0] = (1 * area[JV.IDX_LEFT] + 1 * area[JV.IDX_RIGHT] + dftFontHeight) / 2;
- // } else {
- // outputPoint[1] = (1 * area[JV.IDX_TOP] + 1 * area[JV.IDX_BOTTOM] + dftFontHeight) / 2;
- // // if (fontName === "宋体") outputPoint[1] = outputPoint[1] - 1;
- // outputPoint[1] -= 1; // 宋体需要提上一个像素点
- // }
- // break;
- // }
- // }
- // const private_splitString=(strVal, areaWidth, doc) =>{
- // const rst = [];
- // if (strVal) {
- // let preSIdx = 0;
- // let txtWidth = 0;
- // let currentW = 0;
- // const chnW = doc.getTextWidth('一');
- // const otherW = doc.getTextWidth('_');
- // for (let sIdx = 0; sIdx < strVal.length; sIdx++) {
- // currentW = strVal.charCodeAt(sIdx) > 127 ? chnW : otherW;
- // txtWidth += currentW;
- // if (txtWidth > areaWidth) {
- // if (preSIdx < sIdx) {
- // rst.push(strVal.substr(preSIdx, sIdx - preSIdx));
- // preSIdx = sIdx;
- // } else {
- // rst.push(strVal.substr(preSIdx, 1));
- // preSIdx = sIdx + 1;
- // }
- // txtWidth = currentW;
- // }
- // if (sIdx === strVal.length - 1) {
- // rst.push(strVal.substr(preSIdx, strVal.length - preSIdx));
- // }
- // }
- // }
- // if (rst.length === 0) rst.push(''); // 什么都没有,也得整个空串
- // return rst;
- // }
- // const private_setupAreaRotateOption=(area, w, type = 'top', dftFontHeight, outputPoint)=> {
- // const x = (area[JV.IDX_RIGHT] - area[JV.IDX_LEFT]) / 2 + area[JV.IDX_LEFT];
- // const y = (area[JV.IDX_BOTTOM] - area[JV.IDX_TOP]) / 2 + area[JV.IDX_TOP];
- // const rotateOptions = { origin: [x, y] };
- // const h = area[JV.IDX_RIGHT] - area[JV.IDX_LEFT];
- // outputPoint[0] = x - w / 2 + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_LEFT];
- // switch (type) {
- // case 'top':
- // outputPoint[1] = y - h / 2 + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_TOP];
- // break;
- // case 'bottom':
- // outputPoint[1] = y + h / 2 - JV.OUTPUT_OFFSET[JV.OFFSET_IDX_BOTTOM] - dftFontHeight;
- // break;
- // case 'center':
- // outputPoint[1] = y + dftFontHeight / 2;
- // break;
- // }
- // return rotateOptions;
- // }
- // const newPageMergeBand = {...pageObj.MergeBand};
- // if (pageObj && pageObj.items.length > 0) {
- // for (let i = 0; i < pageObj.items.length; i++) {
- // if (i > 0) {
- // doc.addPage(paperSize.toLowerCase(), orientation);
- // }
- // const ctx = doc.canvas.getContext();
- // const page = pageObj.items[i];
- // const fonts = pageObj.control_collection;
- // const styles = pageObj.style_collection;
- // const controls = pageObj.control_collection;
- // if (page.page_merge_border) {
- // Object.assign(newPageMergeBand,page.page_merge_border);
- // }
- // for (let j = 0; j < page.cells.length; j++) {
- // const cell = page.cells[j];
- // privateDrawCell(doc, ctx, cell, fonts, styles, controls, newPageMergeBand);
- // }
- // }
- // }
- // doc.save(`${newName}.pdf`);
- // },
- // }
|