Vue前端JavaScript实现PDF预览与图片预览

16 篇文章 1 订阅
订阅专栏

说明

图片预览:使用Blob创建一个指向类型化数组的URL

PDF预览:1借助PDF.JS实现 2.embed与iframe标签实现

World预览:先Wolrd转PDF,再借助PDF.JS实现

PDF.JS

pdf.js是 一个通用的、基于web标准的解析和渲染PDF的平台。

官网:https://mozilla.github.io/pdf.js/

在这里插入图片描述
下载后,压缩包内目录结构
在这里插入图片描述
将其拷贝至Vue项目中
在这里插入图片描述

代码实现

<template>
  <div>
    <a-modal :visible="previewShow" :width="1050"
             :closable="true"
             :footer="null"
             @cancel="() =>{previewShow = false}">
      <a-spin :spinning="previewLoading" :delay="100">
        <template v-if="imageOrdocument">
          <img style="width: 100%" :src="previewUrl"/>
        </template>
        <template v-else>
          <a-spin style="margin-top: 24px" :spinning="false">
            <iframe :src="document" scrolling="no" style="width: 100%;min-height: 700px;" frameborder="0">
            </iframe>
          </a-spin>
        </template>
      </a-spin>
    </a-modal>
  </div>
</template>

<script>
export default {
  name: "FilePreview",
  data() {
    return {
      previewShow: false,
      previewLoading: false,
      previewUrl: "",
      imageType: ['jpg', 'png'],
      documentType: ['pdf'],
      imageOrdocument: true,
      document: ''
    }
  },
  methods: {
    filePreview(id, fileSuffix) {
      this.previewShow = true;
      if (this.imageType.includes(fileSuffix.toLowerCase()) || this.imageType.includes(fileSuffix.toUpperCase())) {
        this.previewLoading = true;
        this.axios.get(this.$Api.document.fastdfs.downloadFile + "/" + id, {responseType: 'blob'}).then((jo) => {
          if (!jo) {
            return
          }
          let imgData = new Blob([jo.data], {type: "image/jpeg"});
          this.previewUrl = URL.createObjectURL(imgData);
          this.imageOrdocument = true;
          this.previewLoading = false;
        });
      } else if (this.documentType.includes(fileSuffix.toLowerCase()) || this.documentType.includes(fileSuffix.toUpperCase())) {
        this.imageOrdocument = false;
        this.document = "public/pdf/web/viewer.html?file=" + this.$Api.BaseUrl + this.$Api.document.fastdfs.downloadFile + "/" + id;
      } else {
        this.$message.error("不支持预览")
      }
    }
  }
}
</script>

<style scoped>

</style>

预览测试

在这里插入图片描述

在这里插入图片描述

embed与iframe标签

<embed><iframe>都是HTML中用于嵌入其他文档或媒体文件的标签。它们的主要区别在于嵌入内容的类型和使用情况

注意:
如果浏览器没有已安装的PDF插件,则无法在浏览器中预览PDF文件,并且浏览器将自动下载PDF文件。非主流浏览器可能无法支持,如:IE浏览器

<embed>

<embed>标记允许将其他类型的内容嵌入到HTML文档中,例如音频、视频、Flash等。它是非标准的HTML元素,但被所有主流的浏览器所支持。

<embed src="file.ext" type="mime/type" />
<template>
  <div>
    <a-spin tip="加载中..." :spinning="loading">
      <embed
          type="application/pdf" width="800" height="600"
          :src="this.$Api.BaseUrl+this.$Api.document.previewFile+'/224794'"/>
    </a-spin>
  </div>
</template>

<iframe>

<iframe>标记允许在HTML文档内嵌入另一个HTML文档或嵌入另一种媒体资源(如PDF文档)。它允许你在一个网页中显示另一个网页,也可以用来实现类似于对话框的效果。

<iframe src="file.html"></iframe>
<template>
  <div>
    <a-spin tip="加载中..." :spinning="loading">
      <iframe width="800" height="600" :src="this.$Api.BaseUrl+this.$Api.document.previewFile+'/224794'"/>
    </a-spin>
  </div>
</template>

在这里插入图片描述

注意:使用<iframe>标签,实则其内部也是使用<embed> 标签

在这里插入图片描述

浏览器预览

也可以直接请求PDF文件地址,或添加一个点击事件跳转,若浏览器支持则自动进行预览

