H5加载pdf使用 pdf-pdfh5.js

参考文档

git项目地址

 

 

pdfh5.js 基于pdf.js和jQuery,web/h5/移动端PDF预览手势缩放插件。

  • 注意:本地绝对路径地址不能加载,跨域问题用代理或者服务端解决。

  • svg模式渲染存在缺陷,只能渲染普通pdf,带签名、印章的可能会渲染不全,报错,pdf.js官方目前没有给出解决方案

  • canvas模式本质是图片,默认进去的时候,图片在手机端被缩放,不是原分辨率,所以失真模糊。所以需要放大查看pdf

 

使用示例:

HTML(使用中)

一、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: "网络地址"
});

 

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

  • 1.安装
npm install pdfh5
  • 2.使用
<template>
  <div id="app">
    <div id="demo"></div>
  </div>
</template>
<script>
  import Pdfh5 from "pdfh5";
  export default {
    name: 'App',
    data() {
      return {
        pdfh5: null
      };
    },
    mounted() {
        //实例化
      this.pdfh5 = new Pdfh5("#demo", {
        pdfurl: "../../static/test.pdf"
      });
      //监听完成事件
      this.pdfh5.on("complete", function (status, msg, time) {
        console.log("状态:" + status + ",信息:" + msg + ",耗时:" + time + "毫秒,总页数:" + this.totalNum)
      })
    }
  }
</script>

<style>
    @import "pdfh5/css/pdfh5.css";
    *{
    padding: 0;
    margin: 0;
    }
    html,body,#app {
    width: 100%;
    height: 100%;
    }
</style>

 

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

 

import Pdfh5 from "pdfh5";
import "pdfh5/css/pdfh5.css";

 

 

异常问题汇总:

1、移动端设置meta ,否则影响展示 

<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">

 

2、协议不一致(https、http),导致报错

 

 

 

3、跨域异常

 

 

 

https://github.com/mozilla/pdf.js  作为请求资源,受到外层浏览器局限,允许该资源在当前域名下使用,此时设置跨域请求,需要配置跨域请求,
如果:1、pdf地址在服务,需要服务器配置,该pdf请求地址 允许在该域名下访问
           2、在OSS 需要配置,请求域名为*   所有域名都可以请求;
 
 
Response Headers
   access-control-allow-origin: *
 

 

posted @ 2020-10-26 14:23  2020,hello  阅读(10287)  评论(0编辑  收藏  举报