【PDF.js】PDF.js的简单使用与CDN加速遇到的问题

PDF.js的简单使用与CDN加速遇到的问题

    • 一、PDF.js是什么?
    • 二、PDF.js
    • 三、 选择PDF.js的版本下载
      • 1. Prebuilt (现代浏览器) *作者选择
      • 2. Prebuilt (历史淘汰浏览器)
      • 3. Source 来源
      • 4. 通过CDN加速
      • 5. 文件树
        • Prebuilt
        • Source
      • 6. 尝试查看器
    • 四、选择文档(不是使用默认文件名)
    • 五、网页标题不显示文件的名称
    • 六、视图
    • 六、加速pdf打开加载速度
    • 七、阿里云CDN加速所遇到的问题

一、PDF.js是什么?

PDF.JS是一个用于在Web浏览器中显示PDF文件的JavaScript库。它不需要依赖任何插件或外部程序,可以直接在浏览器中渲染和显示PDF文件。PDF.JS提供了一组JavaScript API,开发者可以使用这些API来进行自定义开发,如显示、搜索和打印PDF文件等。通过使用PDF.JS,开发者可以在Web应用程序中无缝地集成PDF文件的显示和操作功能。

二、PDF.js

PDF.js文档

PDF.JS GitHub仓库

三、 选择PDF.js的版本下载

1. Prebuilt (现代浏览器) *作者选择

包括PDFjs和查看器的通用构建

预建(V3.9.179)

2. Prebuilt (历史淘汰浏览器)

包括PDFjs和查看器的通用构建

预建(V3.9.179)

3. Source 来源

要获取当前代码的本地副本,请使用git进行克隆:
$ git clone https://github.com/mozilla/pdf.js.git
$ cd pdf.js

4. 通过CDN加速

以下是托管网站,也可以把环境自己cdn
  • https://www.jsdelivr.com/package/npm/pdfjs-dist
  • https://cdnjs.com/libraries/pdf.js
  • https://unpkg.com/pdfjs-dist/

5. 文件树

Prebuilt

├── build/
│   ├── pdf.js                             - display layer
│   ├── pdf.js.map                         - display layer's source map
│   ├── pdf.worker.js                      - core layer
│   └── pdf.worker.js.map                  - core layer's source map
├── web/
│   ├── cmaps/                             - character maps (required by core)
│   ├── compressed.tracemonkey-pldi-09.pdf - PDF file for testing purposes
│   ├── debugger.js                        - helpful debugging features
│   ├── images/                            - images for the viewer and annotation icons
│   ├── locale/                            - translation files
│   ├── viewer.css                         - viewer style sheet
│   ├── viewer.html                        - viewer layout
│   ├── viewer.js                          - viewer layer
│   └── viewer.js.map                      - viewer layer's source map
└── LICENSE

Source

├── docs/                                  - website source code
├── examples/                              - simple usage examples
├── extensions/                            - browser extension source code
├── external/                              - third party code
├── l10n/                                  - translation files
├── src/
│   ├── core/                              - core layer
│   ├── display/                           - display layer
│   ├── shared/                            - shared code between the core and display layers
│   ├── interfaces.js                      - interface definitions for the core/display layers
│   └── pdf.*.js                           - wrapper files for bundling
├── test/                                  - unit, font, reference, and integration tests
├── web/                                   - viewer layer
├── LICENSE
├── README.md
├── gulpfile.js                            - build scripts/logic
├── package-lock.json                      - pinned dependency versions
└── package.json                           - package definition and dependencies

6. 尝试查看器

对于预建版本或源版本,在浏览器中打开 web/viewer.html 并加载测试 PDF。注意:worker 没有为 file://urls 启用,所以使用服务器。如果你正在使用源代码构建并拥有节点,那么你可以运行 gulp server

四、选择文档(不是使用默认文件名)

构建的代码示例一般都放了一个文档compressed.tracemonkey-pldi-09.pdf

请添加图片描述

你如果想用很简单的方法就把你要使用的文档改成这个名字

如果你是api、或者渲染就改成相关的名称

五、网页标题不显示文件的名称

找到viewer.js文档下面的691行

在这里插入图片描述

六、视图

每个PDE页面都有自己的视口,它定义了像素大小(72DP 1)和初始转。默认情况下,视口缩放为PDE的原始大小,但可以通过修改视口来更改。当视口被创建时,一个初始
变换矩阵也将被创建,它考虑到所需的缩放,旋转,并转换坐标系(PDF文档中的0.0点位于左下角,而画布0,0位于左上角)。

