Vue2中使用firefox的pdfjs进行文件文件流预览

文章目录

1.使用场景

pdf链接或者pdf文件流的预览

2. 使用方式

1. npm 包下载,点击查看

npm i pdfjs-dist // 此种方式,不过多介绍,网上都是

2. 官网下载

1. 放到public文件夹下面

2. 官网下载地址点我,进入官网

由于是github可能有些网络进不去,可以通过网盘下载

链接: https://pan.baidu.com/s/1cG06QTtWwTSTSzOPWy5NQg?pwd=rcnm 提取码: rcnm

3. 代码演示

js 复制代码
<template>
    <div class="pdf-preview">
        <el-row>
            <el-col :span="24">
                <el-button @click="handleChooseLocalFile" type="primary">选择本地文件</el-button>
            </el-col>
        </el-row>
        <iframe class="pdf-iframe" :src="previewURL" width="100%" height="800px" v-if="previewURL"></iframe>
    </div>
</template>
<script>
export default {
    name: "pdfPreview",
    data() {
        return {
            // public 下面的路径
            pdfJsViewer: "/pdfjs-4.8.69/web/viewer.html",
            fileUrl: "/pdfjs-4.8.69/web/compressed.tracemonkey-pldi-09.pdf",
        };
    },

    computed: {
        previewURL() {
            return this.fileUrl ? `${this.pdfJsViewer}?file=${encodeURIComponent(this.fileUrl)}` : "";
        },
    },
    methods: {
        handleChooseLocalFile() {
            let input = document.createElement("input");
            input.type = "file";
            input.accept = ".pdf";
            input.multiple = false;
            input.onchange = (e) => {
                let file = e.target.files[0];
                if (file) {
                    this.fileUrl = URL.createObjectURL(file);
                }
            };
            input.click();
            input.remove();
        },
    },
};
</script>

<style scoped lang="scss">
.inner-tool {
    display: flex;
    flex-direction: column;
}
.pdf-preview {
    flex: 1;
}
.pdf-iframe {
    margin-top: 20px;
    height: calc(100vh - 150px);
}
</style>

4. 图片预览

5. 如果遇到跨域或者application/octet-stream等问题

参考大佬 平凡的人类 空白

相关推荐
觉醒法师3 分钟前
HarmonyOS开发 - 电商App实例二( 网络请求http)
前端·http·华为·typescript·harmonyos·ark-ts
沈剑心3 分钟前
Kotlin的协程,真能提升编程效率么?
android·前端·kotlin
堕落年代13 分钟前
Vue主流的状态保存框架对比
前端·javascript·vue.js
OpenTiny社区24 分钟前
TinyVue的DatePicker 组件支持日期面板单独使用啦!
前端·vue.js
冴羽25 分钟前
Svelte 最新中文文档教程(22)—— Svelte 5 迁移指南
前端·javascript·svelte
树上有只程序猿29 分钟前
Vue3组件通信:多个实战场景,轻松玩转复杂数据流!
前端·vue.js
剪刀石头布啊36 分钟前
css属性值计算过程
前端·css
bin915341 分钟前
DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14基础固定表头示例
前端·javascript·vue.js·ecmascript·deepseek
小华同学ai43 分钟前
吊打中文合成!这款开源语音神器效果炸裂,逼真到离谱!
前端·后端·github
颜酱1 小时前
后台系统从零搭建(三)—— 具体页面之部门管理(抽离通用的增删改查逻辑)
前端·javascript·react.js