Vue 实现通过URL浏览器本地下载 PDF 和 图片

1、代码实现如下:

根据自己场景判断 PDF 和 图片,下载功能可按下面代码逻辑执行

const downloadFile = async (item: any) => {
    try {
        let blobUrl: any;
        // PDF本地下载
        if (item.format === 'pdf') {
            const response = await fetch(item.url); // URL传递进入
            if (!response.ok) {
                throw new Error('本地下载失败!');
            }
            const blob = await response.blob();
            blobUrl = URL.createObjectURL(blob); 
        } else { // 图片下载
            const imageUrl = item.url;
            const response = await fetch(imageUrl); // URL传递进入

            if (!response.ok) {
                throw new Error(`本地下载失败!`);
            }
            const blob = await response.blob();
            blobUrl = URL.createObjectURL(blob);
        }
        //执行下载逻辑
        if (blobUrl) {
            const link = document.createElement("a"); // 创建a标签
            link.href = blobUrl; // 下载链接
            link.download = item.name; // 下载的文件名
            document.body.appendChild(link);
            link.click();
            document.body.removeChild(link); // 下载完成后移除a标签
            URL.revokeObjectURL(blobUrl); // 释放URL对象
        }
    } catch {
        proxy.$message.error('本地下载失败!');
    }
};

2、浏览器效果:

### 实现 PDF 文件的在线预览下载 为了在 Vue3 项目中实现浏览器端的 PDF 文件预览与下载功能,可以采用 `pdf.js` 库来处理 PDF 的渲染工作[^1]。此库由 Mozilla 开发并维护,能够可靠地解析展示 PDF 文档。 对于集成到 Vue 组件中的情况,推荐使用基于 `pdf.js` 构建而成的封装好的前端组件如 `vue-pdf-app` 或者更轻量级的选择 `@duttanil/vue-pdf` 来简化开发流程[^2]。 当涉及到实际操作时,下面是一个简单的例子展示了怎样利用这些工具创建一个具备基本浏览能力的应用程序: #### 安装依赖项 通过 npm 或 yarn 添加必要的包: ```bash npm install pdfjs-dist @duttanil/vue-pdf ``` #### 创建 PDF 预览组件 编写一个新的 Vue 单文件组件用于显示 PDF 页面内容: ```html <template> <div class="pdf-viewer"> <!-- 使用 vue-pdf 渲染 --> <vue-pdf :src="url"></vue-pdf> </div> </template> <script setup lang="ts"> import { ref } from 'vue'; // 导入 vue-pdf 设置 worker path import * as pdfJs from 'pdfjs-dist/legacy/build/pdf'; import '@duttanil/vue-pdf'; const url = ref('/path/to/sample.pdf'); // 替换成目标PDF链接 pdfJs.GlobalWorkerOptions.workerSrc = new URL( 'pdfjs-dist/build/pdf.worker.min.js', import.meta.url, ).href; </script> ``` #### 下载功能实现 为了让用户可以直接点击按钮保存当前查看的文档副本,在页面上添加相应的 HTML `<a>` 标签,并为其绑定事件处理器以便触发下载行为: ```html <a href="/path/to/sample.pdf" download>Download PDF</a> ``` 上述方法提供了基础的功能框架;然而具体应用可能还需要考虑更多细节方面的要求,比如跨域请求配置、错误处理机制以及性能优化等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值