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; });
复制