当前位置: 首页 > news >正文

利用pdfjs实现的pdf预览简单demo(包含翻页功能)

利用pdfjs实现的pdf预览简单demo

文章目录

  • 实现方式
  • demo展示
  • 总结


实现方式

该demo采用html实现,然后js什么的都引用线上的,主要呈现思路,有需要的话,可以摘取页面实现部分思路二次开发,或直接封装使用。


demo展示

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PDF.js Demo</title>
<style>body {font-family: Arial, sans-serif;margin: 20px;}canvas {border: 1px solid black;margin-top: 10px;}
</style>
</head>
<body>
<h1>PDF.js Demo</h1>
<button onclick="previousPage()">Previous Page</button>
<button onclick="nextPage()">Next Page</button>
<div>Page <span id="page_num"></span> of <span id="page_count"></span>
</div>
<canvas id="pdf_renderer"></canvas><script src="https://cdn.bootcdn.net/ajax/libs/pdf.js/2.10.377/pdf.min.js"></script>
<script>let pdfDoc = null,pageNum = 1,pageRendering = false,pageNumPending = null,canvas = document.getElementById('pdf_renderer'),ctx = canvas.getContext('2d');function renderPage(num) {pageRendering = true;pdfDoc.getPage(num).then(function(page) {let viewport = page.getViewport({scale: 1.5});canvas.height = viewport.height;canvas.width = viewport.width;let renderContext = {canvasContext: ctx,viewport: viewport};let renderTask = page.render(renderContext);renderTask.promise.then(function() {pageRendering = false;if (pageNumPending !== null) {renderPage(pageNumPending);pageNumPending = null;}});});document.getElementById('page_num').textContent = num;}function queueRenderPage(num) {if (pageRendering) {pageNumPending = num;} else {renderPage(num);}}function nextPage() {if (pageNum >= pdfDoc.numPages) {return;}pageNum++;queueRenderPage(pageNum);}function previousPage() {if (pageNum <= 1) {return;}pageNum--;queueRenderPage(pageNum);}// Load PDF document const url = '自己的文件的路径';pdfjsLib.getDocument(url).promise.then(function(pdfDoc_) {pdfDoc = pdfDoc_;document.getElementById('page_count').textContent = pdfDoc.numPages;renderPage(pageNum);});
</script>
</body>
</html>

总结

好的你绝对看不出博主在水文章,这个是博主之前解决一个项目难题积累下的,希望或多或少能够帮助你们。
在这里插入图片描述

http://www.dtcms.com/a/282669.html

相关文章:

  • 从0开始学习R语言--Day48--Calibration Curves 评估模型
  • ByteToMessageDecoder详解
  • 众趣分享 | 浅谈三维重建(空间计算)技术原理
  • STM32外设介绍5(DMA<直接存储器访问>)
  • 开源模型应用落地-qwen模型小试-Qwen3-Embedding 模型集成 vLLM 实战解析(二)
  • Python第三次作业
  • 【Node 日常使用 】
  • GitHub 趋势日报 (2025年07月15日)
  • 中望3D 2026亮点速递(1)-全新槽功能螺纹功能,减少繁琐操作
  • Oracle,PostgreSQL查看字段码值方式
  • 国内外服务器的不同之处
  • 【Qt】麒麟系统安装套件
  • 机器学习:AI 自主学习能力的来源
  • Rocky9安装Ansible
  • 网络安全(初级)(XSS-labs 1-8)
  • 【React Native】模态页Modal
  • 论文导读--PQ3D:通过分段级分组实现多模态特征融合和 MTU3D:在线查询表示学习与动态空间记忆
  • 【MAC技巧】Bash/Zsh切换失败的故障排除
  • aspect-ratio: 1 / 1样式在部分手机浏览器中失效的问题怎么解决?
  • 《R for Data Science (2e)》免费中文翻译 (第0章) --- Introduction
  • CURRENT_TIMESTAMP和NOW函数使用
  • Spring Boot 集成 Redis 并调用 Lua 脚本详解
  • multiprocessing.Pool 中的 pickle 详解
  • 文献精读:气候变化、CO2浓度提高和土地利用变化对全球陆地蒸散发的影响分析
  • C++矿井逃生游戏深度解析:迷宫生成与灯光渲染技术 | EasyX实战
  • 45. 跳跃游戏 II
  • 3.1 认识函数
  • 工作第一步建立连接——ssh
  • [MySQL基础1]数据定义语言DDL与数据操作语言DML
  • Transform的重要方法