Vue3集成pdf.js实现本地PDF文件预览完整教程

作者:雾松时间:2026-10-31 13:31:56浏览:300

本文详细介绍在Vue3项目中集成pdf.js库以预览本地PDF文件的完整流程。涵盖从下载解压、部署至public目录,到创建独立PDF组件及在HomeView中调用两种预览方式(新窗口与弹窗)。重点解决本地测试时的路径配置要求及viewer.js跨域报错问题,提供可直接复用的代码示例。

第一步,获取pdf.js库文件。

访问官方资源页面进行下载。

第一步,获取pdf.js库文件。

解压下载包后,目录结构如下所示。

第一步,获取pdf.js库文件。

第二步,将资源文件部署至项目目录。

在Vue3项目的public文件夹内创建lib/pdfjs目录,并将解压后的所有文件放入该pdfjs文件夹中。

第一步,获取pdf.js库文件。

第三步,构建专用的PDF预览组件。

在src/components目录下新建名为PDF.vue的组件文件。

<template>
    <iframe :src="src" width="100%" :web.xmlheight="pdfH" style="width: 100%; height: 90%"></iframe>
</template>
<script setup lang='ts'>
import { ref, nextTick, computed, onMounted } from 'vue'
const props = defineProps({
    src: {
        type: String,
        required: true
    }
})
 
let src = computed(() => {
    // vue3的话 路径上不需要写public
    // 如果是vue2的话 要写public ->  return `/public/lib/pdfjs/web/viewer.html?file=${props.src}`
    // 我这里是本地文件测试(props.src是本地文件,必须将这个文件放在public/lib/pdfjs/web下面才行)
    return `/lib/pdfjs/web/viewer.html?file=${props.src}`
})
let pdfH = ref(100)
nextTick(() => {
    pdfH.value = document.documentElement.clientHeight - 68
})
onMounted(() => {
})
</script>

第四步,在HomeView.vue中引入并使用PDF.vue组件。

本例演示了两种预览模式:一是直接打开新页面进行预览,二是通过弹窗组件进行预览。

<script setup lang="ts">
import { ref } from 'vue';
import PDF from '@/components/PDF.vue'
let dySrc = ref('')
const dialogVisible = ref(false)
//? 打开新页面预览
const showPDF = async () => {
    dySrc.value = '/lib/pdfjs/web/测试.pdf'
    //替换为实际的文档URL
    const pdfUrl = `lib/pdfjs/web/viewer.html?file=${dySrc.value}`;
    //pdfUrl是当前页面的pdf文件的URL,第二个参数'_blank'表示在新窗口中打开。
    window.open(pdfUrl, '_blank');
}
//?在弹框中显示
const showDialogPDF = () => {
    dialogVisible.value = true
    dySrc.value = '/lib/pdfjs/web/测试.pdf'
}
</script>
<template>
    <div>
        文件名(新页面打开预览):
        <span @click="showPDF" style="color:rgb(0,174,236);cursor: pointer;">xxx.pdf</span>
    </div>
    <div>
        文件名(弹窗打开预览):
        <span @click="showDialogPDF" style="color:rgb(0,174,236);cursor: pointer;">xxx.pdf</span>
    </div>
    <el-dialog v-model="dialogVisible" title="预览pdf">
        <p-d-f :src="dySrc"></p-d-f>
    </el-dialog>
</template>
<style>
.el-dialog {
    width: 1000px;
    height: 800px;
}
 
.el-dialog__body {
    height: 100%;
}
</style>

注意事项:

进行本地文件测试时,必须确保PDF源文件放置在public/lib/pdfjs/web目录下,否则无法正确加载。

第一步,获取pdf.js库文件。

第五步,处理潜在的跨域错误。

若运行时报错提示跨域问题,需注释viewer.js文件中检查文件来源匹配的代码段。

    // if (fileOrigin !== viewerOrigin) {
      //   throw new Error("file origin does not match viewer's");
      // }

第六步,总结。

至此,已完成Vue3环境下使用pdf.js预览本地文件的配置与开发。如需了解更多相关技术细节,可查阅本站过往文章或继续浏览后续内容,感谢支持。

作者最新文章