通常来说,要阅读PDF文档,我们通常需要专门的PDF阅读器软件。然而,有了PDF.js,我们可以在浏览器中直接查看和处理PDF文档,无论是进行在线浏览、存档还是其他基于PDF的功能,都可以轻松实现。下面给大家介绍一款免费开源的JavaScript读取、显示PDF文档的工具库——PDF.js
什么是PDF.js
PDF.js是一个使用HTML5技术的前端JS工具库,使得网页能够读取、解析和显示PDF文档。这个项目由知名的Mozilla组织开发和维护,没错,就是那个开发了火狐浏览器的Mozilla。因此,PDF.js也内置在Firefox的19+版本中,成为火狐浏览器的默认PDF处理工具。
PDF.js免费开源说明
Mozilla 是一个非营利性组织,始终致力于推动浏览器的良好发展。PDF.js 也不例外,是一个免费开源的项目,其源码基于 Apache 2.0 许可托管在 Github 上。任何人都可以免费下载和使用 PDF.js,将其用于商业项目也是完全可以的。
PDF.js的技术特性
1、功能强大,内置了很多实用的 api,几乎可以对 PDF 文件“为所欲为”;
2、兼容性超好,不仅支持现代浏览器,对于旧版本的浏览器也有很好的支持;
3、易于上手,官方也提供了很多代码例子。
PDF.js代码上手
npm 安装的方式:
npm i pdfjs-dist -S
项目demo
<template> <div class="hello"> <input type="file" name="file" id="file" accept="application/pdf" single placeholder="请选择pdf文件" @change="handleFile" /> <canvas id="viewer" ref="viewer" :width="width" :height="height"></canvas> </div> </template> <script> import { getDocument } from "pdfjs-dist/webpack"; // 注意这里的引入方式 // 省略无关代码... // methods: handleFile(e) { const reader = new FileReader(); reader.onload = (evt) => { this.init(evt.target.result); }; reader.readAsDataURL(e.target.files[0]); }, async init(path) { // 读取pdf let pdf = await getDocument(path).promise; //返回一个pdf对象 const page = await pdf.getPage(0); // 获取第一页 const viewport = page.getViewport({ scale: 1 }); const textContent = await page.getTextContent(); console.log(textContent.items); // 页面的文章内容在这 const context = this.canvas.getContext("2d"); // 设置canvas的尺寸 this.width = viewport.width; this.height = viewport.height; await page.render({ canvasContext: context, viewport: viewport }).promise; // 渲染第一页内容 }, </script>
除了提取文章和转成图片,PDF.js还具有许多强大的功能。例如,它可以实现页面导航,在预览时加入缩放、滚动、旋转和手写等注释,以及实现打印、另存为等操作。
一款用于在网页上生成五彩纸屑特效的JavaScript库——Canvas Confetti
一款专门为小程序开发而生的插件——weapp-tailwindcs
推荐一款基于ThinkPHP8和Vue3的后台管理系统——BuildAdmin
推荐一款由支付宝小程序官方推出的免费开源UI组件库——Ant Design Mini
标签: js工具库, PDF.js, PDF文档, 前端开源项目, 前端资源
上面是“推荐一款免费开源的JavaScript读取、显示PDF文档的工具库——PDF.js”的全面内容,想了解更多关于 前端知识 内容,请继续关注web建站教程。
当前网址:https://m.ipkd.cn/webs_13758.html
声明:本站提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请发送到邮箱:admin@ipkd.cn,我们会在看到邮件的第一时间内为您处理!