• 现在您可以运行开发 Web 服务器了:

    npm run dev

    将显示:

    ➜  Local:   http://localhost:5173/➜  Network: use --host to expose➜  press h   enter to show help    

    使用 CTRL 键单击本地 URL 以启动浏览器。
    您将看到页面中呈现了 PDF Viewer。

  • 文档

    现场演示

    链接:

    ","image":"http://www.luping.net/uploads/20241103/173063845667277278053a5.jpg","datePublished":"2024-11-08T08:36:37+08:00","dateModified":"2024-11-08T08:36:37+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
    ”工欲善其事,必先利其器。“—孔子《论语.录灵公》
    首页 > 编程 > 如何自定义 PDF.js

    如何自定义 PDF.js

    发布于2024-11-08
    浏览:132

    How to customize PDF.js

    PDF.js 是一个很棒的开源项目,它经常更新并且不断添加新功能,但是从外观上看它很丑陋,或者可以说它看起来已经过时了。从 PDF.js 获取最新的 PDF 功能和修复,但在演示方面拥有流畅的外观怎么样?

    PdfJsKit 的 pdf 查看器并不引人注目,它不会直接更改 PDF.js 的代码,它只是在 iframe 中包含 PDF.js,并在运行时覆盖 HTML、JS 和 CSS,以提供光滑的现代外观和更好的 ui结构和可用性以及新功能。这样我们就可以轻松地将 PDF.js 更新到最新版本并获得所有错误修复和改进。

    其他基于 PDF.js 的 pdf 查看器通常不会更新默认外观,而那些通常会由于分离成组件但部分实现它们或提供不良/部分 API 而错过功能。

    入门

    将软件包安装到您的项目中:

    npm install pdfjskit
    

    当安装包(或版本更新)时,PdfJsKit使用的资源(css、图像等)将自动从node_modules\pdfjskit\dist\pdfjskit复制到public\pdfjskit。您项目的 public 子目录是 Web 资源的常见位置,但如果您的 JS 框架具有不同的目录结构,您可以将资源移动到其他位置。

    默认情况下,PdfJsKit 从相对于主机页面的 pdfjskit 子目录加载资源,但您可以通过将自定义libraryPath 选项传递给 PdfViewer 构造函数来更改此路径。

    用法

    import PdfViewer from "pdfjskit";
    
    var pdfViewer = new PdfViewer({
      documentUrl: "pdfjskit/sample.pdf",
      width: "80%",
      height: 720,
      resizable: true,
      language: "en-US",
      theme: "slate, classic-dark"
    });
    
    pdfViewer.render(document.getElementById("container"));
    

    请注意,NPM 包包含 ES6 模块 pdfjskit.min.mjs,GitHub dist/pdfjskit 目录和此处提供的开发人员包中还提供了脚本版本 pdfjskit.min.js。

    在带有 Vite 的纯 JS 项目中使用 PdfJsKit

    您可以将任何 JS 框架(React、Vue、Angular、Svelte、Blazor 等)与 PdfJsKit 一起使用,但是为了简单起见,在这篇文章中,我将展示普通 JS 项目的用法。

    对于普通的JS项目,我推荐使用Vite,这样你就可以轻松地从HTML文件中的模块导入:

    1. 创建Vite项目模板:

      npm create vite@latest
      

      选择设置:

      ✔ Project name: … pdfjskit-vite-example
      ✔ Select a framework: › Vanilla
      ✔ Select a variant: › JavaScript
      
    2. 将创建一个以您的项目名称命名的子目录,请执行以下操作:

      cd pdfjskit-vite-example
      npm install
      npm install pdfjskit
      
    3. 编辑index.html并将内容替换为:

      
        
          PdfJsKit Vite Example
    4. 现在您可以运行开发 Web 服务器了:

      npm run dev
      

      将显示:

      ➜  Local:   http://localhost:5173/
      ➜  Network: use --host to expose
      ➜  press h   enter to show help    
      

      使用 CTRL 键单击本地 URL 以启动浏览器。
      您将看到页面中呈现了 PDF Viewer。

    文档

    • Html API 文档
    • Markdown API 文档
    • 知识库

    现场演示

    • 模块捆绑测试
    • 脚本包测试

    链接:

    • GitHub
    • NPM
    版本声明 本文转载于:https://dev.to/gleamtech/how-to-customize-pdfjs-3po7?1如有侵犯,请联系[email protected]删除
    最新教程 更多>
    • (SQL 查询)Express.js 中的缓存与索引
      (SQL 查询)Express.js 中的缓存与索引
      开发者您好,这是我在这个平台上的第一篇文章! ? 我想分享我在 Express.js 和 SQL 方面的令人惊讶的体验。我是一名初学者开发人员,在为我的项目开发 API 时,我每天处理超过 20 万个 API 请求。最初,我使用 Express.js API 设置了一个 SQLite 数据库(约 4...
      编程 发布于2024-11-08
    • 以下是一些适合您文章内容的基于问题的标题:

* 如何为 Spring Boot 应用程序配置上下文路径?
* 如何使用自定义 Con 访问我的 Spring Boot 应用程序
      以下是一些适合您文章内容的基于问题的标题: * 如何为 Spring Boot 应用程序配置上下文路径? * 如何使用自定义 Con 访问我的 Spring Boot 应用程序
      如何向 Spring Boot 应用程序添加上下文路径Spring Boot 提供了一种简单的方法来设置应用程序的上下文根,允许它通过 localhost:port/{app_name} 访问。操作方法如下:使用应用程序属性:在 src/main/resources 目录中创建一个 applicat...
      编程 发布于2024-11-08
    • 代码日数:高级循环
      代码日数:高级循环
      2024 年 8 月 30 日星期五 我目前正在学习 Codecademy 全栈工程师路径的第二门课程。我最近完成了 JavaScript 语法 I 课程,并完成了 JavaScript 语法 II 中的数组和循环作业。接下来是对象、迭代器、错误和调试、练习和三个挑战项目。 今天的主要亮点是学习对我...
      编程 发布于2024-11-08
    • Angular Addicts # Angular 隐式库,未来是独立的等等
      Angular Addicts # Angular 隐式库,未来是独立的等等
      ?嘿,Angular Addict 伙伴 这是 Angular Addicts Newsletter 的第 29 期,这是一本每月精选的引起我注意的 Angular 资源合集。 (这里是第28期、27期、26期) ?发布公告 ? Angular 18...
      编程 发布于2024-11-08
    • 如何在 Java HashMap 中将多个值映射到单个键?
      如何在 Java HashMap 中将多个值映射到单个键?
      HashMap 中将多个值映射到单个键在 Java 的 HashMap 中,每个键都与单个值关联。但是,在某些情况下,您可能需要将多个值映射到单个键。以下是实现此目的的方法:多值映射方法:最简单、最直接的方法是使用列表映射。这涉及创建一个 HashMap,其中的值是包含多个值的 ArrayList。...
      编程 发布于2024-11-08
    • 如何使用 PHP 高效地检查文件中的字符串?
      如何使用 PHP 高效地检查文件中的字符串?
      如何在 PHP 中检查文件是否包含字符串要确定文件中是否存在特定字符串,让我们探索一下解决方案和更有效的替代方案。原始代码:提供的代码尝试检查通过逐行读取文件来判断文件中是否存在由变量 $id 表示的字符串。但是,while 循环中的条件 (strpos($buffer, $id) === fals...
      编程 发布于2024-11-08
    • 小型 Swoole 实体管理器
      小型 Swoole 实体管理器
      我很高兴向大家介绍 Small Swoole Entity Manager。 它是一个围绕 Swoole(和 OpenSwoole)构建的 ORM。 它支持异步连接到: MySQL Postgres Small Swoole Db(Swoole Tables 之上的关系层) 目前仅提供核心包; S...
      编程 发布于2024-11-08
    • WebCodec - 发送和接收
      WebCodec - 发送和接收
      介绍 你好! ? 在本教程中,我将向您展示如何使用 WebCodec API 发送和接收视频。 首先让我们对服务器进行编码。 设置服务器 为了在对等点之间发送和接收数据包,我们需要一个 websocket 服务器。 为此,我们将使用 Nodejs 创建一个非常基...
      编程 发布于2024-11-08
    • 为什么 PHP ftp_put() 失败:分析和解决问题
      为什么 PHP ftp_put() 失败:分析和解决问题
      PHP ftp_put 失败:分析问题并解决它传输时 ftp_put() 无法正常运行可能是一个令人沮丧的问题通过 FTP 传输文件。在 PHP 中,此问题的常见原因在于默认使用主动模式。主动与被动模式传输主动模式指示 FTP 服务器连接到指定端口上的客户端。另一方面,被动模式让服务器侦听随机端口,...
      编程 发布于2024-11-08
    • 如何从字符串中删除非数字字符,同时保留 Java 中的小数分隔符?
      如何从字符串中删除非数字字符,同时保留 Java 中的小数分隔符?
      在删除 Java 字符串中的非数字字符时保留小数分隔符使用 Java 字符串时,可能会出现您需要的情况删除所有非数字字符,同时保留小数点分隔符。使用正则表达式和replaceAll()方法可以有效地实现这一点。为了解决这个问题,我们可以使用以下代码片段:String str = "a12....
      编程 发布于2024-11-08
    • 如何重新排列 MySQL 中的列以提高数据可视性和查询效率?
      如何重新排列 MySQL 中的列以提高数据可视性和查询效率?
      有效地重新排列 MySQL 列以增强可见性当列没有最佳排序时,查询大型数据库可能会很麻烦。本文提供了一个全面的解决方案,可以轻松地重新排列现有列,优化表的可见性而不影响其数据完整性。要修改列的位置,请使用“ALTER TABLE”命令,后跟“MODIFY”子句。此语法允许您通过在指定的引用列之后指定...
      编程 发布于2024-11-08
    • 如何正确使用 getElementsByClassName 并根据事件更改元素样式?
      如何正确使用 getElementsByClassName 并根据事件更改元素样式?
      使用 getElementsByClassName 更改元素样式getElementsByClassName 允许您选择具有相同类名的多个元素。在给出的示例中,代码旨在当事件发生在具有特定类名的所有 div 之外时更改这些 div 的背景颜色。问题诊断The提供的代码有一些问题: getElemen...
      编程 发布于2024-11-08
    • 为什么我的画布图像无法绘制?异步图像加载的重要性。
      为什么我的画布图像无法绘制?异步图像加载的重要性。
      绘图前等待图像加载尝试将图像添加到画布时,确保图像在绘制之前加载至关重要试图画它。您在代码中遇到的问题是由于图像加载的异步性质造成的。要解决此问题,您需要向图像的 onload 事件添加回调函数。该回调函数将在图像加载完成时执行,确保在尝试绘制图像之前图像数据可用。下面更正的代码将等待图像加载,然后...
      编程 发布于2024-11-08
    • Golang 中的 LeetCode:解析布尔表达式
      Golang 中的 LeetCode:解析布尔表达式
      这是我喜欢解决的 LeetCode 问题之一。我用 Golang 解决了这个问题,而且我已经是一个 Go 新手了,刚开始学习一周。 直觉 这个问题是实现计算器程序的另一个版本,该程序接受一个字符串并对其进行计算。您必须通过评估内部括号和外部括号来解决问题,直到得到最终结果。这些问题...
      编程 发布于2024-11-08
    • 预防 XSS 攻击的方法:综合指南
      预防 XSS 攻击的方法:综合指南
      1.什么是XSS? XSS(即跨站脚本)是 Web 应用程序中发现的一种安全漏洞。它允许攻击者将恶意脚本(通常是 JavaScript)注入到其他用户查看的网页中。这可能会导致未经授权的操作、数据盗窃或会话劫持。 1.1. XSS 攻击的类型 XSS攻击一般分为三...
      编程 发布于2024-11-08

    免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

    Copyright© 2022 湘ICP备2022001581号-3