
在我的应用程序中,我收到了代表pdf的base64字符串.我希望用户能够将base64作为pdf保存到他的手机.我一直在寻找cordova-file-transfer插件,但是它需要一个(服务器)路径,可以从中下载文件,而不是转换base64字符串.
有没有人成功使用base64字符串在phonegap中下载pdf?
解决方法:
经过更多搜索和尝试之后,我发现了一些有用的方法.
Converting base64 to pdf blob
//Helper function that converts base64 to blobfunction b64toBlob(b64Data, ContentType, sliceSize) { var input = b64Data.replace(/\s/g, ''), byteCharacters = atob(input), byteArrays = [], offset, slice, byteNumbers, i, byteArray, blob; ContentType = ContentType || ''; sliceSize = sliceSize || 512; for (offset = 0; offset < byteCharacters.length; offset += sliceSize) { slice = byteCharacters.slice(offset, offset + sliceSize); byteNumbers = new Array(slice.length); for (i = 0; i < slice.length; i++) { byteNumbers[i] = slice.charCodeAt(i); } byteArray = new Uint8Array(byteNumbers); byteArrays.push(byteArray); } //Convert to blob. try { blob = new Blob(byteArrays, { type: ContentType }); } catch (e) { // TypeError old Chrome, FF and AndroID browser window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder; if (e.name == 'TypeError' && window.BlobBuilder) { var bb = new BlobBuilder(); for (offset = 0; offset < byteArrays.length; offset += 1) { bb.append(byteArrays[offset].buffer); } blob = bb.getBlob(ContentType); } else if (e.name == "InvalIDStateError") { blob = new Blob(byteArrays, { type: ContentType }); } else { return null; } } return blob;};然后下载本身就需要cordova-file插件:
var fileToSave= b64toBlob(fileData, 'application/pdf'); writefile();function writefile() { console.log("request file system"); window.requestfileSystem(LocalfileSystem.PERSISTENT, 0, onfileSystemRetrIEved, onfileSystemFail);}function onfileSystemRetrIEved(fileSystem) { console.log("file system retrIEved"); fileSystem.root.getfile(filename, { create: true }, onfileEntryRetrIEved, onfileSystemFail);}function onfileEntryRetrIEved(fileEntry) { console.log("file entry retrIEved"); fileEntry.createWriter(gotfileWriter, onfileSystemFail);}function gotfileWriter(writer) { console.log("write to file"); writer.onwrite = function (evt) { alert('done'); } writer.write(fileToSave); window.open(filename, '_blank');}function onfileSystemFail(error) { console.log(error.code); alert(error.code)} 总结 以上是内存溢出为你收集整理的android-在phonegap中将base64字符串转换为pdf全部内容,希望文章能够帮你解决android-在phonegap中将base64字符串转换为pdf所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)