我正在尝试通过jspdf编写一个html转换的pdf文件,但它在这里不起作用的是js方法
function gotFileWriter(writer) {
writer.onwriteend = function(evt) {
console.log("contents of file now 'some sample text'");
writer.truncate(11);
writer.onwriteend = function(evt) {
console.log("contents of file now 'some sample'");
writer.seek(4);var pdfOut;
var pdf = new jsPDF('p','pt','a4');
pdf.addHTML(document.body,function() {
pdfOut = pdf.output('datauri');
});
// this alerts shows "Undefined"
alert(pdfOut);
writer.write(pdfOut);
writer.onwriteend = function(evt){
console.log("contents of file now 'some different text'");
}
};
};
var pdfOut;
var pdf = new jsPDF('p','pt','a4');
pdf.addHTML(document.body,function() {
pdfOut = pdf.output('datauri');
});
// this alerts shows "Undefined"
alert(pdfOut);
writer.write(pdfOut);
}
两个警报都显示“未定义”。如果我将其创建为 .txt 文件,则会显示空文件,如果我将其保存为 .pdf ,则会创建损坏的文件。 JsPdf工作正常,因为我可以在日志中看到 pdf.output('datauri'); 的结果是base64字符串......
答案 0 :(得分:1)
addHTML调用是异步的,因此在尝试使用pdf输出之前必须等待完成。另外,使用FileWriter时,“arraybuffer”输出最合适。
试试这个:
function gotFileWriter(writer) {
writer.onwriteend = function (evt) {
console.log("contents of file now 'some sample text'");
// ...
};
var pdf = new jsPDF('p', 'pt', 'a4');
pdf.addHTML(document.body, function () {
writer.write(pdf.output('arraybuffer'));
});
}