vue: type:"application/octet-stream" 文件流pdf文件,去掉文件流中的js并预览
时间: 2024-10-17 16:12:51 浏览: 25
在Vue.js中,当你处理包含JavaScript内容的PDF文件时,通常需要将其转换为纯PDF数据,以便用户可以直接预览而不会运行其中的脚本。这可以通过一些库如`pdfjs-dist`来进行操作。以下是一个简化的步骤:
1. 首先,你需要安装`pdfjs-dist`库,可以使用npm:
```
npm install pdfjs-dist
```
2. 然后,在你的组件中,你可以使用`URL.createObjectURL()`创建一个临时URL指向原始PDF文件的数据URI,并读取其内容:
```javascript
import * as PDFJS from 'pdfjs-dist';
export default {
methods: {
handlePdf() {
const fileBlob = this.pdfBlob; // 假设已经获取到pdf文件的Blob对象
const urlCreator = window.URL || window.webkitURL;
let dataUrl;
PDFJS.getDocument(fileBlob).promise.then(pdf => {
pdf.getPage(1) // 获取第一个页面
.then(page => {
const pageData = page getData({ 'stream': true }); // 使用getOperatorList获取页面内容
const jsFilter = new PDFJS.JSZipUtils.JSZip();
jsFilter.remove(/\.js/); // 移除所有'.js'文件
const filteredData = jsFilter.transformData('array', pageData);
dataUrl = urlCreator.createObjectURL(new Blob([filteredData], { type: 'application/pdf' }));
this.previewSrc = dataUrl; // 设置预览链接
})
.catch(err => console.error(err));
});
}
}
}
```
3. 在模板中设置一个`<img>`标签或者其他支持`src`属性改变的元素,如`<a download>`下载链接或iframe用于在线预览:
```html
<template>
<div>
<button @click="handlePdf">预览PDF</button>
<img :src="previewSrc" alt="PDF Preview" v-if="previewSrc" />
</div>
</template>
```
阅读全文