iframe打开base64格式的PDF显示空白

使用iframe打开Base64格式的PDF文件显示空白,src的数据也加载出来了,但就是不显示
转换一下思路,如果Base64格式不行的话,把Base64转换成Blob对象,创建一个URL的Blob对象,再将URL赋值给src属性同样可以实现预览

previewPdf(fileBase64){
	let fileBlob = this.base64ToBlob(fileBase64,'application/pdf');
	let href = window.URL.createObjectURL(fileBlob);
	let newWindow = window.open("");
	newWindow.document.write("<iframe width='100%' height='100%' src='"+href+"'></iframe>");
},
base64ToBlob(fileBase64,fileType){
	let raw = window.atob(fileBase64);
	let rawLength = raw.length;
	let uint8Array = new Uint8Array(rawLength);
	while (rawLength--){
		uint8Array[rawLength] = raw.charCodeAt(rawLength);
	}
	return new Blob([uint8Array],{type: fileType});
}
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 要在 `iframe` 中显示 `base64` 编码的 PDF 文件,需要将其转换为 `Blob` 对象,然后创建一个 `object` 元素,并将其设置为 `data` URL。 以下是示例代码: ```html <iframe id="pdf-frame" width="100%" height="600"></iframe> <script> const base64ToBlob = (base64Data, contentType = '', sliceSize = 512) => { const byteCharacters = atob(base64Data); const byteArrays = []; for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) { const slice = byteCharacters.slice(offset, offset + sliceSize); const byteNumbers = new Array(slice.length); for (let i = 0; i < slice.length; i++) { byteNumbers[i] = slice.charCodeAt(i); } const byteArray = new Uint8Array(byteNumbers); byteArrays.push(byteArray); } return new Blob(byteArrays, { type: contentType }); }; const pdfData = "YOUR_BASE64_ENCODED_PDF_DATA"; const blob = base64ToBlob(pdfData, 'application/pdf'); const dataUrl = URL.createObjectURL(blob); const object = document.createElement('object'); object.setAttribute('data', dataUrl); object.setAttribute('type', 'application/pdf'); object.setAttribute('width', '100%'); object.setAttribute('height', '600'); const iframe = document.getElementById('pdf-frame'); iframe.contentWindow.document.body.appendChild(object); </script> ``` 将 `YOUR_BASE64_ENCODED_PDF_DATA` 替换为实际的 `base64` 编码的 PDF 数据即可。请注意,这种方法可能会受到浏览器的安全限制。如果您遇到问题,请尝试在服务器上运行代码。 ### 回答2: 要在iframe显示base64转化为pdf的文件,你需要进行以下步骤: 1. 将base64字符串转化为Blob对象: 首先,你需要使用atob方法将base64字符串转化为二进制字符串。然后,你可以使用Blob构造函数将二进制字符串转化为Blob对象。 2. 创建指向Blob URL的iframe: 接下来,你可以使用URL对象的createObjectURL方法创建一个指向Blob URL的链接。然后,你可以将该链接赋值给iframe的src属性,以显示pdf文件。 下面是一个示例代码: ```javascript // base64字符串 let base64Str = "base64字符串"; // 将base64字符串转化为Blob对象 let binaryStr = atob(base64Str); let blob = new Blob([binaryStr], { type: 'application/pdf' }); // 创建指向Blob URL的iframe let url = URL.createObjectURL(blob); // 创建和设置iframe let iframe = document.createElement('iframe'); iframe.src = url; iframe.width = "100%"; iframe.height = "600px"; // 将iframe添加到页面中 document.body.appendChild(iframe); ``` 通过以上步骤,你就可以将base64转化为pdf并在iframe显示出来。请确保将base64字符串替换为你实际需要转化的字符串。同时,确保在合适的位置添加iframe元素到页面中。 ### 回答3: 要将Base64编码的字符串转化为PDF并在iframe显示,可以按照以下步骤进行操作。 1. 首先,将Base64编码的字符串转化为二进制数据。可以使用window.atob()方法将Base64字符串解码为原始字符串,然后使用Uint8Array()构造函数将原始字符串转换为二进制数组。 2. 创建一个Blob对象,将二进制数据包装在其中。可以使用Blob构造函数,并将二进制数据和适当的MIME类型传递给它。 3. 创建一个URL对象,将Blob对象转化为URL地址。可以使用window.URL.createObjectURL()方法,传入Blob对象并获取对应的URL地址。 4. 创建一个iframe元素,并将URL地址设置为其src属性的值。可以使用document.createElement()方法创建一个iframe元素,然后将URL地址赋值给src属性。 5. 最后,将iframe元素添加到文档中以显示PDF。可以使用appendChild()方法将iframe元素添加到文档的适当位置。 以上是将Base64转化为PDF并在iframe显示的基本步骤。根据具体的HTML结构和JavaScript代码,还可能需要做一些额外的调整和任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值