如何在vue2中使用iframe和embed均显示base64转化的pdf文件?
由于之前没做过,先做了个小测试
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Display PDF</title>
</head>
<body>
<h1>PDF File Display</h1>
<embed id="pdfViewer" width="600" height="500" type="application/pdf">
<script>
// Assuming this is your Base64 encoded string
const base64String = "data:application/pdf;base64XXXX"
// Create a Blob object
const byteCharacters = atob(base64String.split(',')[1]);
const byteNumbers = new Array(byteCharacters.length);
for (let i = 0; i < byteCharacters.length; i++) {
byteNumbers[i] = byteCharacters.charCodeAt(i);
}
const byteArray = new Uint8Array(byteNumbers);
const blob = new Blob([byteArray], { type: 'application/pdf' });
// Create a URL object
const url = URL.createObjectURL(blob);
// Set the URL as the source of the embed element
document.getElementById('pdfViewer').src = url;
</script>
</body>
</html>
以上代码有效
再放到vue中却失效了,并且没有报错,且渲染的iframe和embed内的src均可以单独打开(以下代码位于mounted)
const base64String = "data:application/pdf;base64,XXXXXX"
const byteCharacters = atob(base64String.split(',')[1]);
const byteNumbers = new Array(byteCharacters.length);
for (let i = 0; i < byteCharacters.length; i++) {
byteNumbers[i] = byteCharacters.charCodeAt(i);
}
const byteArray = new Uint8Array(byteNumbers);
const blob = new Blob([byteArray], { type: 'application/pdf' });
this.url = URL.createObjectURL(blob);
document.getElementById('pdfViewer').src = this.url;
也尝试过将iframe的地址改为百度,可以显示
请问有人知道这是什么原因吗?
在 Vue 2 中,你可以通过使用
iframe
或embed
标签来显示从 Base64 转换而来的 PDF 文件。以下是具体的实现方法:1. 使用
iframe
显示 Base64 PDF 文件你可以将 Base64 字符串直接嵌入到
iframe
的src
属性中。需要注意的是,Base64 字符串应当包含正确的前缀(如data:application/pdf;base64,
),以便浏览器正确解析。2. 使用
embed
显示 Base64 PDF 文件与
iframe
类似,embed
标签也可以用来嵌入 PDF 文件,同样使用 Base64 字符串作为src
。3. 注意事项
以上方法可以帮助你在 Vue 2 中使用
iframe
或embed
标签来显示 Base64 转化的 PDF 文件。