使用 PDF.js、vue-pdf-embed、vue-pdf 和 Vue PDF Viewer 在 Nuxt 中构建 PDF 查看器

5 阅读7分钟

由于 Nuxt 框架在 Vue 社区中被广泛使用,我认为研究如何在 Nuxt 中构建 PDF 查看器会很有趣。

在本文中,我将与您分享在 Nuxt 中渲染 PDF 的四种方法:PDF.js、vue-pdf-embed、@tato30/vue-pdf和Vue PDF Viewer。我还将分析每种方法的优缺点,以便您可以选择最适合您项目的方法。

让我们出发的动图

Nuxt 与 Vue.js 有何不同? Vue.js 非常适合构建交互式界面,但是当您的应用程序增长时,您通常最终需要自己拼接路由、服务器端渲染(SSR)和部署设置。

这就是 Nuxt 的作用所在。它是一个建立在 Vue.js 之上的框架,开箱即用地添加了 SSR、静态站点生成、自动路由和性能优化,因此您可以专注于构建站点的功能。

Vue 和 Nuxt 的核心理念相同,但 Nuxt 为大型项目提供了更完善的结构。如果您想扩展网站规模或提升 SEO,Nuxt 可以节省时间并减少设置方面的麻烦。

Vue PDF 查看器:灵活且强大的 Vue.js PDF 组件 Vue PDF Viewer 的屏幕截图

简单介绍一下我正在做的事情。如果你正在 Vue 或 Nuxt 应用中构建 PDF 体验,不妨看看Vue PDF Viewer。

它拥有超过 20 个功能组件,允许用户直接在您的网站上查看 PDF 并进行交互。它内置本地化、主题和响应式设计,非常适合注重用户体验和可维护性的团队。

我很乐意得到您的反馈和支持,这有助于我不断改进工具并为 Vue 社区创建有用的内容 ❤️

方法一:PDF.js PDF.js 的屏幕截图

PDF.js是 Mozilla 推出的一款功能强大的 JavaScript 库,允许直接在 Web 浏览器中渲染和交互 PDF。PDF.js 与框架无关,可在任何 JavaScript 框架(例如 Angular、React 和 Vue)中使用。

在 Nuxt 中,您可以通过以下方式使用 PDF.js:

通过 npm 安装 PDF.js 库。 创建一个组件来显示 PDF 查看器。 将 PDF.js 合并到组件中以呈现 PDF 文件。 这是代码示例的链接。

Nuxt 的 PDF.js 演示

优点 可靠:由 Mozilla 开发并由 Firefox 团队支持。 积极开发:由 Mozilla 定期更新和维护。 完全控制渲染:您可以自定义渲染(缩放、页面导航、注释等)。 支持高级功能:例如逐页渲染、自定义 UI、突出显示等。 灵活,不依赖外部 UI:您可以根据需要构建自己的 UI 查看器。 大型社区:非常适合自行解决问题和调试。 缺点 文档混乱:不是用户友好的技术文档 使用起来更复杂:需要更多代码,包括处理 DOM 和画布 学习曲线陡峭:需要了解 PDF.js 的内部工作原理 不是 Vue 组件:必须编写包装器或集成才能在 Nuxt 中正常工作 方法二:vue-pdf-embed vue-pdf-embed 的屏幕截图

vue-pdf-embed简化了在 Vue 或 Nuxt 应用程序中显示 PDF 文件的过程。它提供了一个易于使用的组件,无需复杂的设置即可显示 PDF。

要在 Nuxt 中使用 vue-pdf-embed,请按照以下步骤操作:

通过 npm 安装 vue-pdf-embed 库。 在您的应用程序中导入并使用该组件来显示 PDF。 设置您想要显示的 PDF 文件的 URL 或路径。 这是代码示例的链接。

Nuxt 的 vue-pdf-embed 演示

优点 使用快捷:只需导入并使用(无需手动渲染画布)。 适合一般用户或简单任务:非常适合简单的 PDF 预览www.mytiesarongs.com。 轻量级:最小开销,特别是当您不需要自定义 UI 时。 缺点 不支持 SSRwindow :由于依赖和,在 Nuxt 的服务器端渲染中不起作用canvas。 最少的定制/功能:渲染逻辑和样式选项有限。 不适合复杂的 PDF 查看器:缺乏内置搜索、缩放或多页导航。 缺乏文档:没有提供高级使用指南和教程。 社区较小:支持和故障排除可能需要等待其他用户的问题或 PR。 方法三:@tato30/vue-pdf vue-pdf 的截图

