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
};
「cordova plugin add org.apache.cordova.file」として CLI から cordova file plugin をプロジェクトに追加します。
次に、以下のように 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);
}
}