码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • vueshowpdf 移动端pdf文件预览


    1、安装

    npm install vueshowpdf -S
    

    2、参数

    属性说明类型默认值
    v-model是否显示pdf--
    pdfurlpdf的文件地址String-

    scale

    默认放大倍数

    Number1.2

    minscale

    最小放大倍数

    Number0.8

    maxscale

    最大放大倍数

    Number2

    3、事件

    名称说明回调参数
    closepdf pdf关闭事件-
    pdferr文件地址解析错误事件-

    4、核心代码

    1. <template>
    2. <div class="case-info">
    3. <van-cell title="附件" value="预览" is-link @click="viewPdf" class="perview" />
    4. <vueshowpdf class="pdf" v-model="isShowPdf" :pdfurl="pdfurl"
    5. :minscale='0.4' :scale='0.6' @closepdf="isShowPdf = false" @pdferr="pdfError"
    6. >vueshowpdf>
    7. div>
    8. template>
    9. <script>
    10. import api from '@/api.js'
    11. import vueshowpdf from 'vueshowpdf'
    12. export default {
    13. name: 'test',
    14. data () {
    15. return {
    16. isShowPdf: false,
    17. pdfUrl: '',
    18. pdfKey: 0
    19. }
    20. },
    21. components: {
    22. vueshowpdf
    23. },
    24. deactivated () {
    25. // 离开页面默认关闭pdf
    26. this.isShowPdf = false
    27. this.pdfKey++
    28. },
    29. methods: {
    30. // 预览pdf
    31. async viewPdf () {
    32. if (this.pdfUrl) {
    33. this.isShowPdf = true
    34. } else {
    35. this.$toast.loading({
    36. message: '加载中...',
    37. duration: 0,
    38. forbidClick: true
    39. })
    40. try {
    41. const res = await api.getFilePreview()
    42. this.$toast.clear()
    43. if (res.code === '0') {
    44. let blob = this.dataURLtoBlob(res.data)
    45. this.pdfurl = URL.createObjectURL(blob)
    46. this.isShowPdf = true
    47. } else {
    48. this.$toast(res.msg || '该原始文件不存在')
    49. }
    50. } catch (error) {
    51. this.$toast.clear()
    52. }
    53. }
    54. },
    55. // 将base64转换为文件
    56. dataURLtoBlob (dataurl) {
    57. const bstr = atob(dataurl)
    58. let n = bstr.length
    59. const u8arr = new Uint8Array(n)
    60. while (n--) {
    61. u8arr[n] = bstr.charCodeAt(n)
    62. }
    63. return new Blob([u8arr], { type: 'application/pdf' })
    64. },
    65. // 关闭pdf
    66. closePdf () {
    67. this.isShowPdf = false
    68. this.pdfKey++
    69. },
    70. // pdf预览失败
    71. pdfError (errorUrl) {
    72. this.$toast.fail('预览失败')
    73. this.isShowPdf = false
    74. this.pdfKey++
    75. }
    76. }
    77. }
    78. script>
    79. <style lang="scss" scoped>
    80. .perview .van-cell__value {
    81. color: #468bff;
    82. text-decoration: underline;
    83. }
    84. style>

  • 相关阅读:
    Java把Base64编码格式的图片下载到本地指定文件夹下
    element ui 下拉框 选择月份和天数
    【畅购商城】详情页模块之评论
    Spark使用scala语言连接hive数据库
    java毕业生就业登记分析管理系统springboot
    YOLOv5全面解析教程②:如何制作训练效果更好的数据集
    双非本科是如何逆袭的?这位同学有点东西
    我,PolarDB云原生数据库,5年来实现这些重磅技术创新
    【图像融合】差异的高斯:一种简单有效的通用图像融合方法[用于融合红外和可见光图像、多焦点图像、多模态医学图像和多曝光图像](Matlab代码实现)
    php基于PHP的汉服文化交流平台毕业设计源码240903
  • 原文地址:https://blog.csdn.net/qq_40007317/article/details/132882201
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号