vue3.0下使用pdf预览 ---- pdfh5.js

pdfh5在线预览 (建议使用谷歌浏览器F12手机模式打开预览)

原文参考:https://github.com/gjTool/pdfh5

快速使用(有两种方式)

一、script标签引入方式(需下载本项目文件夹css/pdfh5.css、js内所有文件)

  • 1.引入css
 <link rel="stylesheet" href="css/pdfh5.css" />
  • 2.创建div
 <div id="demo"></div>
  • 3.依次引入js(需引用本项目的js,不要引用官方的pdf.js,jquery可以引用其它版的)
 <script src="js/pdf.js" type="text/javascript" charset="utf-8"></script>
<script src="js/pdf.worker.js" type="text/javascript" charset="utf-8"></script>
<script src="js/jquery-2.1.1.min.js" type="text/javascript" charset="utf-8"></script>
<script src="js/pdfh5.js" type="text/javascript" charset="utf-8"></script>
  • 4.实例化
var pdfh5 = new Pdfh5('#demo', {
  pdfurl: "./default.pdf"
});

二、npm安装方式(适应于vue), react使用方法类似vue(example/react-test是react使用示例)

  • 1.安装
 npm install pdfh5
  • 2.使用(Vue3.0版本使用)— 在component文件下创建组件 — BasePdfView.vue
<!-- BasePdfView.vue -->
 <template>
  <div id="pdf-view">
    <div id="pdf"></div>
  </div>
</template>
<script>
import Pdfh5 from "pdfh5";
import "pdfh5/css/pdfh5.css";
import { reactive, toRefs } from "@vue/reactivity";
import { onMounted } from "@vue/runtime-core";
import { useRoute } from "vue-router";
export default {
  name: "PdfView",
  setup() {
    const route = useRoute();
    const state = reactive({
      pdfh5: null
    });
    onMounted(() => {
      state.pdfh5 = new Pdfh5("#pdf", {
        pdfurl: route.query.url
      });
      state.pdfh5.on("complete", function (status, msg, time) {
        console.log("状态:" + status + ",信息:" + msg + ",耗时:" + time + "毫秒,总页数:" + this.totalNum);
      });
    });
    return {
      ...toRefs(state)
    };
  }
};
</script>

<style lang="less" scoped>
#pdf-view {
  height: 100%;
  #pdf {
    height: 100%;
  }
  /deep/ .pdfViewer {
    padding: 0;
  }
}
</style>

注意:如果css引用报错的话,按下面的方式引用。

  import Pdfh5 from "pdfh5";
  import "pdfh5/css/pdfh5.css";
  • 3.在需要用到的组件 — 比如登录组件 (login.vue)
<template>
       <span class="protocol" v-for="item in loginUserPro" :key="item.title" @click="handleToPdf(item)">
        <span>{{ item.title }}</span>
      </span>
</template>


export default {
  	setup() {
  	const state = reactive({
  	//用户协议
	loginUserPro: [
        {
          title: "《隐私政策》",
          url: "/heye-h5/static/pdf/荷叶健康-隐私政策.pdf"
        },
        {
          title: "《用户服务协议》",
          url: "/heye-h5/static/pdf/荷叶健康-用户服务协议.pdf"
        }
      ],
	}),
	const handleToPdf = (item) => {
      let url = location.origin + item.url;
      router.push({
        path: "/pdfView",
        query: {
          url: url
        }
      });
    return {
      ...toRefs(state),
      handleToPdf
    };
  }
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值