整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

基于HTML5 构建的 Web端现代化PDF在线预览插件-PDF.js

PDF文件现在在许多企业中常用 - 无论您是要生成销售报告,交付合同还是发送发票,PDF都是首选的文件类型。PDF.js是由Mozilla编写的JavaScript库。由于它使用vanilla JavaScript实现PDF渲染,因此它具有跨浏览器兼容性,并且不需要安装其他插件。在使用PDFJS之前你也可以先了解下原生的PDF<object>对象,本文仅介绍PDFJS。

官网地址

https://mozilla.github.io/pdf.js/

下载和安装

官网提供了下载入口,有稳定版和Beta版,我们要在生产环境下使用建议使用稳定版,官网给我们提供了三种获取PDF.js的方式

使用说明

我们可以直接使用cdn服务,也可以将下载的文件引入,我们看一下示例代码,这里我提供了两种写法,在项目运行之前,请确保你的同级目录下有一个test.pdf文件

//index.html
<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <script src="https://cdn.jsdelivr.net/npm/pdfjs-dist@2.0.943/build/pdf.min.js"></script>
 <script src='./index.js'></script>
 <title>PDF</title>
</head>
<body>
 <canvas id="pdf"></canvas>
</body>
</html>
//index.js
// var loadingTask = pdfjsLib.getDocument("test.pdf");
// loadingTask.promise.then(
// function(pdf) {
// // 加载第一页
// pdf.getPage(1).then(function(page) {
// var scale = 1;
// var viewport = page.getViewport(scale);
// //应用到页面的canvas上.
// var canvas = document.getElementById("pdf");
// var context = canvas.getContext("2d");
// canvas.height = viewport.height;
// canvas.width = viewport.width;
// // 渲染canvas.
// var renderContext = {
// canvasContext: context,
// viewport: viewport
// };
// page.render(renderContext).then(function() {
// console.log("Page rendered!");
// });
// });
// },
// function(reason) {
// console.error(reason);
// }
// );
// index.js
(async () => {
 const loadingTask = pdfjsLib.getDocument("test.pdf");
 const pdf = await loadingTask.promise;
 // 加载第一页.
 const page = await pdf.getPage(1);
 const scale = 1;
 const viewport = page.getViewport(scale);
 // 应用到页面的canvas上.
 const canvas = document.getElementById("pdf");
 const context = canvas.getContext("2d");
 canvas.height = viewport.height;
 canvas.width = viewport.width;
 // 渲染canvas.
 const renderContext = {
 canvasContext: context,
 viewport: viewport
 };
 await page.render(renderContext);
})();

当我们运行项目之后,打开浏览器查看,它已经将pdf的内容渲染到了浏览器中,且显示了第一页,如下图所示:

如果就这样的话远远是无法满足我们使用的,因此我们来看一下它比较高级的用法,或者说简单的用法,高级的功能。

使用iframe

首先我们将我们下载的js包加压,复制里面的web文件夹,粘贴到你的项目目录

然后修改你的index.html代码,首先注释掉之前引入的js代码,然后修改body,如下

<body>
 <iframe src="test.pdf" style="border: none;" width="100%" height='1000px'></iframe>
</body>

随后打开我们的浏览器,你会发现一个预览的窗口

它继承了我们常用的功能,比如旋转、下载、打印、自适应缩放、放大、缩小等,我们只需要使用iframe引入我们的pdf文件即可,其余的全部交给pdf来完成,即可获得一个实现一个完整的pdf预览功能。

PDF.js三个不同层

  • 核心 - PDF的二进制格式在此层中进行解释。直接使用该层被认为是高级用法。
  • 显示 - 该层构建在核心层之上,为大多数日常工作提供易于使用的界面。
  • Viewer - 除了提供编程API之外,PDF.js还附带一个现成的用户界面,其中包括对搜索,旋转,缩略图侧边栏和许多其他内容的支持。

PDFJS的这三层分开,让我们很好的来根据业务需求来实现我们想要的部分,其简单的api让我们得心应手,总而言之,PDFJS是一个绝佳的PDF预览解决方案。

总结

PDFJS不仅仅支持pdf的二进制文件,同样还支持base64编码的pdf,如果在你的项目中需要用到pdf的预览等功能,无疑它是一种良好的解决方案,当然想要实现相同的功能有许多办法,我们可以选择最适合我们需求的,官方还提供了一个完整的演示Demo,如下截图,如果你觉得本文对你有帮助,请麻烦转发、点赞加关注吧,后续会分享更多实用有趣的技术!

VSCode中,有许多与HTML相关的插件可以大大提高开发效率和便利性。以下是一些值得推荐的插件,它们各自具有独特的功能和优点,可以帮助您更好地编写、调试和预览HTML代码。

1. HTML Snippets: 这个插件提供了许多HTML代码片段,可以帮助您快速编写常见的HTML结构和元素。只需输入简短的缩写,即可自动生成相应的HTML代码,大大提高了编写速度。

