PortaleOrdiniGruppo/PortalStudio/JSReportDocumentPdf.js
2025-03-24 15:28:26 +01:00

762 lines
27 KiB
JavaScript

/* global generateBarcode convertStringToPx ptTopx jspdf setCurrentDateTime zRuntime b64toBlob */
/*jshint laxcomma: true */
( function (window, document) {
/*** CLASSE RepDocumentPdf: gestisce la generazione/disegno del documento (report) in formato pdf
* Eredita da RepDocument - JSReportDocumentRuntime.js
*/
function privateContext (name, uid) {
var datauristring;
function RepDocumentPdf (options, uid) {
var jspdf =
(document.getElementById("visualweb/jspdf.js") || {}).href ||
(window.ZtVWeb
? ZtVWeb.SPWebRootURL + "/visualweb/jspdf.js"
: "../visualweb/jspdf.js"),
jspdfmore =
(document.getElementById("visualweb/jspdf-more.js") || {}).href ||
(window.ZtVWeb
? ZtVWeb.SPWebRootURL + "/visualweb/jspdf-more.js"
: "../visualweb/jspdf-more.js");
LibJavascript.RequireLibrary(jspdf);
LibJavascript.RequireLibrary(jspdfmore);
RepDocument.call(this);
this.format = "pdf";
this.gcurrpage = null;
this.lastElement = null;
this.datetime = new Date();
this.options = options;
if( typeof(options) == 'string' ){
this.name = options || 'smartreport';
}
else {
this.name = options.filePath || 'smartreport';
}
if(Empty(uid)) uid = LibJavascript.AlfaKeyGen(5);
this.uid = uid;
};
RepDocumentPdf.prototype = new RepDocument();
RepDocumentPdf.prototype.constructor = RepDocumentPdf;
RepDocumentPdf.prototype.initProcess = function(allfields,container,bprint,imgfields,simulatedData){
this.container = container;
this.setParent();
this.setDocument();
this.setWindow();
var pformat = this.obj.page.format.toLowerCase();
var porientation = this.obj.page.orientation.toLowerCase();
if(this.obj.page.format.toLowerCase() == 'custom') {
var w = this.obj.page.width + "mm";
var h = this.obj.page.height + "mm";
var ww = convertStringToPx(w)/ptTopx;
var hh = convertStringToPx(h)/ptTopx;
if(porientation == 'portrait')
porientation = 'n';
else
porientation = 's';
pformat = [];
pformat[0] = ww;
pformat[1] = hh;
}
this.jspdf = new jspdf.jsPDF(porientation,"pt",pformat);
if (bprint){
this.jspdfprint = new jspdf.jsPDF(porientation,"pt",pformat);
this.jspdfprint.autoPrint();
}
else
this.jspdfprint = null;
this.allfields = allfields;
this.imgfields = imgfields;
this.mrows = 0;
this.lastRec = null;
this.simulatedData = simulatedData;
};
RepDocumentPdf.prototype.appendFontsInDocument = function () {
var list = this._fontList;
for (var i = 0; i < list.length; i++) {
this.jspdf.addFileToVFS(list[i] + ".ttf", window._fontMap[list[i]].cont);
this.jspdf.addFont(list[i] + ".ttf", window._fontMap[list[i]].name, window._fontMap[list[i]].style);
this.jspdf.addFont(list[i] + ".ttf", window._fontMap[list[i]].name.toLowerCase(), window._fontMap[list[i]].style);
if (this.jspdfprint != null) {
this.jspdfprint.addFileToVFS(list[i] + ".ttf", window._fontMap[list[i]].cont);
this.jspdfprint.addFont(list[i] + ".ttf", window._fontMap[list[i]].name, window._fontMap[list[i]].style);
this.jspdfprint.addFont(list[i] + ".ttf", window._fontMap[list[i]].name.toLowerCase(), window._fontMap[list[i]].style);
}
}
};
RepDocumentPdf.prototype.endProcess = function(){
var totP = (this.isPreview && this.isEoPreview()) ? this.gwork.rpagecounter : this.gwork.pagecounter;
this.jspdf.putTotalPages("Total pages", totP);
if (this.jspdfprint != null)
this.jspdfprint.putTotalPages("Total pages", totP);
if(this.autoprint)this.jspdf.autoPrint();
if(this.container.tagName.toLowerCase()=='iframe')
this.addInFrame(this.container);
else{
this.setIFrame();
this.addInFrame(document.getElementById(this.container.id+"ifrprev"));
}
this.removeLoading();
if(this.autodownload)this.download();
this.end = true;
this.removeCanvasImages();
if (!this._dontruncb)
this.execFncCallback();
};
RepDocumentPdf.prototype.removeLastLabelContinue = function(){
// ripreso da algoritmo page numb in jspdf.js
function removelabelcontinue(jspdf){
if(jspdf==null) return;
var lastpage = jspdf.internal.getNumberOfPages();
var i,n;
var replaceExpression = new RegExp("CONTINUE_GF", 'g');
for(n=1; n<=lastpage; n++){
for(i=jspdf.internal.pages[n].length-1; i>=0; i--){
if(jspdf.internal.pages[n][i].search(replaceExpression)>=0)
jspdf.internal.pages[n].splice(i,1);
}
}
replaceExpression = new RegExp("CONTINUE", 'g');
for(i=jspdf.internal.pages[lastpage].length-1; i>=0; i--){
if(jspdf.internal.pages[lastpage][i].search(replaceExpression)>=0)
jspdf.internal.pages[lastpage].splice(i,1);
}
};
removelabelcontinue(this.jspdf);
removelabelcontinue(this.jspdfprint);
};
RepDocumentPdf.prototype.pageNumber = function(){
};
RepDocumentPdf.prototype.drawNewPage = function(firstpage){
function insertpage(jspdf){
if(jspdf==null) return;
if(!firstpage)
jspdf.addPage();
};
insertpage(this.jspdf);
insertpage(this.jspdfprint);
this.lastElement = null;
this.updateLoading();
};
RepDocumentPdf.prototype.getLastChildElement = function(){
return this.lastElement;
};
RepDocumentPdf.prototype.addCurrentZone = function (objzone /*, zoneid*//*, numrec*/ ){
this.lastElement = { height : objzone.height /*px*/
, left : 0 /*px*/
, width : this.gwork.ww - ( this.gwork.marginl + this.gwork.marginr ) /*px*/
, top : ( ( ( this.lastElement || {} ).height || 0 )
+ ( ( this.lastElement || {} ).top || 0 )
) /*px*/
}
;
};
RepDocumentPdf.prototype.updateZoneHeight = function(h){
if(this.lastElement && this.lastElement.height)
this.lastElement.height = this.lastElement.height+h;
};
RepDocumentPdf.prototype.getItemValue = function(k, item, zoneid, repObj, useLastRecord){
var value = "";
var mdata = useLastRecord?repObj.lastRec:repObj.propertyValue[k];
if(item.type=="label"){
value = item.value;
if(item.isContinue && zoneid!="pagefooter" && repObj.lastGrpFooter)
value+="_GF";
}
else if(item.typeView=="pagenum"){
if(item.fieldDetail.desc == "Page number")
value = repObj.gwork.pagecounter;
else
value = item.fieldDetail.desc;
}
else if(item.typeView.indexOf("date")>=0){
if(item.isGeneric)
value = setCurrentDateTime(repObj.datetime,item);
else if(mdata[item.fieldDetail.alias+'##pic'])
value = mdata[item.fieldDetail.alias+'##pic'];
else
value = setCurrentDateTime(mdata[item.fieldDetail.alias],item);
}
else if(item.typeView=='numeric'){
if (item.calculation && !Empty(item.calculation.type) && item.calculation.type != 'none')
value = repObj.setFormatNumber(repObj.calcObjs[item.calculation.type][item.fieldDetail.alias][item.uid], item.fieldDetail.len, item.fieldDetail.dec, item.stdPicture);
else if ("value" in item && !Empty(item.value + "")) // totale
value = repObj.setFormatNumber(item.value, null, null, item.stdPicture);
else if(mdata[item.fieldDetail.alias+'##pic'])
value = mdata[item.fieldDetail.alias+'##pic'];
else
value = repObj.setFormatNumber(mdata[item.fieldDetail.alias],item.fieldDetail.len,item.fieldDetail.dec,item.stdPicture);
}
else if (item.fieldDetail && item.fieldDetail.type == "checkbox")
item.style.imageSrc = (Empty(mdata[item.fieldDetail.alias])) ? repObj.uncheckedSrc : repObj.checkedSrc;
else if (item.type!="line") {
if(mdata[item.fieldDetail.alias+'##pic'])
value = mdata[item.fieldDetail.alias+'##pic'];
else
value = Format(mdata[item.fieldDetail.alias],item.fieldDetail.len,item.fieldDetail.dec,item.stdPicture);
}
return value;
};
RepDocumentPdf.prototype.getTextDimensions = function(text, font) {
var fsize = convertStringToPx(font.size),
px2pt = 72 / 96;
var numr = 1;
if(!Empty(text)) numr = text.split(/[\n\r]/g).length;
var fstyle = "";
if(font.weight == 'bold')
fstyle = "bold";
if(font.italic == 'italic')
fstyle += "italic";
/* if(!Empty(fstyle))
this.jspdf.setFontStyle(fstyle);
else
this.jspdf.setFontStyle("normal");*/
var fname = font.name;
if (fname.indexOf("Times") >= 0)
fname = "times";
if(!Empty(fstyle))
this.jspdf.setFont(fname, fstyle);
else
this.jspdf.setFont(fname, "normal");
var w = Math.round(this.jspdf.getStringUnitWidth(text, { fontSize: fsize*px2pt} ) * fsize);
return { width : w /*px*/
, height: fsize * numr /*px*/
};
}
RepDocumentPdf.prototype.addItemInZone = function (k, item, objzone, zoneid, value, yRel/*, split, nrow*/) {
function hex2rgb ( colorhex ) {
// inspired by jspdf
var hex = parseInt( colorhex.substr( 1 ), 16 );
return [ ( hex >> 16 ) & 255 /*R*/
, ( hex >> 8 ) & 255 /*G*/
, hex & 255 /*B*/
];
} // hex2rgb
function insertinpdf(jspdf, repobj, zoneid){
if (jspdf == null)
return;
var myimg, txtDimensions, msrc
, px2pt = 72 / 96
, posObj = { x : item.position.x + repobj.lastElement.left + repobj.gwork.marginl
, y : yRel + repobj.lastElement.top + repobj.gwork.margint
, w : item.position.width
, h : item.position.height
}
, fstyle = ""
;
var noprint = false;
if (zoneid == "groupfooter" && repobj.obj.groupfooter.options.printOnGroupBreak && !repobj.lastGrpFooter)
noprint = true;
var opt, loaded;
switch (item.typeView) {
case "line":
var tmpw = posObj.w;
if (item.style.stretchToRight) {
var nl = repobj.gwork.ww - repobj.gwork.marginl - repobj.gwork.marginr - posObj.x;
tmpw = nl;
}
jspdf.setFillColor.apply( jspdf, hex2rgb( item.style.line.color ) );
jspdf.setDrawColor.apply( jspdf, hex2rgb( item.style.line.color ) );
if(item.style.line.onlyStroke) {
jspdf.rect( posObj.x * px2pt /*x1*/
, posObj.y * px2pt /*y1*/
, tmpw * px2pt /*x2*/
, posObj.h * px2pt /*y2*/
, 'S'
);
}
else {
jspdf.rect( posObj.x * px2pt /*x1*/
, posObj.y * px2pt /*y1*/
, tmpw * px2pt /*x2*/
, posObj.h * px2pt /*y2*/
, 'F'
);
}
break;
case "barcode" :
opt = {};
msrc = LibJavascript.AlfaKeyGen(5);
opt.x = Math.round(posObj.x*px2pt);
opt.y = Math.round(posObj.y*px2pt);
opt.width = Math.round(posObj.w*px2pt);
opt.height = Math.round(posObj.h*px2pt);
opt.alias = msrc;
opt.nPage = jspdf.internal.getCurrentPageInfo().pageNumber;
opt.barcode = true;
opt._newWidth = 0;
opt._msrc = msrc;
repobj.optMapImg.push(opt);
repobj.imgMap[msrc] = new Image();
repobj.imgMap[msrc].id = msrc;
loaded = function(){
repobj.imgCount++;
repobj.imgMap[msrc] = this;
var item = repobj.optMapImg.filter(function(item){ return item._msrc == msrc; }),
iw = this.width;
if (!Empty(item) && !Empty(item[0])) {
if (item[0].width < iw)
item[0]._newWidth = iw * px2pt;
}
}
generateBarcode(item, value, repobj.imgMap[msrc], opt.width, opt.height, loaded);
break;
case "html" :
if (!repobj.simulatedData) {
var mid = k + "_" + (item.colIdx || "") + "_" + zoneid + "_" + item.fieldDetail.alias,
mvalue = item.style.htmlSrc;
if (!item.isGeneric)
mvalue = value;
repobj.renderHTMLtoCanvas(item, mvalue, mid);
if (noprint && !item.isGeneric) { }
else {
opt = {};
opt.x = posObj.x*px2pt;
opt.y = posObj.y*px2pt;
opt.width = posObj.w*px2pt;
opt.height = posObj.h*px2pt;
opt.alias = mid;
opt.nPage = jspdf.internal.getCurrentPageInfo().pageNumber;
repobj.optMapImg.push(opt);
}
}
break;
case "image":
if (!repobj.simulatedData) {
if (item.isGeneric)
msrc = item.style.imageSrc;
else
msrc = repobj.propertyValue[k][item.fieldDetail.alias];
// tratto il caso src:tooltip che potrebbe arrivarmi da griglia o da query
var dp_split = msrc.split(":");
if (dp_split.length > 1)
msrc = dp_split[0];
if (msrc.indexOf(repobj.rootApp)!=0 && msrc.indexOf(repobj.rootAppB)!=0 && !Empty(msrc))
msrc = repobj.rootApp + msrc;
if (noprint && !item.isGeneric) { }
else {
if (repobj.offline) {
myimg = repobj.imgMap[msrc];
if (typeof(myimg) != "undefined")
jspdf.addImage(myimg,"png",posObj.x*px2pt,posObj.y*px2pt,posObj.w*px2pt,posObj.h*px2pt,myimg.src);
}
else {
opt = {};
opt.x = posObj.x*px2pt;
opt.y = posObj.y*px2pt;
if (item.isGeneric && item.fieldDetail && item.fieldDetail.type == "checkbox")
opt.width = opt.height = Math.min(posObj.w, posObj.h) * px2pt;
else {
opt.width = posObj.w*px2pt;
opt.height = posObj.h*px2pt;
}
opt.alias = msrc;
opt.nPage = jspdf.internal.getCurrentPageInfo().pageNumber;
repobj.optMapImg.push(opt);
if (!Empty(msrc) && !(msrc in repobj.imgMap)) {
repobj.imgMap[msrc] = new Image();
repobj.imgMap[msrc].src = msrc;
// onload
loaded = function() {
repobj.imgCount++;
}
if (repobj.imgMap[msrc].complete)
loaded();
else
repobj.imgMap[msrc].addEventListener('load', loaded);
}
}
}
}
break;
case "signmup":
opt = {};
opt.title = item.signmup.title;
opt.obligatory = item.signmup.brequired;
opt.requirePosition = item.signmup.bgeoposition;
opt.signIdx = item.signmup.sequence;
var df = item.signmup.dateformat;
var tf = item.signmup.timeformat;
if(df == 'None') df = '';
if(tf == 'None') tf = '';
if(!Empty(df)){
df = Strtran(df, "Y", "y");
df = Strtran(df, "D", "d");
}
if(!Empty(tf)){
tf = Strtran(tf, "M", "m");
tf = Strtran(tf, "S", "s");
}
if(!Empty(df) && !Empty(tf)) df = df + ' ' + tf;
else if(Empty(df) && !Empty(tf)) df = tf;
if(!Empty(df))
opt.dateFormat = df;
opt.hideExtraText = item.signmup.bhideextra;
opt.x = Math.round(posObj.x*px2pt);
opt.y = Math.round(posObj.y*px2pt);
opt.width = Math.round(posObj.w*px2pt);
opt.height = Math.round(posObj.h*px2pt);
jspdf.createMarkup(opt);
break;
default:
var numr = 1;
value = value + '';
var fname = item.style.font.fontName.toLowerCase();
if (fname.indexOf("times") >= 0)
fname = "times";
if (!Empty(value))
numr = value.split(/[\n\r]/g).length;
txtDimensions = repobj.getTextDimensions(value
, {
name: fname
, size: item.style.font.fontSize
, weight: item.style.font.bold ? 'bold' : 'normal'
, italic: item.style.font.italic ? 'italic' : 'normal'
}
);
posObj.y += txtDimensions.height / numr;
// font
if (item.style.font.bold)
fstyle = "bold";
if (item.style.font.italic)
fstyle += "italic";
/*if(!Empty(fstyle))
jspdf.setFontStyle(fstyle);
else
jspdf.setFontStyle("normal");*/
if (!Empty(fstyle))
jspdf.setFont(fname, fstyle);
else
jspdf.setFont(fname, "normal");
var fsize = convertStringToPx(item.style.font.fontSize);
jspdf.setFontSize(fsize * px2pt);
jspdf.setTextColor(item.style.font.fontColor);
if (item.style.font.right)
posObj.x += posObj.w - txtDimensions.width;
else if (item.style.font.center)
posObj.x += (posObj.w - txtDimensions.width) / 2;
if (noprint && item.type == 'field' && !item.isGeneric && item.typeView != "image")
value = "";
jspdf.text(value + '', posObj.x * px2pt, posObj.y * px2pt);
if (item.style.font.underline) {
jspdf.setDrawColor(item.style.font.fontColor);
jspdf.line(posObj.x * px2pt, (posObj.y + 2) * px2pt, (posObj.x + txtDimensions.width + 2) * px2pt, (posObj.y + 2) * px2pt);
jspdf.setDrawColor("#000000"); // ripristino default
}
if (item.style.font.strikeout) {
jspdf.setDrawColor(item.style.font.fontColor);
jspdf.line(posObj.x * px2pt, (posObj.y - (fsize / 2) + 2) * px2pt, (posObj.x + txtDimensions.width + 2) * px2pt, (posObj.y - (fsize / 2) + 2) * px2pt);
jspdf.setDrawColor("#000000"); // ripristino default
}
break;
}
};
if( value == null ) value = '';
insertinpdf(this.jspdf, this, zoneid);
insertinpdf(this.jspdfprint, this, zoneid);
}; // addItemInZone
RepDocumentPdf.prototype.renderHTMLtoCanvas = function (item, value, ctrlid) {
var doc = document,
mdiv = doc.createElement("div"),
id = ctrlid + "_canvimg";
if (!Empty(doc.getElementById(id)))
mdiv = doc.getElementById(id);
else {
mdiv.id = id;
mdiv.style.visibility = "hidden";
mdiv.innerHTML = value;
mdiv.style.position = "absolute";
mdiv.style.top = "0px";
mdiv.style.left = "0px";
mdiv.style.width = item.position.width + "px";
mdiv.style.height = item.position.height + "px";
doc.body.appendChild(mdiv);
}
if (typeof html2canvas !== 'undefined') {
var repobj = this;
html2canvas(mdiv, {
onrendered : function (newCanvas) {
var img = new Image();
img.src = newCanvas.toDataURL('image/png');
repobj.imgMap[Strtran(id, "_canvimg", "")] = img;
repobj.imgCount++;
if (doc.getElementById(id))
doc.getElementById(id).parentNode.removeChild(doc.getElementById(id));
},
width: item.position.width,
height: item.position.height
});
}
}
var mcounter = 1;
RepDocumentPdf.prototype.checkImages = function () {
var repobj = this;
var currimg = repobj.imgCount;
var totimg = Object.keys(repobj.imgMap).length;
if (currimg != totimg && mcounter <= 5) {
setTimeout( function () {
repobj.checkImages();
mcounter ++;
}, 250)
return;
}
putImagesInPDF(this.jspdf);
if (this.jspdfprint)
putImagesInPDF(this.jspdfprint);
function putImagesInPDF(jspdf) {
/* potrebbero esserci problemi in rendering delle immagini gif */
for (var kk = 0; kk < repobj.optMapImg.length; kk++) {
jspdf.setPage(repobj.optMapImg[kk].nPage);
try {
if (repobj.optMapImg[kk].alias in repobj.imgMap) {
var img = repobj.imgMap[repobj.optMapImg[kk].alias];
jspdf.addImage( img,
"png",
repobj.optMapImg[kk].x,
repobj.optMapImg[kk].y,
repobj.optMapImg[kk]._newWidth || repobj.optMapImg[kk].width,
repobj.optMapImg[kk].height,
repobj.optMapImg[kk].alias
);
}
}
catch (e) {
//console.log(e)
}
}
}
this.endProcess();
delete this.obj.emptyzone;
if (this.end && this.format == "IARViewer" && window.navigator.userAgent.match( /zRuntime/ )) {
this.view(this.fncCallBack);
}
}
RepDocumentPdf.prototype.getDataUrl = function () {
datauristring || ( datauristring = this.jspdf.output( 'datauristring' ) );
return datauristring;
};
RepDocumentPdf.prototype.download = function () {
var akey = LibJavascript.AlfaKeyGen(5);
var a = document.createElement('a');
a.setAttribute("id", akey);
document.body.appendChild(a);
this.generatePdfUrl(a, true);
};
RepDocumentPdf.prototype.addInFrame = function (iframe) {
if (iframe) {
if (Empty(iframe.name))
iframe.name = iframe.id;
this.generatePdfUrl(iframe);
}
this.removeLoading();
};
RepDocumentPdf.prototype.print = function () {
if(this.jspdfprint==null) return;
var self = this;
if ( window.navigator.userAgent.match( /zRuntime/ ) ) {
window.SPOfflineLib.importCordova(
function saveAndPrint () {
window.zRuntime.pdf.print( self.getDataUrl()
, function success () {}
, fail
);
}
, fail
);
function fail (error) {
console.log( error );
alert( "Unexpected error: " + error );
}
}
else {
var iframeid = this.uid + "streamiframe"
, iframe = document.getElementById( iframeid )
;
if ( !iframe ) {
iframe = document.createElement("IFRAME");
iframe.id = iframeid;
iframe.name = iframeid;
iframe.width = "1px";
iframe.height = "1px";
iframe.frameborder = 0;
iframe.style.border = 0;
iframe.allowTransparency = true;
document.body.appendChild(iframe);
}
this.generatePdfUrl(iframe);
}
};
RepDocumentPdf.prototype.view = function (successCallback) {
var self = this;
if ( window.navigator.userAgent.match( /zRuntime/ ) ) {
function fail (error) {
console.log( error );
alert( "Unexpected error: " + error );
}
function createView () {
zRuntime.pdf.open( self.getDataUrl()
, self.options
, success
, fail
);
function success ( resultObj ) {
/*
resultObj
{
modified: indica se il pdf ha subito un processo di modifica da parte del viewer interno
fileUri: percorso del file pdf sul dispositivo (se returnType = fileUri)
base64: base64 del file pdf (se returnType = base64)
}
*/
if(successCallback){
successCallback(resultObj, self);
}
window.close();
}
}
(window.SPMobileLib || window.SPOfflineLib).importCordova( createView, fail );
}
else {
var iframeid = this.uid+"streamiframe"
, iframe = document.getElementById(iframeid)
;
if ( !iframe ) {
iframe = document.createElement("IFRAME");
iframe.id = iframeid;
iframe.name = iframeid;
iframe.width = "1px";
iframe.height = "1px";
iframe.frameborder = 0;
iframe.style.border = 0;
iframe.allowTransparency = true;
document.body.appendChild(iframe);
}
this.generatePdfUrl(iframe);
}
};
RepDocumentPdf.prototype.drawPreviewValidator = function () {
var mlimits;
if(this.obj.page.format == 'custom') {
mlimits = [];
mlimits[0] = convertStringToPx(this.obj.page.width + "mm");
mlimits[1] = convertStringToPx(this.obj.page.height + "mm");
}
else if (window.jsPDFPageFormats)
mlimits = window.jsPDFPageFormats[this.obj.page.format.toLowerCase()];
if (this.jspdf)
drawTextValidator(this.jspdf, mlimits, this.obj, this.watermark);
if (this.jspdfprint)
drawTextValidator(this.jspdfprint, mlimits, this.obj, this.watermark);
function drawTextValidator(jspdf, mlimits, obj, watermark) {
//jspdf.setFontStyle("bold");
jspdf.setFont("helvetica", "bold");
jspdf.setFontSize(24);
jspdf.setTextColor("#E51400");
if(!Empty(watermark)) {
var w = jspdf.getStringUnitWidth(watermark) * 24;
if (obj.page.orientation.toLowerCase() == "portrait")
jspdf.text(watermark, mlimits[0]/4, mlimits[1]/2 - Math.sin(45)*w/2, -45);
else
jspdf.text(watermark, mlimits[1]/4, mlimits[0]/2 - Math.sin(45)*w/2, -45);
}
}
};
RepDocumentPdf.prototype.generatePdfUrl = function (htmlItem, isDownload) {
var durl = this.getDataUrl(),
end_pos = durl.indexOf("base64,"),
len = end_pos + ("base64,").length,
mData = b64toBlob(durl.substr(len), "application/pdf", true),
mUrl = URL.createObjectURL(mData);
if (isDownload) {
if (typeof htmlItem.download == "undefined") {
if (navigator.msSaveBlob)
navigator.msSaveBlob(mData, (Empty(this.name) ? LibJavascript.AlfaKeyGen(10) : this.name) + ".pdf");
else
(window.PSAlert||window).alert('Browser Not Implemented Client Side Download!!!');
}
else {
htmlItem.href = mUrl;
htmlItem.download = (Empty(this.name) ? LibJavascript.AlfaKeyGen(10) : this.name) + ".pdf";
htmlItem.click();
}
document.body.removeChild(htmlItem);//rimuovere il link
}
else {
var framedoc = ( htmlItem.contentWindow || htmlItem.contentDocument ).document;
var srcurl;
if (IsIE()) {
if(mData.size <= 1572229) { // valore in B testato su 2855 record in stampa da zoom e ultimo accettabile per la stampa - EG 20161020
srcurl = ZtVWeb.SPWebRootURL + "/servlet/Base64DecodeDownload?base64data=" + durl + "&fileName=" + (Empty(this.name) ? LibJavascript.AlfaKeyGen(10) : this.name) + ".pdf";
windowOpenForeground(srcurl, htmlItem.name, null, null, null, framedoc);
}
else {
navigator.msSaveOrOpenBlob(mData)
htmlItem.frameBorder = "no";
htmlItem.allowTransparency = true;
var msg = "RPT_TOO_BIG_FOR_VIEW";
srcurl = "../jsp-system/SPReportMaskMessage_portlet.jsp?hideWarning=true&msgBox=" + msg;
windowOpenForeground(srcurl, htmlItem.name, null, null, null, framedoc);
}
}
else
htmlItem.src = mUrl;
}
}
return new RepDocumentPdf( name, uid );
} // privateContext
window.RepDocumentPdf = privateContext;
})(window, document);