PDF.Js的使用—javascript中前端显示pdf文件

写于2018/12/6

起因是一个图片展示页面需要展示pdf格式的文件,所以查了半天决定使用pdf.js,我也不求有多了解它,能实现我想要的效果就行,但至少到了最后我让它的demo跑了起来。

网上很多教程要么不全,要么就是很杂很深又不靠谱,因为我不怎么想了解它是用什么框架完成的,怎么make的,我只想要在前端引入js并能展示pdf,所以很多看不下去,但是获得pdf.js之前还是需要进行一些配置,大致的配置过程如下吧。

1、 取得pdf.js文件中的build

<1>从git下载pdf.js

  

git clone git://github.com/mozilla/pdf.js.git

或者直接从https://codeload.github.com/mozilla/pdf.js/zip/master下载

但是:这个文件夹里面是没有build文件夹的(虽然查到一大堆教程开口就是我们可以看到一个文件夹build……),目录如下——但是如果你下载的版本是有build文件的,那就跳过下文,进行2

<2>生成build文件——命令行在pdf.js的根目录下输入:

  gulp server

   gulp generic(需要先安装)

a.安装gulp

  生成build文件需要gulp,我不知道这是什么,但是如果你输入上述两个命令成功了,那就恭喜你获得build文件夹了,如果没有,跟着安装吧

  •   先安装node.js

   https://nodejs.org/en/download/

  使用node –v有输出版本那说明你电脑里已经安装了

  •   再:

    

npm install -g gulp-cli

npm install  gulp

    输入 gulp –v,输出如下就应该可以了

     

  •   最后:

  

  gulp server

  gulp generic

b.遇到过的错误 Task function must be specified

  

如上错误,网上有两种说法:1、cli和local版本不一致即在pdf.js下输入gulp –v得到的两个版本号不一致。2、是gulp4不兼容gulp3,在某些地方的写法在gulp4中是不对的写法。

我的cli和local版本的确不一致(这个后面看网上某些说明好像并没有问题),还有pdf.js可能是gulp3写的,所以我直接将两个版本都变成一致的gulp3。命令

    npm install gulp@3 –g

    npm install --save--dev gulp@3

2、 引用build文件夹中的文件进行前端html和js的构建

<1>网页运行环境

  如果直接双击打开某个demo的html,在console会报错,并提示你只能通过http访问。如果你是大神应该懂了,如果像我那么傻过就看下去。只能通过http访问,即是使得你的访问方式是http://127.0.0.1:端口号/xxx,或者http://localhost:端口号/xxx,当然在那之前你要运行某个服务器,比如说Tomcat、Django、node.js、Vue等等。要用的话了解一下这些吧,我并没有发现更简单的方式。虽然没怎么用过,但是仅用于学习的话,node.js应该是最简单的方式。

由于我之前用的就是Django,那就直接使用了。

<2>pdf.js,viewer.html

  运行gulp后我生成的build如下f图一所示,generic/build之中比较重要的是build文件夹和web文件夹,如图二所示,build文件夹中包含了主要的pdf.js和pdf.worker.js,而web文件夹中包含了viewer.html,是一个比较有用的网页,下文将会提到。在这里,你需要知道的是,无论在example文件中的demo引用的还是你自己网页引用的都是build文件夹(根目录下的那个)中的文件,就我现在而言,其他的文件并没有什么用(除了用于生成build和学习pdf.js—example的使用)。

<3>viewer.html

通过http直接访问到viewer.html,你会得到下图所示的网页——一个完整的,包含大部分操作的网页。(如果其中有引用的js,css出错,根据你使用的框架的特点,看着console改吧)。

而如果你想要展示自己的pdf,则使用

.        …./viewer.html?file=xxx/xxx/xxx.pdf

而你想要直接查看效果,官网有demo,网址如下:

http://mozilla.github.io/pdf.js/web/viewer.html

而你想向官网传入自己的pdf……好像pdf必须存在某个开放的服务器上

<4>自己在网页中添加

由于viewer.html完美解决了我的问题,这个部分只是稍微了解了一下。

首先PDFJS is not define!我也不知道为什么一大堆教程用的都是PDFJS,但是这个分明不能用了呀!可以查看pdf.js中的example代码来学习,最简单的是learning文件夹中的hello world。

参考地址

https://www.cnblogs.com/iPing9/p/7154753.html

https://www.jianshu.com/p/40b99bed3127

https://www.cnblogs.com/iPing9/p/7154753.html

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

