• 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网络编程——NIO三大组件Buffer、Channel、Selector
    MySQL 事务
    GAMES101—Lec 05~06:光栅化
    路由守卫(全局钩子(全局路由守卫)、路由单独钩子(router独享守卫))
    SAP 设置不能用ME52N修改PR,但需要PR的修改权限
    Linux aarch64交叉编译之 Google filament引擎
    Java 异常处理、继承、重写/重载
    EasyRecovery易恢复苹果Mac电脑计算机数据恢复软件
    &2_PyTorch神经网络基础
  • 原文地址:https://blog.csdn.net/qq_40007317/article/details/132882201