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

news2024/11/24 15:01:25

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.coloradmin.cn/o/876797.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IC人必看| 模拟IC方向面试常考问题及答案汇总(二)

有不少小伙伴说还想要更多模拟IC方向的面试题目,这不就来了!(文末可领全部面试题目) 1. Bandgap 里有几种反馈?原理是? 正反馈和负反馈。 2. 负反馈种类?负反馈的优点? 种类&am…

mqttfx连上OneNET生成token时的一大坑,报用户名或密码错误

整个流程如下连接: MQTT.fx和MQTTX 链接ONENET物联网开发平台避坑细节干货。 其中在生成token时,搞了半天在连接后都会报用户名密码错误 最后发现是格式问题,输入所有字符后一定要双击看是否可以全选中,可以全选中说明字符的格式…

【boost网络库从青铜到王者】第二篇:asio网络编程中的socket的监听和连接

文章目录 1、网络编程基本流程2、终端节点endpoint的创建2.1、客户端终端节点endpoint的创建2.2、服务器终端节点endpoint的创建 3、服务器与客户端通信套接字socket的创建4、服务器监听套接字socket的创建5、绑定accpet监听套接字6、客户端连接指定的端点7、服务器接收连接8、…

H5 和小程序的区别

什么是小程序? 从“微信之父” 张小龙的定义里,我们可以了解到,小程序其实就是内嵌在微信,不需要安装和卸载的一种新应用形态。它具备的两个强属性:提高效率,用完即走!因此小程序的设计以轻便、…

vue element 多图片组合预览

定义组件&#xff1a;preview-image <template><div><div class"imgbox"><divclass"preview-img":class"boxClass"v-if"Imageslist 3 ||Imageslist 5 ||Imageslist 7 ||Imageslist 8 ||Imageslist > 9"&…

SQLyog中导入CSV文件入库到MySQL中

1.在数据库中新建一个表&#xff0c;设置列名&#xff08;与待导入文件一致&#xff09;&#xff0c;字段可以多出几个都可以 2.右键表名&#xff0c;导入- - >导入使用本地加载的CSV数据 选择使用加载本地CVS数据 3.指定好转义字符&#xff0c;将终止设置为,号(英文状态下…

微型导轨在包棉机中的作用

随着工业革命的开展&#xff0c;各种人工智能设备的迅猛发展&#xff0c;为了适应高速发展的工业自动化&#xff0c;越来越多的工业企业开始采用微型导轨&#xff0c;尤其是在包棉机中的应用。 包棉机是一种用于加工棉花的机械设备&#xff0c;它的主要功能是将原始棉花经过清洁…

zabbix监控tomcat

一、zabbix监控Tomcat1.1 zbx-agent配置1.1.1 关闭防火墙&#xff0c;将安装 Tomcat 所需软件包传到/opt目录下1.1.2 安装JDK1.1.3 设置JDK环境变量1.1.4 安装启动Tomcat1.1.5 配置 JMX 1.2 zbx-server配置1.2.1 安装zabbix&#xff08;省略&#xff0c;可看上一篇博客&#xf…

【校招VIP】前端JS语言考点之px rem等单位

考点介绍&#xff1a; rem vm等问题是前端面试里的高频题型。但是不少同学并不能很清楚的说明为什么在有px单位之后&#xff0c;还需要rem单位&#xff1f;往往会往不对的自适应方向回答。 作为基础性问题&#xff0c;只要回答不出来&#xff0c;面试就通过不了&#xff0c;需要…

在vue中使用swiper轮播图(搭配watch和$nextTick())

在组件中使用轮播图展示图片信息&#xff1a; 1.下载swiper,5版本为稳定版本 cnpm install swiper5 2.在组件中引入swiper包和对应样式&#xff0c;若多组件使用swiper&#xff0c;可以把swiper引入到main.js入口文件中&#xff1a; import swiper/css/swiper.css //引入swipe…

树莓派3B CSI摄像头配置

