当前位置: 首页 > 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.lryc.cn/news/590529.html

相关文章:

  • 用AI做带货视频评论分析进阶提分【Datawhale AI 夏令营】
  • Windows11怎样禁止应用开机启动
  • pytorch | minist手写数据集
  • 每日算法刷题Day49:7.16:leetcode 差分5道题,用时2h
  • C# 按照主题的订阅 按照类型的订阅
  • OCR 与 AI 图像识别:协同共生的智能双引擎
  • Spring MVC中@PathVariable的用法详解
  • Vue 3 中调用子组件方法
  • LLM大语言模型不适合统计算数,可以让大模型根据数据自己建表、插入数据、编写查询sql统计
  • 从洞察到行动:大数据+AI赋能消费者洞察
  • 【前端】HTML语义标签的作用与实践
  • Ubuntu GRUB菜单密码重置教程
  • 重学SpringMVC一SpringMVC概述、快速开发程序、请求与响应、Restful请求风格介绍
  • 【一文解决】块级元素,行内元素,行内块元素
  • 第五章 OB 分布式事务高级技术
  • exports使用 package.json字段控制如何访问你的 npm 包
  • 多人协作游戏中,团队共同获取的装备如何确定按份共有或共同共有
  • 软路由 + 代理 IP 实现多手机不同公网 IP 分配教程
  • 从0开始学习R语言--Day48--Calibration Curves 评估模型
  • JobSet:Kubernetes 分布式任务编排的统一解决方案
  • 【add vs commit】Git 中的 add 和 commit 之间的区别
  • PLUS模型+生态系统服务多情景模拟预测实践技术
  • 大语言模型幻觉检测:语义熵揭秘
  • Reddit Karma是什么?Post Karma和Comment Karma的提升指南
  • 精彩代码分析-1
  • 光伏项目快速获取地址,三种地图赋能设计
  • 倪海厦全套下载,八纲辨证,人纪,天纪,针灸,电子版
  • vue3中高阶使用与性能优化
  • Day04_C语言网络编程20250716
  • Nginx,MD5和Knife4j