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

在线PDF阅读方案:jQuery + PDF.js

<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>PDF 多页查看</title><script src="https://code.jquery.com/jquery-3.6.0.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.16.105/pdf.min.js"></script>
</head>
<body><div><button id="prevPage" type="button">上一页</button><button id="nextPage" type="button">下一页</button><span>当前页:<span id="currentPage">1</span> / <span id="totalPages">?</span></span></div><canvas id="pdfCanvas"></canvas><script>$(document).ready(function() {var pdfUrl = "example.pdf";  // 替换成你的 PDF 文件路径var pdfDoc = null;var pageNum = 1;var scale = 1.5;function renderPage(num) {pdfDoc.getPage(num).then(function(page) {var viewport = page.getViewport({ scale: scale });var canvas = $("#pdfCanvas")[0];var context = canvas.getContext("2d");canvas.width = viewport.width;canvas.height = viewport.height;var renderContext = {canvasContext: context,viewport: viewport};page.render(renderContext);// 更新当前页码$("#currentPage").text(num);});}// 加载 PDF 并渲染第一页pdfjsLib.getDocument(pdfUrl).promise.then(function(pdf) {pdfDoc = pdf;$("#totalPages").text(pdf.numPages);renderPage(pageNum);});// 上一页$("#prevPage").click(function(event) {event.preventDefault(); // 阻止默认行为if (pageNum > 1) {pageNum--;renderPage(pageNum);}});// 下一页$("#nextPage").click(function(event) {event.preventDefault(); // 阻止默认行为if (pageNum < pdfDoc.numPages) {pageNum++;renderPage(pageNum);}});});</script>
</body>
</html>
http://www.dtcms.com/a/176969.html

相关文章:

  • 内网和外网怎么互通?外网访问内网的几种简单方式
  • 解决HomeAssistant 无法安装 samba share问题
  • 【数据库原理及安全实验】实验六 角色访问控制
  • 《C++ Templates》:有关const、引用、指针的一些函数模板实参推导的例子
  • C#——NET Core 中实现汉字转拼音
  • Redis 8.0 正式版发布,新特性很强!
  • 品质领航家装时代,亚新丽以匠心雕琢每一寸美好
  • 5.6-DAE实现
  • AI大模型分类以及Prompt优化技巧
  • 迁移学习:如何加速模型训练和提高性能
  • Vue3 自定义指令的原理,以及应用
  • Make:独立创造者手册——从0到1的商业自由之路
  • GPAW安装流程——Ubuntu 系统(Python 3.8.10)
  • 宝塔面板,删除项目后还能通过域名进行访问
  • 【上位机——MFC】对话框
  • 《软件项目管理》笔记一
  • OpenCV 中用于背景分割(背景建模)的一个类cv::bgsegm::BackgroundSubtractorCNT
  • 使用pdm管理python项目时去哪里找nuitka
  • LeetCode第191题_位1的个数
  • 如何通过复盘提升团队能力?
  • isNotBlank和isNotEmpty有什么区别?
  • privateGPT和RAGflow之间的区别
  • 5.7 react 路由
  • 通义读光系列文字检测+识别模型端到端OCR应用
  • 【Python 函数】
  • mathtype转化
  • P值、置信度与置信区间的关系:统计推断的三大支柱
  • 华泰商会未来规划——数字化、国际化、生态化
  • 关税风暴下的亚马逊卖家:在“抽象”生态中寻找破局之道
  • cursor配置mcp并使用