var scale = 1.5;
var viewport = page.getViewport({ scale: scale, });
// Support HiDPI-screens.
var outputScale = window.devicePixelRatio || 1;var canvas = document.getElementById('the-canvas');
var context = canvas.getContext('2d');canvas.width = Math.floor(viewport.width * outputScale);
canvas.height = Math.floor(viewport.height * outputScale);
canvas.style.width = Math.floor(viewport.width) + "px";
canvas.style.height =  Math.floor(viewport.height) + "px";var transform = outputScale !== 1? [outputScale, 0, 0, outputScale, 0, 0]: null;var renderContext = {canvasContext: context,transform: transform,viewport: viewport
};
page.render(renderContext);

或者,如果希望画布渲染到某个像素大小,可以执行以下操作。

var desiredWidth = 100;
var viewport = page.getViewport({ scale: 1, });
var scale = desiredWidth / viewport.width;
var scaledViewport = page.getViewport({ scale: scale, });

六、加速pdf打开加载速度

1.优化你的pdf文件。如果你有权限编辑pdf文件,可以尝试将文件进行压缩或优化,这样可以减小文件的大小,从而提高打开速度。
2.用更快的网络连接。如果你是通过网络打开pdf文件,尝试使用更快的网络连接,如使用有线网络代替无线网络,或者使用更快的互联网服务提供商。
3.添加服务器的带宽
4.把build文件夹和web中的viewer.js使用阿里云cdn进行加速。

七、阿里云CDN加速所遇到的问题

在我使用的时候造成了文档打开白屏只显示边框,不显示文章。导致这种原因是因为cdn加速的头部没有设置

  1. 打开cdn控制台 CDN云产品

    在这里插入图片描述

  2. 开通CDN

    在这里插入图片描述

  3. 开通进入控制台

    在这里插入图片描述

  4. 添加域名

  5. 选择加速区域

    在这里插入图片描述

  6. DNS解析验证

    在这里插入图片描述

在这里插入图片描述

  1. 选择业务类型

    在这里插入图片描述

  2. 添加源站信息

    在这里插入图片描述

  3. 默认配置

    在这里插入图片描述

  4. 配置CNAME

    在这里插入图片描述

  5. 选择预热

    在这里插入图片描述

  6. 访问域名

    在这里插入图片描述

    全部速度有大的提升

    在这里插入图片描述

  7. 注意事项:

    1. 购买资源包会省钱 地址:CDN资源包

      在这里插入图片描述

    2. 添加标头,不然会爆跨域错误

      在这里插入图片描述


知识共享许可协议

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/89594.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue 引入 Element-UI 组件库

Element-UI 官网地址:https://element.eleme.cn/#/zh-CN 完整引入:会将全部组件打包到项目中,导致项目过大,首次加载时间过长。 下载 Element-UI 一、打开项目,安装 Element-UI 组件库。 使用命令: npm …

SpringBoot禁用Swagger3

Swagger3默认是启用的&#xff0c;即引入包就启用。 <dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version> </dependency> <dependency><groupId…

MySQL——Mysql安装教程- Windows

一、Mysql安装 1、下载mysql安装包 下载链接&#xff1a; 链接&#xff1a; https://pan.baidu.com/s/1rFpMqOCApiQQEwYSs9XSmg https://pan.baidu.com/s/1rFpMqOCApiQQEwYSs9XSmg 提取码&#xff1a;zt88 2、 安装 1&#xff09;选择电脑磁盘空闲的路径&#xff1a; 2&…

MongoDB:Unrecognized option: storage

MongoDB一直显示 Unrecognized option: storage try ‘mongod --help’ for more information 意思是我们配置的config文件出了问题。 说明&#xff1a;MongoDB采用的是YAML格式&#xff0c;所以我们只需要稍微改改就好。 在storage前面&#xff1a;没有空格 下面两行最前面…

【有奖体验】COS插件体验,四重好礼等你拿!

对象存储 COS 为降低用户接入门槛&#xff0c;集成了多款 COS 插件&#xff0c;开放供用户使用&#xff0c;包含搭建网站、图床、论坛等多个热门业务场景的插件&#xff0c;让使用更便捷&#xff01;对象存储 COS 准备了多重好礼&#xff0c;欢迎广大同学们踊跃体验 COS 插件&a…

Qt 多线程、信号和槽连接方式推荐connect(Sender,Singnal,Receiver,Slot,ConnectMode);如下图所示

connect&#xff08;主线程A&#xff0c;信号A,子线程B,槽函数B,DirectConnection /AutoConnection ); connect&#xff08;子线B,信号B,主线程A,槽函数A,QueueConnection );

【视频】使用OBS将MP4推流至腾讯云直播

1、下载OBS OBS官网:https://obsproject.com/ OBS支持Win、Mac、Linux,如果下载速度很慢,建议使用迅雷下载 2、OBS推流设置 2.1 添加场景 默认会有一个“场景”,如果想继续添加可以点击“+”按钮 2.2 添加媒体源 1)点击“来源”窗口中“+”按钮 2)支持的媒体源如…

