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. MessageFormat

    MessageFormat mf = new MessageFormat("{0,number,#.##}, {0,number,#.#}"); Object[] objs = { ...

  2. Ubuntu16.04+Gnome3 锁定屏幕快捷键无效解决办法

    Ubuntu16.04 桌面环境通过Ubuntu server和后安装的Gnome3 桌面环境实现,安装完以后发现锁定屏幕快捷键无效,系统设置=>键盘=>快捷中 锁屏快捷键已经存在Supe ...

  3. 我在看着你呢——shiro学习

    说实话开学第一周效率并不高.项目该结的都差不多结了,看来这毛病我是养成了.项目忙的要死的时候,想休息想停一停就不断往下扔包袱.一下没项目了开学了,反倒开始手痒,捉摸着写点什么代码.马上我的小mac就要 ...

  4. Scrapy框架之日志等级

    一.日志等级 CRITICAL:严重错误 ERROR:一般错误 WARNING:警告 INFO: 一般信息 DEBUG:调试信息 [注意:默认的日志等级是DEBUG] 二.日志等级设置 修改setti ...

  5. python创建多层目录的方式

    将 os.mkdir 改成 os.makedirs(opDir) 哈.

  6. docker -mysql服务设置远程连接 解决1251 client does not support ..问题

    前提: 安装MYSQL实例 docker pull mysql 启动mysql(做了端口映射) [root@localhost ~]# docker run -p 3306:3306 --name m ...

  7. [ Java ] [ Spring ] [ Spring MVC ] Tutorial

    中文 Spring 教學 http://hatemegalaxy.blogspot.tw/2014/09/spring-framework-useful-tutorials-for.html 英文 S ...

  8. vue中 v-cloak 的用法

    原文来自:http://www.sunzhongwei.com/hide-vuejs-variable-with-v-cloak-when-page-loading

  9. storm1.1运行时问题

    java.lang.NoClassDefFoundError: org/apache/curator/shaded/com/google/common/cache/CacheBuilder 程序并没有 ...

  10. JavaScript--数据结构与算法之链表实现约瑟夫环

    传说在公元1 世纪的犹太战争中,犹太历史学家弗拉维奥·约瑟夫斯和他的40 个同胞被罗马士兵包围.犹太士兵决定宁可自杀也不做俘虏,于是商量出了一个自杀方案.他们围成一个圈,从一个人开始,数到第三个人时将 ...