Javascript 从HTML创建PDF并将其自动保存在DB上-徽标图像不显示在PDF中

Javascript 从HTML创建PDF并将其自动保存在DB上-徽标图像不显示在PDF中,javascript,jquery,angularjs,jspdf,Javascript,Jquery,Angularjs,Jspdf,当我保存生成的PDF文件并将其自动保存到数据库中时,我遇到了一个无法显示的图像问题。我有两个功能。第一,点击按钮,下载生成的pdf文件,该文件顶部带有徽标;第二,一旦你批准了一个请求,我会在数据库中保存一个PDF文件,但是徽标不会出现。 这是我的密码。其中,当我创建PDF时工作正常,但当我上载附件时,不会显示图像: function createPDF(){ var pdf = new jsPDF('p', 'pt', 'letter'); // var doc = new jsPDF

当我保存生成的PDF文件并将其自动保存到数据库中时,我遇到了一个无法显示的图像问题。我有两个功能。第一,点击按钮,下载生成的pdf文件,该文件顶部带有徽标;第二,一旦你批准了一个请求,我会在数据库中保存一个PDF文件,但是徽标不会出现。 这是我的密码。其中,当我创建PDF时工作正常,但当我上载附件时,不会显示图像:

function createPDF(){
  var pdf = new jsPDF('p', 'pt', 'letter');

  // var doc = new jsPDF();
  var specialElementHandlers = {
    '#editor': function (element, renderer) {
      return true;
    }
  };
  pdf.setFont("helvetica");
  pdf.text("STAR PROGRAM", 238, 105);
  pdf.text('Staff Teamwork Appreciation and Recognition', 145, 125);
  pdf.setFontSize(20);
  pdf.fromHTML($('#PdfDiv').html(), 40, 155, {
    'width': 540,
    'elementHandlers': specialElementHandlers
  });
  var image = data:image/jpeg;base64,theImageBase64CodeIsHereButIDeletedItToSaveSpace";
  pdf.addImage(image, 'JPEG', 230, 40, 160, 40);
  pdf.save('START_' + $scope.nominee + '.pdf');            
}
上面的代码有效。 但是,当我使用与设置pdf变量相同的设置时,但是这次我创建了一个BLOB来自动保存pdf,然后pdf保存在DB中,但没有图像。这是我的代码:

function uploadAttachment(name) {
        //here is the code above without the last line (pdf.save)
        var data = pdf.output(); 
        var buffer = new ArrayBuffer(data.length); 
        var array = new Uint8Array(buffer);
        for (var i = 0; i < data.length; i++) { 
            array[i] = data.charCodeAt(i);
        }

        var blob = new Blob([array], {
            type: 'image/pdf', encoding:'raw'
        });

        //var blob = new Blob([array], {
        //    type: 'application/pdf;base64'
        //});

        var reader = new FileReader();
        var getFileBuffer = function (blob) {

            var deferred = $.Deferred();


            reader.onload = function (e) {
                deferred.resolve(e.target.result);
            }

            reader.onerror = function (e) {
                deferred.reject(e.target.error);
            }

            reader.readAsArrayBuffer(blob);

            return deferred.promise();
        };

        getFileBuffer(blob).then(function (buffer) {
            timestamp = new Date().valueOf();
            var binary = "";
            var bytes = new Uint8Array(buffer);
            var i = bytes.byteLength;
            while (i--) {
                binary = String.fromCharCode(bytes[i]) + binary;
            }
            $http({                    
                method: "POST",
                url: endpointUrl + "(" + Id + ")/AttachmentFiles/add(FileName='START_"+ name+"23.pdf')",
                data: binary,
                headers: {
                    "accept": "application/json;odata=verbose",
                    "X-RequestDigest": $("#__REQUESTDIGEST").val(),
                    "content-length": binary.byteLength
                }
            })
            .then(function (success) {
                alert("You have attached the file succesfully!");
            },
            function (error) {
                alert("File already exists! Try a different name.");
            });

        });
    }
函数上传附件(名称){
//这是上面没有最后一行的代码(pdf.save)
var data=pdf.output();
var buffer=new ArrayBuffer(data.length);
var数组=新的Uint8Array(缓冲区);
对于(var i=0;i

以前有人有过这个问题吗?我找不到无法保存带有徽标图像的PDF的原因。请帮帮我。

var imgData='数据:image/jpeg;base64,verylongbase64;'pdf.addImage(imgData,'JPEG',15,40,180,180);也许这能帮上忙谢谢你,尼基塔,但我已经做到了:(如果我将图像下载到电脑上,我可以看到它,但是如果我自动将PDF保存到列表中,我就看不到它。你是否尝试使用PNG而不是JPEG?当我尝试使用PNG时,我收到另一个错误,说PNG不受支持。我以前尝试过PNG,这就是为什么我改为JPEG…但我仍然不认为图像的类型是不支持的我想在创建blob时我需要做一些事情。但是没有发现任何与我的问题相关的东西。我仍然无法解决这个问题,所以当人们点击我的链接时,我生成了没有徽标的PDF。有人找到了解决方法吗?