<template>
  <div>
    <a-spin tip="加载中..." :spinning="loading">
      <a @click="preview">PDF预览</a>
    </a-spin>
  </div>
</template>
 preview(){
      window.open('url');
    },

在这里插入图片描述

vue项目实现前端预览word和pdf格式文件
qq_37635012的博客
12-13 6597
最近做vue项目遇到一个需求,就是前端实现上传word或pdf文件后,后端返回文件对应的文件流,前端需要在页面上展示出来。
Vue - 利用Vue-pdf实现Vue项目中完美实现PDF文件预览功能
前端充电宝
04-28 334
Vue - 利用Vue-pdf实现Vue项目中完美实现PDF文件预览功能
pdf.js预览pdf文件并且使用进行图片签章功能
qq_39822531的博客
02-26 708
来自这位大佬:https://blog.csdn.net/a15297701931/article/details/135062029。2.pdf.js中的getDocument方法使用的是data,pdf的arraybuffer格式。1.删减了放缩功能,放开了调整图章大小的功能,前者和后者功能冲突。3.下面的/deep/调整成了::v-deep。首先按照上面这个链接引入对应包。
js预览pdf文件
09-18
通过pdfobject.js预览PDF,亲测。 需要安装Adobe的。
js 前端pdf文件展示预览【插件pdfobject.js
最新发布
shengmeshi的博客
08-02 387
/p1: ***.pdf 文档地址,//p2: 渲染文件的元素。
前端实现文件预览pdf、excel、word、图片
趣谈前端
08-14 505
点击关注公众号,技术干货及时送达前端实现文件预览功能❝需求:实现一个在线预览pdf、excel、word、图片等文件的功能。介绍:支持pdf、xlsx、docx、jpg、png、jpeg。以下使用Vue3代码实现所有功能,建议以下的预览文件标签可以在外层包裹一层弹窗。❞图片预览iframe标签能够将另一个HTML页面嵌入到当前页面中,我们的图片也能够使用iframe标签来进行展示。<ifra...
pdf.js实现预览功能
热门推荐
m0_46270721的博客
12-01 1万+
pdf.js实现预览文档 + element-image预览图片
pdf.js实现图片在线预览
weixin_30847865的博客
06-23 1493
项目需求   前段时间项目中遇到了一个模块,是关于在线预览word文档(PDF文件)的,所以,找了很多插件,例如,pdf.jspdfobject.js框架,但是pdfobject.js框架对于IE浏览器不兼容,所以,选择了使用pdf.js,这里记录一下,以后使用的时候好查找,也希望可以帮助有需要的人。 word文件转pdf文件   首先需要将指定的word文档转为pdf文件,方...
原生js实现预览图片PDF...
qq_46344419的博客
01-18 2152
原生js实现预览图片PDF
vue实现在线预览pdf文件和下载(pdf.js
10-15
在本文中,我们将详细探讨如何使用Vue.js实现在线预览PDF文件以及下载功能,这里采用的插件是pdf.js,一个广泛使用的开源PDF阅读器,由Mozilla基金会开发。 首先,了解pdf.js的基本概念非常重要。pdf.js能够将PDF...
pdf.js Demo 纯js实现PDF在线预览及打印
11-10
pdf.js Demo 纯js实现PDF在线预览及打印 可控制页面缩放 打开本地文件
PDF.js pdf在线预览
06-16
pdf.js在线预览插件包,使用的是2.0.X的版本,使用时还需要worker
pdf.jspdf图片展示 兼容手机端查看pdf
07-24
在微信浏览器无法展示pdf的问题,将pdf转为图片展示。
vue预览pdf文件的几种方法_vue pdf预览
2401_84433570的博客
04-29 1589
正值招聘旺季,很多小伙伴都询问我有没有前端方面的面试题!开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】n() {正值招聘旺季,很多小伙伴都询问我有没有前端方面的面试题!开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
vue前端实现文件预览pdf,docx,png)超简单
彭于晏的博客
07-24 1207
vue前端实现文件预览pdf,docx,png)超简单有手就能实现
Vue使用vue-pdf实现PDF文件预览
m0_51431448的博客
04-21 3991
vue-pdf npm文档https://www.npmjs.com/package/vue-pdf 先看下效果 安装 npm install vue-pdf 页面按需引入并注册 <script> import Pdf from "vue-pdf" export default { components: { Pdf } } </script> 完整代码 <template> <div class="global"&gt...
vue实战--vue+elementUI实现多文件上传+预览(word PDF 图片 docx doc xlxs txt)_elementui pdf 上传后预览
2401_84435739的博客
04-29 1240
看到这个需求的时候,小栗脑袋一炸。并不知道该如何下手,之前的实践项目中也并没有遇到相似的功能。因此也废了一番功夫想要实现这样一个功能。首先先查看elemnt UI的官方文档发现,大部分的实现文件上传效果的功能,即使可以提供预览的功能,但是不能指定该功能的样式和内容有一定的局限性然后小栗查找“多文件上传预览PDF预览、word预览等关键词”,发现大部分的大佬的方法都是实现图片预览,并没有实现多文件上传(也可能是因为我并没有找到相关的功能)。
vue 实现图片pdf展示
凡尘
12-25 1533
vue 实现图片pdf展示
vue前端实现预览pdf
06-07
要在 Vue 前端实现预览 PDF 文件,可以使用 PDF.js 开源项目。PDF.js 是一个使用 JavaScript 实现PDF 渲染器,可以在网页上直接渲染 PDF 文件。以下是实现步骤: 1. 安装 pdfjs-dist 包:可以使用 npm 或 yarn 安装,命令如下: ``` npm install pdfjs-dist ``` 2. 在 Vue 组件中引入 pdfjs-dist 包: ``` import pdfjsLib from 'pdfjs-dist'; ``` 3. 定义一个方法,用于加载和渲染 PDF 文件: ``` loadPdf(pdfUrl) { // 获取 PDF 文件的 ArrayBuffer 数据 const loadingTask = pdfjsLib.getDocument({ url: pdfUrl }); loadingTask.promise.then(pdf => { // 获取 PDF 第一页 const pageNumber = 1; pdf.getPage(pageNumber).then(page => { // 获取该页的 Canvas 渲染上下文 const canvas = document.getElementById('pdf-canvas'); const context = canvas.getContext('2d'); // 计算 Canvas 尺寸,使 PDF 渲染不失真 const viewport = page.getViewport({ scale: 1 }); const scale = canvas.width / viewport.width; const scaledViewport = page.getViewport({ scale }); // 渲染 PDF page.render({ canvasContext: context, viewport: scaledViewport }); }); }); } ``` 4. 在 Vue 模板中使用 Canvas 元素来显示 PDF: ``` <canvas id="pdf-canvas"></canvas> ``` 5. 在需要加载 PDF 的地方调用 loadPdf 方法即可: ``` this.loadPdf('your-pdf-url.pdf'); ``` 注意:需要在你的项目中引入 pdf.worker.js 文件,可以从 pdfjs-dist 包中获取,也可以从官网下载。
写文章