PDF.Js的使用—javascript中前端显示pdf文件的更多相关文章

  1. 在网页浏览器中原生显示PDF文件

    在网页中直接显示pdf格式的文件方便阅读.但是如果文件较大加载速度会很慢,另外如果客户端没有安装pdf阅读插件的话,也就看不了了. 这种方式的好处就是不需要转换,直接显示,而且在加载时(高级的浏览器, ...

  2. pdf.js插件使用记录,在线打开pdf

    天记录一个js库:pdf.js.主要是实现在线打开pdf功能.因为项目需求需要能在线查看pdf文档,所以就研究了一下这个控件. 有些人很好奇,在线打开pdf文档浏览器不是支持吗.是的你说的都是现代浏览 ...

  3. 织梦中在线显示pdf文件的方法

    如何在织梦中添加pdf文件并显示呢?下面这个教程将带领大家来操作.(注:手机版无法查看) 第一步:在系统-系统基本参数-附件设置中添加pdf格式 并且将大小调大 第二步:在核心-内容模型-普通文章中添 ...

  4. 【JS】336- 拆解 JavaScript 中的异步模式

    点击上方"前端自习课"关注,学习起来~ JavaScript 中有很多种异步编程的方式.callback.promise.generator.async await 甚至 RxJS ...

  5. 【JS】285- 拆解 JavaScript 中的异步模式

    JavaScript 中有很多种异步编程的方式.callback.promise.generator.async await 甚至 RxJS.我最初接触不同的异步模式时,曾想当然的觉得 promise ...

  6. pdf.js在国际化的时候,显示不了中文的解决办法

    在项目中使用了pdf实现在线预览功能,开始工具栏中一直都是英文的,在view.js中设置了也不起作用,偶然发现了问题所在 当我把网站发布到iis上的时候,用google浏览器的审查元素功能的审核发现j ...

  7. js学习笔记----JavaScript中DOM扩展的那些事

    什么都不说,先上总结的图~   Selectors API(选择符API) querySelector()方法 接收一个css选择符,返回与该模式匹配的第一个元素,如果没有找到匹配的元素,返回null ...

  8. js实例分析JavaScript中的事件委托和事件绑定

    我们在学习JavaScript中,难免都会去网上查一些资料.也许偶尔就会遇到“事件委托”(也有的称我“事件代理”,这里不评论谁是谁非.以下全部称为“事件委托”),尤其是在查JavaScript的事件处 ...

  9. pdf.js实现在HTML下直接浏览pdf文档,无需插件即可实现

    近期,有一个朋友做B端,服务器存了大量的金融类数据,很多都是pdf文档,他现在的做法是,先将pdf文档转换成flash,再放到浏览器上给用户浏览,但是他告诉我,这种体验太差了,而且很好资源,空间已经快 ...

随机推荐

  1. vue.js原生组件化开发(二)——父子组件

    前言 在了解父子组件之前应先掌握组件开发基础.在实际开发过程中,组件之间可以嵌套,也因此生成父子组件. 父子组件创建流程 1.构建父子组件 1.1 全局注册 (1)构建注册子组件 //构建子组件chi ...

  2. WPF通用框架ZFS《项目结构介绍01》_模块介绍

    首页介绍: 下图为项目运行首页图片, 大的结构分为三块: 1.Header首部模块(存放通知组件[全局通知.消息管理 ].扩展模块[皮肤.系统设置.关于作者.退出系统]) 2.Left左侧菜单模块(存 ...

  3. openssl之EVP系列之5---EVP_Encrypt系列函数具体解释(二)

    openssl之EVP系列之5---EVP_Encrypt系列函数详细解释(二)    ---依据openssl doc/crypto/EVP_EncryptInit.pod和doc/ssleay.t ...

  4. [React] Write Compound Components

    Compound component gives more rendering control to the user. The functionality of the component stay ...

  5. QTP校验数据库中数据后台项目

    数据校验功能后台主要包含两个类:QTPCommonServlet.java和QTPCommonDao.java 当中QTPCommonServlet.java为: package com.runqia ...

  6. 突破极限 解决大硬盘上安装Unix新思路

    一.问题提出 硬盘越做越大,然我喜欢让我忧.10年前就遇到过在586电脑BIOS不认识超过8.4G容量硬盘的问题,以及Windows Nt操作系统不认大硬盘(容量超过8.4G)的问题,对于Linux ...

  7. linux环境下禅道搭建

    1.下载禅道安装包,根据操作系统的版本: 2.上传包到linux的opt目录中: 3.解压包: cd /opt tar xzvf 禅道包名称,如:tar xzvf ZenTaoPMS.8.1.3.zb ...

  8. HDU——T 3746 Cyclic Nacklace

    http://acm.hdu.edu.cn/showproblem.php?pid=3746 Time Limit: 2000/1000 MS (Java/Others)    Memory Limi ...

  9. windows删除多余启动引导项

    方法1: 按快捷键win+r,打开运行界面,输入msconfig. 点击确定,进入系统配置,选择引导选项卡,如图: 选中你不需要的启动项,点击下面的删除按钮即可.删除完成之后点击确定,重启计算机就可以 ...

  10. RGB 颜色空间转 HSI 颜色空间的matlab程序实现

    RGB 颜色空间转 HSI 颜色空间的matlab程序实现 2014.10.20之前的内容有误,这里依据wikipedia更新了算法内容. 算法以wiki为准 https://en.wikipedia ...