PDF.js 使用API说明:文件打开、页码跳转、手势放大缩小

PDF访问地址:

http://127.0.0.1:5500/web/viewer.html

修改PDF文件地址直接在后面加?file=

页码跳转在后面加#page=而不是&page=

完成例子:

http://127.0.0.1:5500/web/viewer.html?file=compressed.tracemonkey-pldi-09.pdf#page=1

【手势放大缩小】使用版本PDF.js:2.0.943

在body底部加入如下代码

<script lang="javascript">
    let agent = navigator.userAgent.toLowerCase();
    //if (!agent.includes("iphone")) {
      let pinchZoomEnabled = false;
      function enablePinchZoom(pdfViewer) {
        let startX = 0,
          startY = 0;
        let initialPinchDistance = 0;
        let pinchScale = 1;
        const viewer = document.getElementById("viewer");
        const container = document.getElementById("viewerContainer");
        const reset = () => {
          startX = startY = initialPinchDistance = 0;
          pinchScale = 1;
        };
        // Prevent native iOS page zoom
        //document.addEventListener("touchmove", (e) => { if (e.scale !== 1) { e.preventDefault(); } }, { passive: false });
        document.addEventListener("touchstart", (e) => {
          if (e.touches.length > 1) {
            startX = (e.touches[0].pageX + e.touches[1].pageX) / 2;
            startY = (e.touches[0].pageY + e.touches[1].pageY) / 2;
            initialPinchDistance = Math.hypot(
              e.touches[1].pageX - e.touches[0].pageX,
              e.touches[1].pageY - e.touches[0].pageY
            );
          } else {
            initialPinchDistance = 0;
          }
        });
        document.addEventListener(
          "touchmove",
          (e) => {
            if (initialPinchDistance <= 0 || e.touches.length < 2) {
              return;
            }
            if (e.scale !== 1) {
              e.preventDefault();
            }
            const pinchDistance = Math.hypot(
              e.touches[1].pageX - e.touches[0].pageX,
              e.touches[1].pageY - e.touches[0].pageY
            );
            const originX = startX + container.scrollLeft;
            const originY = startY + container.scrollTop;
            pinchScale = pinchDistance / initialPinchDistance;
            viewer.style.transform = `scale(${pinchScale})`;
            viewer.style.transformOrigin = `${originX}px ${originY}px`;
          }, {
          passive: false
        }
        );
        document.addEventListener("touchend", (e) => {
          if (initialPinchDistance <= 0) {
            return;
          }
          viewer.style.transform = `none`;
          viewer.style.transformOrigin = `unset`;
          PDFViewerApplication.pdfViewer.currentScale *= pinchScale;
          const rect = container.getBoundingClientRect();
          const dx = startX - rect.left;
          const dy = startY - rect.top;
          container.scrollLeft += dx * (pinchScale - 1);
          container.scrollTop += dy * (pinchScale - 1);
          reset();
        });
      }
      document.addEventListener("DOMContentLoaded", () => {
        if (!pinchZoomEnabled) {
          pinchZoomEnabled = true;
          enablePinchZoom();
        }
      });
   

  </script>

引用作者代码:【PDF】pdfjs 在h5支持手势缩放 - 简书

记录一下,方便需要的道友,也有其它的可以在评论区回复哦

网上搜索都没有找到,搜索到了要开VIP才能看到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值