sapui5框架图到pdf问题

sapui5框架图到pdf问题,sapui5,Sapui5,我无法使用sapui5中的vizFrame将图形转换为PDF,使用版本1.28.30由于客户端原因无法更改版本。这是我的代码,请检查并帮助我 我得到了半张图作为结果PDF。为此,我导入了所有需要的库,如canvgg,jsPdf,rgbColor,stackblur.js 你的PDF是A4大小;这是595 x 842(将其视为72 PPI)。但是您的图像Canvas是600x450。这就产生了问题。尝试减小传递给doc.addImage方法的Canvas大小。像 doc.addImage(img

我无法使用
sapui5
中的
vizFrame
将图形转换为PDF,使用版本1.28.30由于客户端原因无法更改版本。这是我的代码,请检查并帮助我


我得到了半张图作为结果PDF。为此,我导入了所有需要的库,如
canvgg
jsPdf
rgbColor
stackblur.js

你的PDF是A4大小;这是595 x 842(将其视为72 PPI)。但是您的图像
Canvas
600x450。这就产生了问题。尝试减小传递给
doc.addImage
方法的
Canvas
大小。像

doc.addImage(imgData, 'PNG', 0, 0, 590, 450);
工作代码示例:

pressToPdf:function(oEvent){
    var oVizFrame = thatgrowth.getView().byId("ID_GROWTH_CHART_LENGTH_SCALE");
    var svg  = oVizFrame.getDomRef().getElementsByTagName("svg")[1];
    var canvas = document.createElement('canvas');
    var bBox = svg.getBBox();
    canvas.width = bBox.width;
    canvas.height = bBox.height;
    var context = canvas.getContext('2d');
    context.fillstyle = "rgb(255,255,255)";  //Set the context background
    context.fillRect(0, 0, canvas.width, canvas.height); //Apply background to chart rect
    var imageObj = new Image();
    imageObj.onload = function()
    {
        context.drawImage(imageObj, 0, 0, canvas.width, canvas.height);
        var dataURL = canvas.toDataURL('image/jpeg');   //Save as JPEG instead of base64
        var doc = new jsPDF('l', 'mm', 'a4');           //A4 landscape 297 x 210
        var imgHeigth = 190 * (bBox.height / bBox.width);
        doc.addImage(dataURL, 'JPEG', 10, 20, 227, 180);  //Download full page chart as PDF
        doc.save('chart_in_pdf');
    };

    imageObj.src = "data:image/svg+xml," + 
          jQuery.sap.encodeURL(svg.outerHTML.replace(/^svg/, 
                              '<svg xmlns="https://www.w3.org/2000/svg" version="1.1"'));
},
按topdf:功能(oEvent){
var oVizFrame=thatgrowth.getView().byId(“ID\u GROWTH\u CHART\u LENGTH\u SCALE”);
var svg=oVizFrame.getDomRef().getElementsByTagName(“svg”)[1];
var canvas=document.createElement('canvas');
var bBox=svg.getBBox();
canvas.width=bBox.width;
canvas.height=bBox.height;
var context=canvas.getContext('2d');
context.fillstyle=“rgb(255255255)”;//设置上下文背景
context.fillRect(0,0,canvas.width,canvas.height);//将背景应用于图表rect
var imageObj=新图像();
imageObj.onload=函数()
{
drawImage(imageObj,0,0,canvas.width,canvas.height);
var dataURL=canvas.toDataURL('image/jpeg');//另存为jpeg而不是base64
var doc=new jsPDF('l','mm','a4');//a4横向297 x 210
var Imgheighth=190*(箱高/箱宽);
doc.addImage(dataURL,'JPEG',10,20,227,180);//下载PDF格式的整版图表
doc.save('chart_in_pdf');
};
imageObj.src=“数据:image/svg+xml,”+
jQuery.sap.encodeURL(svg.outerHTML.replace(/^svg/),

“我得到了一半的图形作为结果PDF。为此,我导入了所有需要的库,如canvgg、jsPdf、rgbColor、stackblur.js。请帮助,您的PDF是A4大小的,是595 x 842。但是您的图像是600x450。@dhilmathy-谢谢您查看。但是按照您所说的缩小了大小,结果是一样的。”output@SanUser你试过减少代码吗>Rect
大小也一样?
上下文。clearRect(0,0,590,450);
?@dhilmathy-是的,这两个都是一样的。我明白了,问题是
宽度
高度
参数。根据,它应该是
doc.addImmage(imgData,'PNG',0,0,450,590);
。你能试着交换这两个参数吗?@dhilmathy-得到了解决方案。谢谢你的支持
pressToPdf:function(oEvent){
    var oVizFrame = thatgrowth.getView().byId("ID_GROWTH_CHART_LENGTH_SCALE");
    var svg  = oVizFrame.getDomRef().getElementsByTagName("svg")[1];
    var canvas = document.createElement('canvas');
    var bBox = svg.getBBox();
    canvas.width = bBox.width;
    canvas.height = bBox.height;
    var context = canvas.getContext('2d');
    context.fillstyle = "rgb(255,255,255)";  //Set the context background
    context.fillRect(0, 0, canvas.width, canvas.height); //Apply background to chart rect
    var imageObj = new Image();
    imageObj.onload = function()
    {
        context.drawImage(imageObj, 0, 0, canvas.width, canvas.height);
        var dataURL = canvas.toDataURL('image/jpeg');   //Save as JPEG instead of base64
        var doc = new jsPDF('l', 'mm', 'a4');           //A4 landscape 297 x 210
        var imgHeigth = 190 * (bBox.height / bBox.width);
        doc.addImage(dataURL, 'JPEG', 10, 20, 227, 180);  //Download full page chart as PDF
        doc.save('chart_in_pdf');
    };

    imageObj.src = "data:image/svg+xml," + 
          jQuery.sap.encodeURL(svg.outerHTML.replace(/^svg/, 
                              '<svg xmlns="https://www.w3.org/2000/svg" version="1.1"'));
},