【发布时间】:2018-08-15 06:50:21
【问题描述】:
我有一个 base64 字符串,我想将其转换为 PDF 文件。我正在使用 SAP UI5 框架。我已经用 atob() 试过了,但是 pdf 没有打开。 任何建议如何做到这一点? BR, ajsnub
这是我的代码:
onClick: function(oEvent) {
var base64 = "JVBERi0xLjUNCi...." //shortend
var sDecodedFile = window.atob(base64);
var sFileName = "test.pdf"
var saveData = (function() {
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
return function(data, fileName) {
var json = JSON.stringify(data),
blob = new Blob([json], {
type: "data:application/pdf;base64"
}),
url = window.URL.createObjectURL(blob);
a.href = url;
a.download = fileName;
a.click();
window.URL.revokeObjectURL(url);
};
}());
var data = sDecodedFile,
fileName = sFileName;
saveData(data, fileName);
}
用 jsPDF 更新:
var base64 = "JVBERi0xLjUNCi...." //shortend
var doc = new jsPDF();
var SampleData = 'data:application/pdf;base64,' + base64;
//doc.image(SampleData, 10, 10);
doc.save('test_document.pdf');
【问题讨论】:
-
感谢提示,但 PDF 的内容仍然不正确,因为 atob 似乎还不够。
-
如果base64字符串确实是base64编码的PDF文件,那么一定足够了。我怀疑你的 base64 字符串不是别的东西,就是编码错误。 atob 的输出是什么?通常,您应该能够在其中看到一些特定于 PDF 的标题。
-
嗨 Serban,是的,我看到类似:%PDF-1.3 %ª«¬4 0 obj > endobj 5 0 obj > 流 xoeÍX[oÛÊ~ׯàKı°è½'˼Y–dû8q[Ž•ÔE±'Va^tHêäÔ¿¾³”ÅÑ¢#mQç!ZrgæÛÙ&½³1õì›,zvûdÖ#Þ²Gk Ô‹ˆ'ÐBæSª¼Iêýídbó'§ Ÿ¼>äÉÐl ªr¶Jt6w/ÓéÕ'ïïÞä·wÊˇî”•‹ØÌ‹x¶r'£©)*·
AaÓ -
嗨,Serban,对不起,我现在可以在没有任何 atob() 操作的情况下成功。只需在 type 中传递 base64 字符串:“data:application/pdf;base64”就可以了!谢谢
标签: javascript pdf base64 sapui5