2. Emmet: Emmet是一个强大的代码生成器,支持多种编程语言,包括HTML。通过简单的缩写和语法,您可以快速生成复杂的HTML结构和嵌套元素。Emmet还提供了许多自定义选项,可以根据您的需求进行灵活配置。

3. HTML Boilerplate: 这个插件提供了一个HTML模板,包含了常见的HTML结构和元素,如文档类型声明、字符编码、头部信息等。使用这个插件,您可以快速创建一个基本的HTML框架,然后在此基础上进行进一步的开发。

4. HTML Preview: HTML Preview插件可以在VSCode中实时预览HTML代码的效果。您只需在编辑器中打开HTML文件,然后点击预览按钮,即可在侧边栏中查看HTML页面的渲染效果。这对于调试和预览HTML代码非常方便。

5. Color Highlight: Color Highlight插件可以自动识别HTML代码中的颜色值,并在编辑器中高亮显示。这使得您更容易发现和修改颜色值,提高了代码的可读性和可维护性。

6. HTML Boilerplate Generator: 这个插件可以帮助您快速生成HTML5的Boilerplate代码,包括常用的meta标签、字符编码、视口设置等。它还提供了一些自定义选项,可以根据您的需求生成符合规范的HTML代码。

7. HTML CSS Support: 这个插件提供了对HTML和CSS的完整支持,包括语法高亮、代码片段、代码折叠等功能。它还支持自动完成和错误检查,可以帮助您更高效地编写HTML和CSS代码。

8. HTML/CSS/JS Prettify: 这个插件可以对HTML、CSS和JavaScript代码进行格式化,使其更加整洁和易读。您可以自定义格式化规则,也可以使用默认的规则进行快速格式化。这对于保持代码风格一致和提高代码可读性非常有帮助。

9. HTML Validator: HTML Validator插件可以对HTML代码进行验证,检查其是否符合W3C规范。它可以检测出潜在的错误和不符合规范的地方,并给出相应的提示和建议。这对于编写符合标准的HTML代码非常有帮助。

10. Live Server: Live Server插件可以在本地启动一个实时服务器,让您在浏览器中实时预览HTML、CSS和JavaScript代码的效果。它支持自动刷新和热更新,可以实时反映代码的变化。这对于前端开发和调试非常方便。

以上是一些值得推荐的VSCode中与HTML相关的插件。它们各自具有独特的功能和优点,可以帮助您提高开发效率和便利性。当然,具体选择哪些插件还需要根据您的实际需求和喜好来决定。希望这些推荐能对您有所帮助!


Viewer.js 是一款强大的图片预览查看器,之前在做项目的时候遇到的是无法给网页中的图片添加一个强大的预览功能,而Viewer.js刚好满足了我的需求。本文就简单的介绍一下这样一个神奇的图片预览插件:






Github

//原生版本
https://github.com/fengyuanchen/viewerjs 
//jquery版本
https://github.com/fengyuanchen/jquery-viewer


功能特性

  • 支持移动设备触摸事件
  • 支持响应式
  • 支持放大/缩小
  • 支持旋转(类似微博的图片旋转)
  • 支持水平/垂直翻转
  • 支持图片移动
  • 支持键盘
  • 支持全屏幻灯片模式(可做屏保)
  • 支持缩略图
  • 支持标题显示
  • 支持多种自定义事件

从功能来看,这是一款功能强大的图片预览插件,对于基本的需求大多数都可以满足,而且自带原生版本和jquery版本,方便使用!

如何使用?

  • 安装

现在大多数情况直接使用npm进行安装,当然也可以下载发不好的js文件进行使用

npm install viewerjs



<link  href="/path/to/viewer.css" rel="stylesheet">
<script src="/path/to/viewer.js"></script>
  • 用法
new Viewer(element[, options])

最简单的示例

  • HTML
<div>
  <img id="image" src="picture.jpg" alt="Picture">
</div>

<div>
  <ul id="images">
    <li><img src="picture-1.jpg" alt="Picture 1"></li>
    <li><img src="picture-2.jpg" alt="Picture 2"></li>
    <li><img src="picture-3.jpg" alt="Picture 3"></li>
  </ul>
</div>
  • Javascript

// import 'viewerjs/dist/viewer.css';
import Viewer from 'viewerjs';

// View an image
const viewer = new Viewer(document.getElementById('image'), {
  inline: true,
  viewed() {
    viewer.zoomTo(1);
  },
});

// View a list of images
const gallery = new Viewer(document.getElementById('images'));

提供的配置

由于排版原因,这里直接放截图,或者大家可以到Github上查看详细的配置



其他推荐

Viewerjs的作者不仅仅是这样一个作品,他还有一个另外的图片类作品,Web端的图片裁剪插件,同样推荐给大家:

https://github.com/fengyuanchen/cropperjs




总结

不得不感谢这样的优秀作品的作者提供了如此优雅的工具,几行代码就可以实现强悍的图片预览功能,如果有类似需求的朋友千万不要错过!