在移动设备上使用jsPDF下载

时间:2015-08-07 20:06:56

标签: pdf mobile download tablet jspdf

我有一个页面,其中包含使用jsPDF的下载按钮。在台式机上,它会按原样下载页面。但是,pdf.save()无法在我的平板电脑或手机上使用。

我尝试为移动设备添加一个特殊情况,以便在新窗口中打开PDF,因为移动设备不会下载与桌面相同的内容,因为一旦PDF在新窗口中打开,用户可以选择手动保存。

var pdf = new jsPDF('p', 'pt', 'letter');
var specialElementHandlers = {
    '#editor': function (element, renderer) {
        return true;
    }
};

html2canvas($("#pdf-area"), {
    onrendered: function (canvas) {
        $("#pdf-canvas").append(canvas);
        $("#pdf-canvas canvas").css("padding", "20px");
    }
});

var options = {
    pagesplit: true
};

function download(doctitle) {
    pdf.addHTML($("#pdf-area")[0], options, function () {
        if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
            pdf.output('dataurlnewwindow');           
        } else {
            pdf.save(doctitle);
        }        
    });
}

但是我的平板电脑/手机上的下载功能仍无效。我用它来测试它以确保pdf.output()函数正常工作:

    pdf.addHTML($("#pdf-area")[0], options, function () {
        pdf.output('dataurlnewwindow');                
    });

它仍可在桌面上运行,但在移动设备上无效。

3 个答案:

答案 0 :(得分:1)

我有类似的问题。

jsPDF不会使用" pdf.save()"

在手机/​​平板电脑/ iPad上下载文件

如果您使用cordova / phonegap,请通过File插件执行此操作,这将在下载文件夹(Android)中保存pdf文件 - 对于ios,您可以通过路径(保存在临时目录中的某个位置)访问pdf文件,并且可以发送或分享。

希望这会对你有所帮助。

答案 1 :(得分:1)

以下是您使用Cordova平台进行开发的示例:

https://github.com/saharcasm/Cordova-jsPDF-Email

未在设备中下载pdf的解决方法是使用cordova-plugin-file。

在doc上使用输出方法,它将为您提供需要编写的原始pdf&保存在文件中。

例如,

var doc = new JsPDF(); 
//... some work with the object
var pdfOutput = doc.output("blob"); //returns the raw object of the pdf file

然后使用文件插件将pdfOutput写入实际文件。

答案 2 :(得分:-1)

以下是使用jspdf

在移动设备上下载的解决方案
if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent))
{
     var blob = pdf.output();
     window.open(URL.createObjectURL(blob));
}
else
{
     pdf.save('filename.pdf');
}