分类专栏

  • 人工智能 3篇
  • LLM 12篇
  • LangChain 19篇
  • JAVA 20篇
  • Spring 29篇
  • Spring Boot 35篇
  • Spring Cloud 14篇
  • Mybatis 10篇
  • Spring Data JPA 4篇
  • JVM 12篇
  • 安全框架 10篇
  • 设计模式 24篇
  • 数据库 4篇
  • MySQL 24篇
  • Redis 11篇
  • Linux 10篇
  • Docker 14篇
  • Kubernetes 13篇
  • Jenkins 4篇
  • 其他 57篇
  • Maven 4篇
  • Git 4篇
  • 日志 7篇
  • Nginx 3篇
  • 微信 7篇
  • 解决问题 10篇
  • ZooKeeper 4篇
  • 全文检索 7篇
  • 消息队列 15篇
  • Python 17篇
  • Django 15篇
  • Flask 7篇
  • 爬虫 8篇
  • 大数据 21篇
  • Hadoop 7篇
  • Flink 20篇
  • HarmonyOS 6篇
  • 前端 16篇

最新评论

  • SpringDoc:一个用于自动生成API文档的工具

    kkkongk: 你好,请问我是复制的配置,为什么UI页面会访问不到,报404

  • 安装搭建KubeSphere环境

    阿奇在努力。: 在执行安装kubekey过程中

  • 安装搭建KubeSphere环境

    阿奇在努力。: goroutine 223 [running]: github.com/kubesphere/kubekey/v3/cmd/kk/pkg/kubernetes.(*KubernetesStatus).SearchNodesInfo(0xc0003231a0, {0x2890f10?, 0xc0005f01c0?}) github.com/kubesphere/kubekey/v3/cmd/kk/pkg/kubernetes/kubernetes_status.go:128 +0x33e github.com/kubesphere/kubekey/v3/cmd/kk/pkg/kubernetes.(*GetClusterStatus).Execute(0xc000010450, {0x2890f10, 0xc0005f01c0}) github.com/kubesphere/kubekey/v3/cmd/kk/pkg/kubernetes/tasks.go:81 +0x18e github.com/kubesphere/kubekey/v3/cmd/kk/pkg/core/task.(*RemoteTask).ExecuteWithRetry(0xc0005e6240, {0x2890f10, 0xc0005f01c0}) github.com/kubesphere/kubekey/v3/cmd/kk/pkg/core/task/remote_task.go:216 +0x119 github.com/kubesphere/kubekey/v3/cmd/kk/pkg/core/task.(*RemoteTask).Run(0xc0005e6240, {0x2890f10, 0xc0005f01c0}, {0x2897cf0, 0xc00009a920}, 0x0?, 0x0?) github.com/kubesphere/kubekey/v3/cmd/kk/pkg/core/task/remote_task.go:152 +0x1c5 created by github.com/kubesphere/kubekey/v3/cmd/kk/pkg/core/task.(*RemoteTask).RunWith

  • 5分钟快速申请一个EDU教育邮箱

    HRET星河: 这个不能过jetbrains?

  • LangChain之提取解析与结构化输出

    Thekin233: 我用本地部署的glm4套壳的openai的api,llm = ChatOpenAI(model_name=model_name,openai_api_key=no_key,openai_api_base=base_url) llm.with_structured_output(schema=person)报错: Traceback (most recent call last): File "/home/caiyiming/ZMR/langchain_agent_demo/test_demo2.py", line 62, in <module> bpy_reponse_runnable = bpycode_template|chat_model.with_structured_output(schema=bpy_reponse_struct) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/caiyiming/anaconda3/envs/langgraph_env/lib/python3.11/site-packages/langchain_core/language_models/chat_models.py", line 1257, in with_structured_output llm = self.bind_tools([schema], tool_choice="any") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/caiyiming/anaconda3/envs/langgraph_env/lib/python3.11/site- packages/langchain_core/language_models/chat_models.py", line 1134, in bind_tools raise NotImplementedError() NotImplementedError

