近新项目需要处理 PDF,研究了 PDf.js 之后觉得很不错,于是写篇文章推荐给大家。
PDF.js 的功能和它的名字一样简单,是一个使用 HTML5 技术来让前端网页支持读取、解析和显示 PDF 文档的 JS 工具库。这个项目由大名鼎鼎的 Mozilla 组织开发并且更新维护着,没错,就是那个开发了火狐浏览器的 Mozilla。所以 pdf.js 也内置在 Firefox 的 19+ 版本中,也是火狐浏览器的默认 PDF 处理工具。
一般来说,要查看 PDF 文档,我们需要一个 PDF 阅读器软件,而通过 PDF.js 可以在浏览器中直接显示和处理 PDF 文档,无论是在线浏览、存档或者其他基于 PDF 的功能都可以实现。
PDF.js 项目主页
如果只是为什么显示 PDF 文档,其实大部分情况下浏览器都支持直接打开 PDF,之前碰到要显示 PDF 的需求,都是直接在浏览器新标签打开。
在浏览器中渲染 PDF
不过就在上周,我接到了一个需求,要在网页上支持导入 PDF 文件,转化成图片保存到后端,并且还要提取 PDF 文档中的文字。于是我就开始研究 PDF.js ,了解之后发现这个工具库非常强大,完全可以满足我的需求,那些在线转换 PDF 的工具实际上都是基于 PDF.js 开发的。
我要处理的文档有一部分是发票,其实里面的文字并不是图片,而是可以选择的,这种类型的文档通过 PDF.js 甚至可以直接获取文字的内容,OCR 识别的过程都免了,实在太棒了。
要开始使用 PDF.js ,可以直接从项目下载源码,然后在页面中引入 pdf.js ,就可以按照代码例子那些来使用了。
官方文档
我是在 Vue 项目中使用,所以我选择用 npm 安装的方式:
npm i pdfjs-dist -S
然后在 Vue 页面中引入 PDF.js,注意这里的引入方式,需要在包名后加上 /webpack ,否则会报错,原因我也没有去深入排查。
<template>
<div class="hello">
<input
type="file"
name="file"
id="file"
accept="application/pdf"
single
placeholder="请选择pdf文件"
@change="handleFile"
/>
<canvas id="viewer" ref="viewer" :width="width" :height="height"></canvas>
</div>
</template>
<script>
import { getDocument } from "pdfjs-dist/webpack"; // 注意这里的引入方式
// 省略无关代码...
// methods:
handleFile(e) {
const reader=new FileReader();
reader.onload=(evt)=> {
this.init(evt.target.result);
};
reader.readAsDataURL(e.target.files[0]);
},
async init(path) {
// 读取pdf
let pdf=await getDocument(path).promise; //返回一个pdf对象
const page=await pdf.getPage(0); // 获取第一页
const viewport=page.getViewport({ scale: 1 });
const textContent=await page.getTextContent();
console.log(textContent.items); // 页面的文章内容在这
const context=this.canvas.getContext("2d");
// 设置canvas的尺寸
this.width=viewport.width;
this.height=viewport.height;
await page.render({ canvasContext: context, viewport: viewport }).promise; // 渲染第一页内容
},
</script>
上面这段代码就是我项目 demo 中的一部分,可以实现读取 PDF 文档中的页面和文字,代码的末尾把第一页渲染到了 canvas 中,想要转成图片,只要把 canvas 中的内容转成 PNG 图片即可,区区十来行代码,非常简单。
除了提取文章和转成图片,PDF.js 还很多强大的功能,比如可以实现页面导航,预览时加入缩放、滚动、旋转和手写等注释以及实现打印、另存为等操作。
还有些付费软件的功能是压缩 PDF 文档,PDF.js 也可以压缩处理超大型的 PDF 文档,技术原理是把文档中没有使用的结构、元素和对象删除,大大简化文档,从而起到压缩的效果。
总之,想要在项目处理 PDF,PDF.js 是首选,并且目前没有看到类似好用并且强大的 JS 库,反而很多 PDF 工具都是基于 PDF.js 二次封装的。
Mozilla 组织本身是一个非营利性组织,成立以来一直致力于推动浏览器的良好发展,PDF.js 也不例外,是一个免费开源的项目,源码基于 Apache 2.0 许可托管在 Github 上,任何人都可以免费下载来使用,用在商业项目也完全没问题。
↓↓点击查看本次分享的网站。
PDF.js - 免费开源的 JavaScript 读取、显示 PDF 文档的工具库,由 Mozilla 开发并且持续维护|那些免费的砖
微信小程序小说阅读器+后台管理系统|前后分离VUE》该项目含有源码、论文等资料、配套开发软件、软件安装教程、项目发布教程等
本系统包含微信小程序前台和Java做的后台管理系统,该后台采用前后台前后分离的形式使用Java+VUE
微信小程序——前台涉及技术:WXML 和 WXSS、JavaScript、uniapp
Java——后台涉及技术:
前端使用技术:JSP,HTML5,CSS3、JavaScript、VUE等
后端使用技术:Spring、SpringMvc、Mybatis(SSM)等
数据库:Mysql数据库
小程序框架:uniapp
小程序开发软件:HBuilder X
小程序运行软件:微信开发者
管理员:个人中心、用户管理、图书分类管理、图书信息管理、留言板管理、系统管理等
普通用户:登录注册、首页、图书信息和我的(留言板、收藏)等
系统功能完整,适合作为毕业设计、课程设计、数据库大作业。
下面是资料信息截图:
下面是系统运行起来后的一些截图:
1月19日下午,搜狐IT无穷沙龙聚集了一批对HTML5技术感兴趣的人,这些人大多是各公司的技术达人或者HTML5技术爱好者,他们都对HTML5的应用及未来发展都非常有想法,希望能够在这个沙龙上听到业界重量级人物的精彩分享,本片文章就带你看看他们是如何看待HTML5生态发展的。
当前HTML5的技术应用非常广泛,从网站到平台再到应用,不但能无缝连接了PC网站与移动互联网,更让很多传统的PC网站起死回生。微信朋友圈的营销以及各种活动宣传都开始以HTML5的形式,使得的互动性与娱乐性大为提高。
HTML5是在HTML大标准下的再生,HTML5整个版本经历很的时间,从04年开始进行草稿定式到06年W3C加入到整个标准的制作过程中,到08年提出第一稿,到14年正式定稿,对于整个生态的影响是什么?沙龙上,包括搜狐快站负责人樊功臣、百度直达号技术团队负责人甘勋、微信海CEO程小永、UC浏览器内核研发团队负责人梁延俊、HTML5民间开发者张东在内的嘉宾进行了分享,同时讨论整个未来移动互联网的未来围绕着HTML5将会进行什么样的变革,伟哥认为这些话题对于广大互联网人来说非常有价值。
搜狐快站负责人樊功臣:HTML5全力打造搜狐快站 六大神技让移动建站更加简单
这次老樊的分享是搜狐快站的六大神技,分别是免费篇之上善若水、独立篇之股本培元、功能篇之宝刀屠龙、便捷篇之弹指神功、HTML5篇之无孔不入、营销篇之吸星大法。这六大神功步步为营,环环相扣,重点在于上无孔不入这技能,搭载了HTML5的快站可以用无孔不入来形容,从苹果系统到安卓系统,可以在微信、微博及各搜索引擎上使用,甚至可以在谷歌眼镜及苹果眼镜上使用。
搜狐快站在健康类、教育类及汽车类的合作商家有七八万家站,快站使用HTML5技术搭建的APP网站,简洁同时功能也在不断完善,后台的驱动力量也非常大,同时跟各平台的融合性也在不断提高,快站技术体现在新闻客户端中的HTML5的比重也在增大。目前快已经跟微信公众号打通,跟直达号做了深度合作,跟360包括周围各种各样的流量渠道进行打通,区别于依附在百度或者腾讯上面的一个营销站点,快站搭建的站是一个完整的独立站点。
百度直达号技术团队负责人甘勋:HTML5实现跨平台服务商家
百度在多年以前就开始研究与布局移动端包括HTML5以及CSS,去年在百度世界的发不的轻应用也使用HTML5技术,用户在百度首页点击某个链接,就会进入到HTML5的应用或者WEB站,用户在获取信息的同时也能直接获取到服务。
能够以跨平台的方式直接连接服务和商家,HTML5是最优化的解决方式。通过搜索入口直接让用户连接到应用本身,这就解决了现在的大部分移动应用及一些站点分发需要中转才能使用的问题,把这一件事情直接通过搜索关联起来,分发等各种应用都不再是问题。
所有的应用得需要让更多的人使用你的服务或者使用你的应用,从搜索百度做搜索是流量的入口。商家的价值有四类,即广拉新、高转化、强留存、易开通。直达号是企业在百度官方移动平台的官方服务号,直接关联商家的应用,直接使用户关联到企业。百度给是流量的入口,现在在移动端有15款用户过亿,包括地图、文库、魔图等等移动端应用,把直达号和15款过亿的APP结合起来,这些移动端就成为连接HTML5应用的入口。
微信海CEO程小永:要多做一些接地气的HTML5应用
从UC、微信、百度直达号,大家开始做这件事情的时候个HTML5开始越来越火。小永希望做一些能从商用层面真正给传统企业带来效果的,所以我们用HTML5做更多的营销活动,通过微信口碑传出去。所以,HTML5兴起以后,更多的企业都在琢磨去中性化的玩法。
HTML5对于移动端来说是一个技术的革新,把APP之间互相不通的情况有意识打破,但是这个过程还是很慢。移动互联网是连接线上和线下的而不是虚拟的连接,HTML5在做虚拟的连接,像PC时代的WWW.COM,移动端通过二维码把线线下连接起来,这也是O2O为什么火的原因,因为线上线下实现了闭环。
大家以后做HTML5应用,一定要更多做一些接地气的,真正能让商家让传统企业能让使用者很好把它用起来的东西,不要做得特别炫。中国四千万中小企业不需要很炫的东西,要带来广泛的传播广泛的定单,这是他们所有的需求。
UC浏览器内核研发团队负责人梁延俊:HTML5混合原生态的模式成为主流
在很多APP开发都是HTML5混合原生开发来去做一些应用,各取所长,通过实际需要取得一个平衡点。这样的一个模式其实是HTML5与游戏开发者层面的影响,更有利地去做一些发展。
现在HTML5混合原生态的模式后已经是一个主流,以后也会有更多的探索用这样的方式开发里面的应用,包括小说、视频、阅读器等。像小说翻页的时候对于性能的要求比较高,小说的搜索、书架可能更追求的是需要内容快速更新,在以后这部分可能会用HTML5的页面来去做。
HTML5民间开发者张东:HTML5技术满足企业们更高的需求
2013—2014年随着手机移动端的爆棚式增长,企业们的服务需求也在改变,现在为止随着HTML5技术的成熟,有很多优秀的建站产品的问世。在这个过程中,我们首先要了解用户在空闲的时候会拿手机干什么,每个年龄段有什么样的需求,这个也是我们需要分析的话题,老用户和新用户的区别。对于一个商户的开发来说首先是一个用户体验,这是最重要的一点,用户体验抓住用户的需求,让用户在极短的时间内完成他所需要做的一些事情,这个是最关键的。
有特色的服务包括开发的指导,有一些比较流行的,在没有强大的技术的情况下,你照样可以去做建站服务以及互联网这方面的服务,这些通过搜狐快站等产品就可以完成,基本上,哪家产品能够提供更多的便利,提供的指导更多,能节省成本,有稳定的服务与网络支持,就会选择哪家产品。搜狐快站这样的建站产品,通过一个简单的推动就可以实现某个功能、一些交互式及某些特殊的效果,并且有完善的CMS内容发布管理系统以及电商系统等等,在这个情况下可以看到快站针对互联网全网营销在这方面考虑的比较多。
HTML5越发火热,相信在接下来的发展中会得到更广泛的应用,从SEO抓取到平台再到应用的整条产业链等会诞生出千万甚至亿级的企业,使得HTML5在创业圈与投资圈非常热,以此关注HTML5的人越来越多。
这次无穷俱乐部沙龙的各位嘉宾从建站产品、开发者、使用者、应用程序等各方面分享自己的对HTML5的认识,多角度为到场听众见解了HTML5在未来的发展,分享内容无论是专业度还是实用度,都是很少见的。伟哥认为HTML5未来会有更广泛的发展,将改变未来移动互联网时代的视听新体验,同时也是一个非常重要的发展方向,无论是WebAPP还是轻应用或者是轻游戏方面。在超级APP的崛起之下,HTML5的发展未来前景一篇广阔,现在是广大建站者必需真正需要考虑用HTML5的时候了。
*请认真填写需求信息,我们会在24小时内与您取得联系。