@tato30/vue-pdf是一个基于 Mozilla PDF.js 的 Vue 封装器,它提供了一种更适合 Vue 的 PDF 渲染方式。它支持 PDF.js 的大部分核心功能,并且更容易集成到 Nuxt 应用程序中。

开始:

通过 npm 或 yarn 安装 @tato30/vue-pdf。 导入组件并进行全局或本地注册。 在您的模板中使用该组件并使用 src 属性传递 PDF 文件 URL。 这是代码示例的链接

动图 Nuxt 的 vue-pdf 演示

优点 Vue/Nuxt 支持:使用 Composition API 与 Vue 和 Nuxt 完全兼容。 简单的 API:即使对于初学者来说也易于使用和集成。 PDF 渲染灵活性:支持单独的页面渲染、文本层和注释层。 支持非拉丁字体:通过适当的设置(例如 cmaps),它可以呈现包含非拉丁字符的 PDF。 缺点 不支持 SSR:依赖于特定于浏览器的 API(例如window和canvas),这些 API 在 Nuxt SSR 模式下会中断。 没有内置的多页渲染:您必须使用手动循环遍历每个页面v-for,这会影响性能。 缺乏内置 UI 控件:没有默认导航元素(例如,下一页/上一页按钮、缩放控件、滚动条)。您必须自行实现这些控件。 某些功能的额外设置:启用文本层、注释或非拉丁字体渲染需要额外的配置。 社区较小:问题解决速度可能较慢,活跃贡献者较少。 方法 4:Vue PDF 查看器 Vue PDF Viewer 的屏幕截图

Vue PDF Viewer库为 Vue 或 Nuxt 应用程序提供了一个全面的 PDF 查看器组件。它基于 Mozilla 的 PDF.js 引擎构建,提供功能齐全的 UI 体验,与流行的桌面 PDF 查看器非常相似。

要将 Vue PDF Viewer 添加到您的 Nuxt 应用:

通过 npm 或 yarn 安装 @vue-pdf-viewer/viewer 及其对等依赖项 pdfjs-dist。 在您的 Nuxt 应用中导入并注册该组件。 在您的模板中使用该组件并通过 prop 设置 PDF 文件 URL 或路径src。 这是代码示例的链接

Nuxt 的 Vue PDF 查看器演示

优点 快速简便的设置:只需几行代码即可安装并呈现功能齐全的 PDF 查看器。或者,您也可以使用示例项目中的即用型设置。 内置工具栏:配备功能齐全的工具栏,具有页面导航、缩放、缩略图、侧边栏、文本搜索等基本功能。 功能丰富的 PDF 查看器:开箱即用,超过 20 种标准功能,例如搜索、主题、打印、下载、旋转等。 高度可定制:将您的 Nuxt PDF 查看器定制为您自己的品牌,或使用公开的 API 构建您自己的工具栏,以实现搜索、突出显示、打印、旋转功能等。 清晰的文档:精心编写的指南、教程和示例有助于加快开发速度。 积极维护:频繁更新、及时修复错误和提供快速支持。 缺点 付费:虽然您可以免费试用(带水印)或通过免费试用版试用,但要在 Nuxt 应用中使用,需要付费许可证。不过,就我个人而言,定价方案还算合理。 不支持 SSR(服务器端渲染):依赖于特定于浏览器的 API,并且无法在服务器上渲染(例如在 Nuxt 或其他 SSR 设置中)。 更大的捆绑包大小:它包括完整的查看器 UI 组件和资产,与较小的 PDF 查看器替代品相比更重。 结论 在 Nuxt 应用程序中渲染 PDF 时,没有一刀切的解决方案。根据项目需求、技术复杂性和用户体验目标,每种方法都有不同的适用性:

当您想要绝对控制并且不介意投资自定义 UI 和处理复杂性时,请使用 PDF.js。 如果您只是需要一个轻量级且易于使用的查看器,请选择 vue-pdf-embed。 使用@tato30/vue‑pdf 可以在功能性和简单性之间取得平衡。 如果您的应用需要专为 Vue 或 Nuxt 构建的功能丰富的解决方案,请尝试 Vue PDF Viewer @vue‑pdf‑viewer/viewer,它非常适合需要搜索、主题、本地化等高级功能的生产级应用。以上内容由企业信息服务平台提供,致力于工商信用信息查询、企业风险识别、经营数据分析。访问官网了解更多:www.ysdslt.com