前端架构师的能力要求:打造可靠、灵活和可扩展的Web应用

随着互联网技术迅猛发展&#xff0c;现代Web应用程序变得越来越复杂且功能强大。作为一名前端架构师&#xff0c;在这个快节奏且竞争激烈的环境中&#xff0c;你需要具备广泛而深入地技术知识&#xff0c;并且有能力设计、开发和维护高度可靠、灵活和可扩展性强的Web应用。 深入…

Linux常规操作命令

日升时奋斗&#xff0c;日落时自省 目录 1、vim 1.1、工作模式 1.2、末行模式操作相关命令 1.2.1、保存退出操作 1.2.2、查找替换 1.3、输入模式操作相关命令 1.3.1、移动相关命令 1.3.2、删除和剪切命令 1.3.3、复制操作 1.3.4、撤销 2、head 3、tail 4、ps 5、…

改进DevSecOps框架的 5 大关键技术

Markets and Markets的一项研究显示&#xff0c;全球DevOps的市场规模从2017年的29亿美元增加到2023年的103.1亿美元&#xff0c;预测期的年复合增长率(CAGR)为24.7%。人们对DevOps越来越感兴趣&#xff0c;因为DevOps不仅能够压缩软件的交付周期&#xff0c;还能提高交付的速度…

基于CentOS 7 配置nginx负载均衡

搭建负载均衡服务的需求如下&#xff1a; 1 ) 把单台计算机无法承受的大规模并发访问或数据流量分担到多台节点设备上&#xff0c;分别进行处理&#xff0c; 减少用户等待响应的时间&#xff0c; 提升用户体验。 2 ) 单个重负载的运算分担到多台节点设备上做并行处理&#xff…

windows10和linux18.04中配置mmhuman3d

分类&#xff1a;动作捕捉 github地址&#xff1a;https://github.com/open-mmlab/mmhuman3d 所需环境&#xff1a; Windows10&#xff0c;CUDA11.6&#xff0c;conda 4.13.0&#xff0c;Visual Studio 2017&#xff1b; Ubuntu18.04&#xff0c;conda22.9.0&#xff0c;CUDA11…

ChatGPT: 提升程序员开发效率的秘密武器!

引言 在现代软件开发中&#xff0c;时间和效率显得尤为重要。程序员们需要在尽可能短的时间内编写高质量的代码&#xff0c;并使之处于状态良好的维护周期。为满足这些需求&#xff0c;人工智能技术逐渐成为软件开发的一项核心能力。ChatGPT作为自然语言生成模型中的佼佼者&am…

php如何对接伪原创api

在了解伪原创api的各种应用形态之后&#xff0c;我们继续探讨智能写作背后的核心技术。需要说明的是&#xff0c;智能写作和自然语言生成、自然语言理解、知识图谱、多模算法等各类人工智能算法都有紧密的关联&#xff0c;在百度的智能写作实践中&#xff0c;常根据实际需求将多…

tp5中的事务处理

使用事务首先要数据库支持事务&#xff1b; 如下MySQL数据库user表开启事务支持&#xff0c;即设计表->引擎设置为InnoDB->保存 事务处理 1. 数据库的表引擎需要是 InnoDB 才可以使用&#xff0c;如果不是调整即可&#xff1b; 2. 事务处理&#xff0c;需要执行多个 SQ…

稀疏感知图像和体数据恢复的系统对象研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

ARMday2

.text .global _start _start:mov r0,#0x1mov r1,#0x0sum:cmp r0,#0x64bhi stopaddls r1,r1,r0addls r0,r0,#0x1bls sumstop:b stop .end

背上大书包准备面试之CSS篇

目录 H5 新特性 css3新特性&#xff1f; 为什么要初始化css样式&#xff1f; 浏览器兼容性问题&#xff1f; css sprites&#xff08;css精灵图&#xff09;&#xff1f; css盒模型是什么样的&#xff1f; 页面中一个块元素的宽度包含了盒模型中的哪些部分&#xff1f;…

Unity2D RPG开发笔记 P1 - Unity界面基础操作和知识

文章目录 工具选择简单快捷键Game 窗口分辨率检视器Transform 组件Sprite Renderer综合检视器 工具选择 按下 QWERTY 可以选择不同的工具进行 旋转、定位、缩放 简单快捷键 按下 Ctrl D 可以复制物体 Game 窗口分辨率 16:9 为最常见的分辨率 检视器 Transform 组件 物体在…

go内存管理机制

golang内存管理基本是参考tcmalloc来进行的。go内存管理本质上是一个内存池&#xff0c;只不过内部做了很多优化&#xff1a;自动伸缩内存池大小&#xff0c;合理切割内存块。 基本概念&#xff1a; Page&#xff1a;页&#xff0c;一块 8 K大小的内存空间。Go向操作系统申请和…