大家在看

  • 【精品毕设推荐】基于SSM+jsp的在线医疗服务系统设计与实现 294
  • 怎么选择专利? 115
  • 【精品毕设推荐】基于SSM+jsp的医院门诊挂号系统设计与实现 216
  • 【精品毕设推荐】基于SSM+jsp的学生公寓管理中心系统设计与实现 754
  • 计算机视觉:VGGNet网络详解

最新文章

  • Unborn安装CUDA Toolkit 12.2
  • Apache Dolphinscheduler:一个开源的分布式工作流调度系统
  • 基于基础模型BERT与大语言模型ChatGLM3-6B实现文本分类、信息抽取、文本匹配等任务
2024
09月 4篇
08月 5篇
07月 9篇
06月 2篇
05月 9篇
04月 11篇
03月 7篇
02月 8篇
2023年102篇
2022年160篇
2021年79篇
2020年83篇
2019年4篇
2018年3篇

目录

目录

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeDevMaster

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

天下网标王优化网站设计唯独金手指谷歌外贸网站怎么优化东门公司的网站优化廊坊优化网站网站的seo优化费用杭州网站优化服务商汕头市网站seo优化公司湘乡网站优化苏州网站排名优化软件网站产品优化跋云速捷火速广安网站优化价格网站优化充值赠送活动方案广州培训网站制作网络优化中原区资讯网站搭建优化厚街东莞网站排名优化公司网站排名怎么优化选哪家鄂州外包网站优化怎么做鼎湖百度网站优化河南电话网站搭建优化b2b网站推广优化优化电子商务网站怎么做甘肃网站关键词排名优化价格绵阳网站优化加盟哪里有无锡正规的seo网站优化推广优化网站教程推广整站宁波网站优化的软件西安网站优化哪家好鄂州外包网站优化哪个好百灵鸟优化网站山东智能网站优化哪家好香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化