1.硬件连接 1、找到 CSI 接口(树莓派3B的CSI接口在HDMI接口和音频口中间)&#xff0c;需要拉起 CSI 接口挡板,如下&#xff1a; 2、将摄像头排线插入CSI接口。记住&#xff0c;有蓝色胶带的一面应该面向音频口或者网卡方向&#xff0c; 确认方向并插紧排线&#xff0c;将挡板…

基于Spring Boot的高校图书馆管理系统的设计与实现(Java+spring boot+MySQL)

获取源码或者论文请私信博主 演示视频&#xff1a; 基于Spring Boot的高校图书馆管理系统的设计与实现&#xff08;Javaspring bootMySQL&#xff09; 使用技术&#xff1a; 前端&#xff1a;html css javascript jQuery ajax thymeleaf 微信小程序 后端&#xff1a;Java sp…

springBoot 集中配置管理

springBoot 集中配置管理 项目配置如果上线项目&#xff0c;运维或者开发者可以直接和jar包同目录下创建文件&#xff0c;然后更改属性 项目配置 创建文件&#xff0c;调整配置如果上线项目&#xff0c;运维或者开发者可以直接和jar包同目录下创建文件&#xff0c;然后更改 属…

海格里斯HEGERLS四向穿梭车仓储解决方案在电子商务行业中的应用

随着现代物流&#xff0c;尤其是智能化物流的飞速发展&#xff0c;河北沃克金属制品有限公司看到了智能物流领域背后的巨大价值和市场空间&#xff0c;深知物流与供应链对企业发展的重要性。于是&#xff0c;引进了先进的高科技智能技术—HEGERLS四向穿梭车技术&#xff0c;并迅…

echarts-convert.js使用

echarts-convert.js demo 点击下载 1、本地安装phantom.js插件 点击下载 2、更改文件路径 &#xff08;D:\phantomjs-2.1.1-windows\bin&#xff09;改为本地项目文件路径 3、打开cmd命令行&#xff0c;并格式化语言 运行以下命令 将命令行语言改为中文简体 chcp 65001…

超详细,自动化测试实战-获取配置文件信息(实例源码)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 配置文件的类型 …

03.Show and Tell

目录 前言泛读摘要IntroductionRelated Work小结 精读模型基于LSTM的句子生成器TrainingInference 实验评价标准数据集训练细节分数结果生成结果多样性讨论排名结果人工评价结果表征分析 结论 代码 前言 本课程来自深度之眼《多模态》训练营&#xff0c;部分截图来自课程视频。…

新题速看!2023阿里、腾讯、字节都在问的SQL数据库笔试题及答案都给你整理好啦!

♥ 前 言 2021到了最后一个月份&#xff0c;年后肯定有蛮多小伙伴需要跳槽换工作&#xff0c;但对于年限稍短的软件测试工程师&#xff0c;难免会需要进行笔试&#xff0c;而在笔试中&#xff0c;基本都会碰到一道关于数据库的大题&#xff0c;今天这篇文章呢&#xff0c;就…

保存位置不同,多个文件如何统一命名并给文件编号

在日常工作中&#xff0c;我们会经常碰到文件或文件夹需要整理归类下&#xff0c;或文件&#xff08;夹&#xff09;需要统一名称再编号下再保存&#xff0c;也方便日后用到文件时可以快速找到文件。大家有没有碰到文件多个&#xff0c;但是文件的保存位置不一样&#xff0c;并…

聚观早报 | 近2亿“救命款”每日优鲜不卖菜了;小鹏G6难过交付关

【聚观365】8月14日消息 近2亿元“救命款”每日优鲜不卖菜了 小鹏爆款G6难过交付关 AIGC在数字营销领域应用程度 iPhone SE 4设计基于iPhone 14 Modulal寻求A轮融资挑战英伟达 近2亿元“救命款”每日优鲜不卖菜了 从一家基于前置仓模式的蔬菜水果等本地生活服务商&#x…