PDF.js 很强,但 PDFSlick 可能更适合你!

boyanx4个月前技术教程13

家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力。

什么是 PDFSlick

PDFSlick is a library that enables viewing of and interaction with PDF documents in React, SolidJS, Svelte and JavaScript apps. It's build on top of Mozilla's PDF.js, and utilises Zustand to provide a reactive store for the loaded documents.

PDFSlick 是一个库,可以在 React、SolidJS、Svelte 和 JavaScript 应用程序中查看 PDF 文档并与之交互。PDFSlick 构建在 Mozilla 的 PDF.js 之上,并利用 Zustand 为加载的文档提供反应式存储。


PDF.js 虽然很优秀而且非常稳定和成熟,其也是 Mozilla Firefox 中的 PDF 查看器,自 2011 年以来一直存在。然而,其完全是 Vanilla JavaScript,当涉及到在现代 JS 库(如 React 和 SolidJS)中使用时仍然有诸多不足。

PDFSlick 试图将所有这些有用的功能包装成一个更容易适应 React 和 SolidJS 世界的功能,最终作为组件和反应存储。

目前 PDFSlick 在 Github 通过 MIT 协议开源,是一个值得关注的前端开源项目。

如何使用 PDFSlick

首先需要安装依赖:

npm install @pdfslick/react
//  yarn add @pdfslick/react
//  pnpm add @pdfslick/react

开发者可以通过 usePDFSlick() Hooks 开始使用 PDFSlick,如以下基本示例所示:

import {usePDFSlick} from "@pdfslick/react";
import PDFNavigation from "./yourcomponents/PDFNavigation";
import "@pdfslick/react/dist/pdf_viewer.css";

type PDFViewerComponentProps = {
  pdfFilePath: string,
};
const PDFViewerComponent = ({pdfFilePath}: PDFViewerComponent) => {
  const {viewerRef, usePDFSlickStore, PDFSlickViewer} = usePDFSlick(
    pdfFilePath,
    {
      scaleValue: "page-fit",
    }
  );
  const scale = usePDFSlickStore((s) => s.scale);
  const numPages = usePDFSlickStore((s) => s.numPages);
  const pageNumber = usePDFSlickStore((s) => s.pageNumber);

  return (
    

Current scale: {scale}

Current page number: {pageNumber}

Total number of pages: {numPages}

); }; export default PDFViewerComponent;

提供 PDF 文档路径和 PDFSlick 选项对象后,usePDFSlick() Hooks 将返回一个对象,该对象由以下各项组成(除其他内容外):

  • PDFSlickViewer 是用于查看 PDF 文档的 PDF 查看器组件
  • viewerRef 是作为 组件的 prop 提供的 ref 回调
  • usePDFSlickStore 允许在 React 组件中使用 PDFSlick 存储

同时,在 SolidJS 中使用也非常简单,比如下面的示例:

import {Component, createSignal} from "solid-js";
import {usePDFSlick} from "@pdfslick/solid";

type PDFViewerAppProps = {
  pdfFilePath: string,
};
const PDFViewerApp: Component = ({ pdfFilePath }) => {
  const {
    viewerRef,
    pdfSlickStore: store,
    PDFSlickViewer,
  } = usePDFSlick(pdfFilePath);

  return (
    
); }; export default PDFViewerApp;

更多关于 PDFSlick 的用法和示例可以参考文末资料,本文不再过多展开

参考资料

https://github.com/pdfslick/pdfslick

https://pdfslick.dev/docs/solid

https://pdfslick.dev/examples

标签: pdfobject.js

相关文章

如何用Python程序将几十个PDF文件合并成一个PDF?其实只要这四步

假定你有一个很无聊的任务,需要将几十个PDF文件合并成一个PDF文件。每一个文件都有一个封面作为第一页,但你不希望合并后的文件中重复出现这些封面。即使有许多免费的程序可以合并PDF,很多也只是简单的将...

前端黑科技:一键将网页变 PDF,so easy!

在数字化办公时代,PDF以其跨平台、易于打印和分享等优点,成为了文档格式的首选。而今天,我们要学习一项超实用的前端黑科技,无需任何插件,就能将网页内容转化为PDF并下载,轻松提升工作效率!告别繁琐,三...

硕士博士福音:超好用的7大PDF工具汇总

作为硕士博士,日常工作之一就是阅读文献。PDF文件作为文献的载体,和大家的关系也是抬头不见低头见。我们都知道PDF文件的优势明显,能够避免格式错乱以及文件被误改,但不如Word文档修改得顺畅。在日常科...

破解机器人抓取透明物体难题,地瓜机器人 &CASIA新方案发布

IT之家 3 月 5 日消息,全球机器人领域顶会 ICRA 2025(IEEE 机器人与自动化国际会议)日前公布了论文录用结果,地瓜机器人主导研发的 DOSOD 开放词汇目标检测算法与 MODEST...

word文档怎么插入pdf?一文详解,建议收藏!

在工作中我们可能会有在word文档中插入pdf文件的需求,这篇文章就跟大家分享一下解决办法。第1步:打开word文档,在【插入】选项卡下的【文本】功能组中单击【对象】按钮。第2步:在打开的【对象】对话...

jscanify:支持 Node.js/浏览器/React 移动文档扫描仪

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力。什么是 jscanifyOpe...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。