Javascript 在基于phonegap的应用程序上使用jspdf生成客户端pdf

Javascript 在基于phonegap的应用程序上使用jspdf生成客户端pdf,javascript,android,cordova,jspdf,Javascript,Android,Cordova,Jspdf,我尝试从本地数据生成pdf 我对ArrayBuffer()和Uint8Array对象有问题。解决方案是添加一个我在互联网上找到的js实现 现在这一行有一个错误: E/Web控制台(21515):未捕获类型错误:在file:///android_asset/www/libs/jspdf.js:973 这是一行: blob=newblob([array],{type:“application/pdf”}) 我添加了BlobBuilder.js和Blob.js(类似于jspdf示例) 一般来说,是否可

我尝试从本地数据生成pdf

我对ArrayBuffer()和Uint8Array对象有问题。解决方案是添加一个我在互联网上找到的js实现

现在这一行有一个错误:

E/Web控制台(21515):未捕获类型错误:在file:///android_asset/www/libs/jspdf.js:973

这是一行:

blob=newblob([array],{type:“application/pdf”})

我添加了BlobBuilder.js和Blob.js(类似于jspdf示例)

一般来说,是否可以使用jspdf实现这一点?(我发现jspdf有很多问题)

我怎样才能解决这个问题

如何在浏览器、android和ios上生成PDF


感谢您的帮助,祝您度过愉快的一天:-)

Blob构造函数在android中不起作用(不支持所有web浏览器)。 快速解决方案是,使用Phonegap filewriter创建PDF文件。以下是对jsPDF.js文件的更改:

output = function (type, options) {
            var undef, data, length, array, i, blob;
            switch (type) {
            case undef:
                return buildDocument();
            case 'save':
                if (navigator.getUserMedia) {
                    if (window.URL === undefined) {
                        return API.output('dataurlnewwindow');
                    } else if (window.URL.createObjectURL === undefined) {
                        return API.output('dataurlnewwindow');
                    }
                }
                data = buildDocument();
                write(data, options);                    
                break;
            case 'datauristring':
            case 'dataurlstring':
                return 'data:application/pdf;base64,' + btoa(buildDocument());
            case 'datauri':
            case 'dataurl':
                document.location.href = 'data:application/pdf;base64,' + btoa(buildDocument());
                break;
            case 'dataurlnewwindow':
                window.open('data:application/pdf;base64,' + btoa(buildDocument()));
                break;
            default:
                throw new Error('Output type "' + type + '" is not supported.');
            }
            // @TODO: Add different output options
        };
从CLI将cordova文件插件添加为“cordova插件添加org.apache.cordova.file”

接下来使用phonegap filewriter API实现write()函数,如下所示:

write = function (data, filename) {
    var PERSISTENT = window.PERSISTENT || LocalFileSystem.PERSISTENT;

window.requestFileSystem(PERSISTENT, 0, gotFS, fail);

function gotFS(fileSystem) {
    fileSystem.root.getFile(filename, {create: true, exclusive: false}, gotFileEntry, fail);
}

function gotFileEntry(fileEntry) {
    fileEntry.createWriter(gotFileWriter, fail);
}

function gotFileWriter(writer) {
    writer.write(data);
}

function fail(error) {
    console.log(error.code);
 }
}

我正在尝试做同样的事情,我有同样的错误,我在这里捕捉“案例2”Hi-Vinod,在实现了您的代码之后,现在我只能下载大小为0的文件。我错过了什么。等待你的答复。
write = function (data, filename) {
    var PERSISTENT = window.PERSISTENT || LocalFileSystem.PERSISTENT;

window.requestFileSystem(PERSISTENT, 0, gotFS, fail);

function gotFS(fileSystem) {
    fileSystem.root.getFile(filename, {create: true, exclusive: false}, gotFileEntry, fail);
}

function gotFileEntry(fileEntry) {
    fileEntry.createWriter(gotFileWriter, fail);
}

function gotFileWriter(writer) {
    writer.write(data);
}

function fail(error) {
    console.log(error.code);
 }
}