Javascript 从HTML创建PDF并将其自动保存在DB上-徽标图像不显示在PDF中
当我保存生成的PDF文件并将其自动保存到数据库中时,我遇到了一个无法显示的图像问题。我有两个功能。第一,点击按钮,下载生成的pdf文件,该文件顶部带有徽标;第二,一旦你批准了一个请求,我会在数据库中保存一个PDF文件,但是徽标不会出现。 这是我的密码。其中,当我创建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
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。有人找到了解决方法吗?