/** * Created by chen on 2017/8/16. */ /** * Created by zhang on 2017/8/14. */ const prf_cons = require('./pdf_base_files/rpt_pdf_consts'); var pdf = require('pdfkit'); var fs = require('fs'); let jpcCmnHelper = require('../rpt_component/helper/jpc_helper_common'); let DPI = jpcCmnHelper.getScreenDPI()[0]; //let JV = prf_cons.JV; let JV = require('../rpt_component/jpc_value_define'); module.exports ={ export_pdf_file:export_pdf_file } function export_pdf_file (pageData, paperSize, fName, callback) { let offsetX= 10; let offsetY=10; var doc = new pdf({autoFirstPage: false}); let newName = '' + (new Date()).valueOf(); let stream = doc.pipe(fs.createWriteStream(__dirname.slice(0, __dirname.length - 21) + '/tmp/'+newName+'.pdf')); let pageObj = pageData; // doc.rect(5,5,1190,890).lineWidth(1).strokeColor('black').stroke();//边框 let paperSizeIdx = JV.PAGES_SIZE_STR.indexOf(paperSize); let size = JV.PAGES_SIZE[paperSizeIdx]; if (pageObj && pageObj.items.length > 0 ) { for(let i=0;i= doc.widthOfString(val)) { 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; break; } } } var rotateOptions; if (font.FontAngle != "0") { if (control){ rotateOptions=private_setupAreaRotateOption(area,w,control.Vertical,dftFontHeight, output); }else { rotateOptions=private_setupAreaRotateOption(area,w,"bottom",dftFontHeight, output); } doc.rotate(font.FontAngle,rotateOptions); } doc.text(val,output[0], output[1],options); doc.restore(); } function private_setupAreaH(area, type, fontAngle, dftFontHeight, outputPoint,options) { var lType = type; if (type != "left" && type != "right" && type != "center") lType = "left"; options.align=lType; outputPoint[0]=1 * area[JV.IDX_LEFT]+ JV.OUTPUT_OFFSET[JV.OFFSET_IDX_LEFT]; } function private_setupAreaV(area, type, fontAngle, dftFontHeight, outputPoint) { var lType = type; if (type != "top" && type != "bottom" && type != "center") lType = "top"; switch (lType) { case "top": outputPoint[1] = 1 * area[JV.IDX_TOP] + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_TOP]; break; case "bottom": outputPoint[1] = 1 * area[JV.IDX_BOTTOM] - JV.OUTPUT_OFFSET[JV.OFFSET_IDX_BOTTOM]-dftFontHeight; break; case "center": outputPoint[1] = 1 * area[JV.IDX_TOP] + (1 * area[JV.IDX_BOTTOM]-1 * area[JV.IDX_TOP]- dftFontHeight) / 2; break; } } function private_setupAreaRotateOption(area,w, type="top",dftFontHeight,outputPoint){ var x = (area[JV.IDX_RIGHT] - area[JV.IDX_LEFT])/2+area[JV.IDX_LEFT]; var y =(area[JV.IDX_BOTTOM] - area[JV.IDX_TOP])/2+ area[JV.IDX_TOP]; var rotateOptions = {origin:[x,y]}; var h = area[JV.IDX_RIGHT] - area[JV.IDX_LEFT]; outputPoint[0]=x-w/2+JV.OUTPUT_OFFSET[JV.OFFSET_IDX_LEFT]; var lType = type; switch (lType) { 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; } }