前言
对于需要高性能、复杂功能或强大支持处理复杂 PDF 的项目,建议选择商业 PDF 库,如 ComPDFKit for Web。但是,如果您的目标只是在 Web 应用程序中显示 PDF,则可以使用以下五个可靠的开源 JavaScript 库来查看 PDF。
正文
功能特点 | NPM一周下载量(2024年12月12日统计) | 文件大小 | Issues | 框架支持 | 最新版本 | 浏览器支持 | 许可 | |
pdf.js | –打开 PDF –缩放 –轮廓 –旋转 –手动工具 –滚动 –翻页 –打印 –下载 –搜索 –注释 –在 PDF 上添加文本/图像 |
2,434,999 | 37.2 MB | 385 | 原生javascript 库,支持大多数矿界 | V 4.9.155 2024 年 12 月 5 日 |
Firefox Chrome Opera Edge Safari |
Apache-2.0 license |
react-pdf | –打开和阅读 PDF –大纲 –缩略图 –旋转页面 –缩放页面 –适应页面、宽度和高度 –滚动页面 |
1,109,164 | 552 kB | 36 | React | V 9.1.1 2024 年 9 月 18 日 |
Chrome Edge Safari Firefox |
MIT |
pdfmake | –打开和阅读 PDF –翻页 –两页视图 –旋转页面 –调整至适合宽度 –缩放 –缩略图 –注释 –下载 –打印 –文档属性 –自定义字体 |
724,335 | 16.2 MB | 264 | NodeJS | V 0.2.15 2024 年 11 月 3 日 |
Internet Explorer 11 Edge 12+ Firefox Chrome Chrome (Android) Opera Safari (iOS) Safari (iOS) iPhone |
MIT |
ng2-pdf-viewer | –打开和阅读 PDF –搜索 PDF –旋转页面 –查看器大小选项: 宽度、高度、适合页面 –轮廓 –滚动页面 |
169,012 | 282 kB | 83 | Angular | V 10.4.0 2024 年 12 月 11 日 |
/ | MIT |
ngx-extended-pdf-viewer | –自定义工具栏: 按钮和大小 –打开和阅读 PDF –注释 –表格 –缩略图 –轮廓 –颜色主题 –缩放 –旋转页面 –打印 –下载 –全屏模式 –滚动 |
88,719 | 43.2 MB | 34 | Angular | V 22.1.0-alpha.0 2024 年 12 月 11 日 |
兼容最新版本的流行浏览器 | Apache-2.0 |
1. pdf.js
PDF.js 是 Mozilla 开发的开源 JavaScript 库,旨在直接在 Web 浏览器中呈现 PDF 文件,而无需额外的插件。它强调在不同平台上提供无缝的 PDF 阅读体验。
* 优点 *
- 高度灵活和全面,可直接在浏览器中处理 PDF 文件。
- 得到 Mozilla 的大力支持,拥有活跃的社区和定期更新。
- 完全免费和开源,适用于各种应用程序和开发框架。
- 除了阅读之外,还支持部分注释功能。
- 提供插件。
* 缺点 *
- 包尺寸大。
- 对于非常复杂的 PDF,性能可能是一个问题,并且与商业选项相比缺少一些功能。
- 对于渲染非标准或更复杂的 PDF 结构的支持有限。
- 用户之前曾遇到过 Internet Explorer 中频繁出现页面预览失败的情况。
- 允许代码修改和重新分发,但不如 MIT 许可证灵活。
2. react-pdf
React-pdf 是一个专门设计用于与 React 应用程序集成的库,允许开发人员在其 React 组件中呈现 PDF。它为在 React 生态系统中工作的前端开发人员提供了灵活的解决方案。
* 优点 *
- 与 React 无缝集成,非常适合使用此库构建的项目。
- 易于使用且文档清晰,注重 React 开发人员的可用性。
* 缺点 *
- 仅适用于 React 项目。
- 依赖于 PDF.js,因此它存在与 PDF.js 相同的问题。
- 与更强大的库相比,功能有限,通常需要额外的插件来扩展功能。
- 处理更大或更复杂的 PDF 文件时性能可能会下降。
3. pdfmake
PDFmake 是一个用 JavaScript 编写的多功能 PDF 创建库,允许以编程方式生成 PDF 文件。它以能够轻松以编程方式创建复杂、样式化的 PDF 而闻名,非常适合创建动态文档。
* 优点 *
- 提供服务器端 PDF 生成,适合动态内容创建。
- 高度可定制,支持复杂的文档结构和样式。
- 支持多种浏览器。
* 缺点 *
- 由于其配置选项过多,对于初学者来说学习起来可能比较复杂。
- 创建非常大的文件或复杂的设计时可能会出现性能限制。
4. ng2-pdf-viewer
Ng2-pdf-viewer 是一个简单的 Angular 组件,可在 Angular 应用程序中启用 PDF 查看功能。它专注于简单性和易于与 Angular 框架集成。
* 优点 *
- 轻量级且易于与 Angular 应用程序集成。
- 专注于 PDF 的高效渲染和显示。
缺点
- 仅适用于 Angular 项目。
- 高级功能有限,可能需要额外的软件包才能形成完整的解决方案。
- 与大型项目相比,更新和社区支持可能不那么强大。
5. ngx-extended-pdf-viewer
Ngx-extended-pdf-viewer 是一个 Angular 库,它提供了在 Angular 应用程序中显示 PDF 文件的广泛功能。它因其可配置性和功能丰富的行为而受到重视,可满足复杂的 PDF 处理需求。
* 优点 *
- 支持几乎所有主流的现代浏览器。
- 提供丰富的功能和自定义选项,特别适合 Angular 项目。
- 支持广泛的 PDF 功能,包括文本选择、注释和表格处理。
* 缺点 *
- 包尺寸大。
- 仅适用于 Angular 项目。
- 如果只需要基本功能,过多的功能可能会显得难以承受。
- 由于其功能集非常广泛,因此包大小很大,可能并不适合所有场景。
- 允许代码修改和重新分发,但不如 MIT 许可证灵活。