PDF.js简介

pdf.js 是一个由 Mozilla 开发的 JavaScript 库,可以在 Web 浏览器中显示 PDF 文档。pdf.js 将 PDF 文档转换为 HTML5 Canvas 元素,并使用 JavaScript 控制文档的呈现和交互。pdf.js 使得不需要在计算机上安装 Adobe Reader 或其他 PDF 阅读器就可以在 Web 上阅读 PDF 文档成为可能。pdf.js是一个免费的开源软件,使用和修改都非常方便。

安装

pdf.js 可以从其官方网站下载。

使用

pdf.js 的使用非常简单。以下是一个基本的示例:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>pdf.js 示例</title>
    <script src="path/to/pdf.js"></script>
  </head>
  <body>
    <div>
      <canvas id="pdf-canvas"></canvas>
    </div>
    <script>
      // 获取 PDF 文档
      const pdfUrl = 'path/to/pdf/document.pdf';

      // 获取 canvas 元素
      const canvas = document.getElementById('pdf-canvas');

      // 用 pdf.js 渲染 PDF 文档
      pdfjsLib.getDocument(pdfUrl).promise.then(function(pdfDoc) {
        pdfDoc.getPage(1).then(function(page) {
          const viewport = page.getViewport({scale: 1});
          const context = canvas.getContext('2d');
          canvas.height = viewport.height;
          canvas.width = viewport.width;

          page.render({
            canvasContext: context,
            viewport: viewport
          });
        });
      });
    </script>
  </body>
</html>

在这个示例中,首先在 <head> 部分引入 pdf.js 库,然后在 <body> 中创建一个 canvas 元素,用于显示 PDF 文档。使用 pdfjsLib.getDocument 方法获取 PDF 文档对象,然后用 pdfDoc.getPage 方法获取第一页,并将其渲染到 canvas 元素中。可以根据需要更改页面号码、缩放比例以及其他参数,以根据您的需求自定义 PDF 文档的呈现方式。

pdf.js 还支持各种 PDF 功能,如缩放、旋转和拖动等。您可以使用页面上的按钮或编写 JavaScript 代码以实现这些功能。下面是一些示例代码:

// 缩放 PDF 文档
const zoomInButton = document.getElementById('zoom-in');
const zoomOutButton = document.getElementById('zoom-out');
const resetZoomButton = document.getElementById('reset-zoom');

let currentScale = 1;
const MAX_SCALE = 3;
const MIN_SCALE = 0.5;

zoomInButton.addEventListener('click', function() {
  if (currentScale < MAX_SCALE) {
    currentScale += 0.5;
    pdfViewer.currentScaleValue = currentScale;
  }
});

zoomOutButton.addEventListener('click', function() {
  if (currentScale > MIN_SCALE) {
    currentScale -= 0.5;
    pdfViewer.currentScaleValue = currentScale;
  }
});

resetZoomButton.addEventListener('click', function() {
  currentScale = 1;
  pdfViewer.currentScaleValue = currentScale;
});

// 旋转 PDF 文档
const rotateLeftButton = document.getElementById('rotate-left');
const rotateRightButton = document.getElementById('rotate-right');

rotateLeftButton.addEventListener('click', function() {
  pdfViewer.pages.forEach(function(page) {
    const currentRotation = page.rotation;
    page.setRotation(currentRotation - 90);
  });
});

rotateRightButton.addEventListener('click', function() {
  pdfViewer.pages.forEach(function(page) {
    const currentRotation = page.rotation;
    page.setRotation(currentRotation + 90);
  });
});

// 拖动 PDF 文档
const pdfContainer = document.getElementById('pdf-container');

let isDragging = false;
let startPoint = {};
let currentPoint = {};

pdfContainer.addEventListener('mousedown', function(event) {
  isDragging = true;
  startPoint.x = event.clientX;
  startPoint.y = event.clientY;
});

pdfContainer.addEventListener('mousemove', function(event) {
  if (isDragging) {
    currentPoint.x = event.clientX;
    currentPoint.y = event.clientY;
    const deltaX = currentPoint.x - startPoint.x;
    const deltaY = currentPoint.y - startPoint.y;
    pdfViewer.scrollLeft -= deltaX;
    pdfViewer.scrollTop -= deltaY;
    startPoint.x = currentPoint.x;
    startPoint.y = currentPoint.y;
  }
});

pdfContainer.addEventListener('mouseup', function() {
  isDragging = false;
});

猜你喜欢

转载自blog.csdn.net/github_36738403/article/details/131325145