javascript - base64字符串转pdf下载
问题描述
我在 SAPUI5 应用程序中下载 pdf 时遇到问题。问题是从后端系统获取 base64 字符串,但无法将其转换并显示为 PDF。
我可以转换 base64 并下载,但尺寸很小。无法下载较大的 PDF 文件,但显示下载失败。
请帮帮我
var data =" JVBERi0xLjQNJeLjz9MNCjc1MDEgMCBvYmogPDwvTGluZWFyaXplZCAxL0wgOTM2NDM1Mi9PIDc1MDMvRSAxMjE3ODgvTiA1MjIvVCA5MjE0MjgzL0ggWyA2..";
var uri = 'data:application/pdf;base64,' + atob(data);
var link = document.createElement("a");
link.href = uri;
link.style = "visibility:hidden";
link.download = object.FileName;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
解决方案
将数据保存为 blob 并设置下载链接以从博客中获取数据可能会解决大文件的问题。这种机制中最有效的方法是从您的服务器获取数据作为二进制而不是 Base64。它也适用于 base64 - 但它只是在 blob 场景中杀死的资源。
var data = Uint8Array.from(atob(base64_string), c => c.charCodeAt(0));
var blob = new Blob([data], {type: "octet/stream"});
var link = document.createElement("a");
link.href = window.URL.createObjectURL(blob);
...
...
推荐阅读
- c++ - 在 C++ 中以客户端身份访问 REST API,但存在 boost、以太网帧问题
- algorithm - 寻找包含森林的G的最小权重生成树的算法
- mysql - dense_rank() 和 max,哪个更好找到 Nth 最高薪水(如果没有结果则返回 null)
- kubernetes - 有没有办法查看谁在 Kubernetes 中运行了 pods/jobs?
- cypress - 如何仅在系统范围内读取 cypress 中的 testdata/Json 一次?
- node.js - 如何在 Visual Studio Code 中调试 k6 测试脚本?
- python - Django:显示可下载的自定义日志文件
- mysql - 制作Mysql数据库(外键)
- javascript - TypeError:无法在打字稿中分配给对象“[object Array]”的只读属性“0”
- python - 重塑图像分割大小