vue-office 学习记录
341 字
2 分钟
vue-office 学习记录
vue-office 学习记录
最近顺手写了个 vue-office 的小练习,需求很简单:上传 PDF,然后在页面里直接预览。
这类场景其实不复杂,核心就两步:
先把 PDF 文件读成 ArrayBuffer,再把结果传给 VueOfficePdf。
安装配置
npm install @vue-office/pdf vue-demi核心代码
我这里直接用 Vue3 script setup。
<script setup>import { ref } from "vue";import VueOfficePdf from "@vue-office/pdf";
const fileBuffer = ref(null);const fileName = ref("");const status = ref("先选择一个 PDF 文件");
async function handleFileChange(event) { const [file] = event.target.files ?? [];
if (!file) { return; }
fileName.value = file.name; status.value = "正在读取文件...";
try { fileBuffer.value = await file.arrayBuffer(); status.value = "文件读取完成,正在渲染 PDF"; } catch (error) { fileBuffer.value = null; status.value = `读取失败:${error instanceof Error ? error.message : "未知错误"}`; }}
function handleRendered() { status.value = "PDF 渲染完成";}
function handleError() { status.value = "PDF 渲染失败";}</script>
<template> <div> <input type="file" accept="application/pdf,.pdf" @change="handleFileChange" />
<p>当前文件:{{ fileName || "未选择" }}</p> <p>当前状态:{{ status }}</p>
<VueOfficePdf v-if="fileBuffer" :src="fileBuffer" @rendered="handleRendered" @error="handleError" /> </div></template>input 负责选择 PDF 文件。
file.arrayBuffer() 负责把文件读成二进制内容。
VueOfficePdf 负责把这份二进制内容渲染成可预览的 PDF。
所以关键不是文件名,也不是文件路径,关键是这一句:
fileBuffer.value = await file.arrayBuffer();还有这一句:
:src="fileBuffer"只要这两步通了,PDF 在线阅读基本就跑起来了。
效果显示:

文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
vue-office 学习记录
https://c7lz11.cn/posts/vue-office-learning-notes/ 相关文章 智能推荐
1
从零开始搭建一个最简单的NestJS应用
文章示例 记录学习NestJS过程
2
UE5 逆向笔记
文章示例 2026-03-11
3
分享一个自己Zsh的主题配置
文章示例 自定义主题。
4
五月二十六日
文章示例 朋友的作业
5
实验4
文章示例 2026-01-28
随机文章 随机推荐