导航:首页 > 文档加密 > pdfjs开发

pdfjs开发

发布时间:2022-04-30 07:43:09

A. 前台js 如何使用pdf.js预览pdf文件流(base64)

将pdf流生成pdf文件,然后在将pdf文件使用PDF.js进行查看。
你需要考虑浏览器兼容性,低版本浏览器可能没办法支持。
参照 File API 和URL API(URL.createObjectURL())

B. 如何创建pdf的buffer,让pdf.js实现预览pdf文件

pdf.js简介

PDF.js 是基于开放的 HTML5 及 javaScript 技术实现的开源产品。简单说就是一个 PDF
解析器。运用HTML5JavaScript(即pdf.js仅使用安全的web语言,不包含任何攻击者可以用的本地代码块)的PDF阅读器pdf.js,直接在标准的HTML页面上载入和渲染PDF文件, 还可以提高安全性(不需要安装第三方插件,安全性由浏览器保证),浏览器所做的安全措施已经为pdf.js提供了安全的运行环境。其对IE和 FireFox浏览器的要求是IE9+, FireFox19+。

在线示例: http://jsbin.com/pdfjs-helloworld-v2/1/edit
, http://jsbin.com/pdfjs-prevnext-v2/1/edit

源码:https://github.com/mozilla/pdf.js

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

pdf.js VS 传统浏览器读取pdf

一般来说,PDF档案格式都是在浏览器中由外挂程式来描绘,通常是Adobe自己的PDF
reader或来自其他供应商的描绘工具,但这些外挂通常无法充分运用PDF的特点,而且由于含有大量的受信任代码,使得Google
Chrome浏览器必须运用SandBox沙箱原理,来检查PDF描绘工具是否遭到未知病毒感染。

使用adobe,必须在本地安装软件才能使用,而pdf.js不依赖环境、渲染速度快(测试过,确实很快)、安全性高。

pdf.js渲染PDF文件

pdf.js渲染PDF文件的流程:Fetch pdf (url / buffer) ——> canvas ——> 渲染

如果要深入pdf的渲染,需要去研究pdf.js源代码。pdf.js可通过pdf文件的地址或pdf数据流获取pdf,具体实现是调用接口函数 PDFJs.getDoc(url/buffer)将pdf载入html,通过canvas处理, 然后渲染pdf文件。网上给出的都是通过url来获取pdf的例子,而我在做项目的时候,后台(Python)要求是发pdf的数据流给前台,前台接收pdf的buffer,然后通过pdf.js来渲染。当然最初尝试buffer出现了很多问题,具体问题总结如下:

1)如何通过$.ajax接收后台发给前台的buffer数据;

2)如何将buffer传给pdf.js来处理(这里我使用了viewer.js, 所以需要考虑的是如何将buffer传给viewer.js来处理);

3)如何将pdf.js转换成pdf.js可以接收的buffer格式;

(对应问题解决见代码注释)

注:viewer.js是pdf.js的扩展,其将打印、翻页、缩放等功能进行了实现,且界面非常好看。也就是说如果你引入了viewer.js,pdf的渲染和渲染之后的功能界面都已经帮你实现了,你不用自己去写界面。

先从官网:http://mozilla.github.io/pdf.js/ 下载代码,然后使用文件viewer.html
, 我的html就是在viewer.html 的基础上修改的,下面我给出buffer的例子:

<!DOCTYPE html>
<html dir="ltr" mozdisallowselectionprint moznomarginboxes>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="google" content="notranslate">
<title>在线预览</title>
{% load static %}{% get_static_prefix as STATIC_URL %}
<link href="{{STATIC_URL}}css/preview.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="{{STATIC_URL}}pdfjs/web/viewer.css"/>
<script type="text/javascript" src="{{STATIC_URL}}pdfjs/web/compatibility.js"></script>
<link rel="resource" type="application/l10n" href="{{STATIC_URL}}pdfjs/web/locale/locale.properties"/>
<script type="text/javascript" src="{{STATIC_URL}}pdfjs/web/l10n.js"></script>
<script type="text/javascript" src="{{STATIC_URL}}pdfjs/build/pdf.js"></script>
<script type="text/javascript" src="{{STATIC_URL}}pdfjs/web/debugger.js"></script>
<script src="{{STATIC_URL}}js/jquery-1.8.3.js" type="text/javascript"></script>
<script type="text/javascript">

//convertDataURIToBinary()

//不知道什么原因如果后台直接将pdf的数据流发给前台,得到的是乱码,将数据转换成 Uint8Array始终不成功

//所以就让后台将发送之前的数据流做 了base64编码发给前台,前台再解码得到的数据就不是乱码了。

var BASE64_MARKER = ';base64,';

var preFileId = {{mark}};

//viewer.js全局变量,传入buffer,回答问题2
var DEFAULT_URL

$(document).ready(function(){
$.ajax({
type:"post",
async: false,

//ajax接收pdf数据流,注意dataType值的设置是否有错,如果不指定,jQuery将自动根据HTTP包MIME信息返回

//responseXML或responseText
. 回答问题1
contentType:"application/pdf;charset=utf-8",
url:"{% url netPan.File.views.browserFuf%}",
data:{
id: preFileId
},
success:function(data){
var pdfAsDataUri = data;

//如果引入了viewer.js , 处理方法
var pdfAsArray = convertDataURIToBinary(pdfAsDataUri);
DEFAULT_URL = pdfAsArray;

// 只引入了pdf.js, 未引入viewer.js, 处理方法

// var pdfAsArray = convertDataURIToBinary(pdfAsDataUri);

// PDFJS.getDocument(pdfAsArray).then(); 自己写pdf的处理函数

}
});
});

function convertDataURIToBinary(dataURI) { //编码转换,回答问题3

var base64Index = dataURI.indexOf(BASE64_MARKER) + BASE64_MARKER.length;
var base64 = dataURI.substring(base64Index);
var raw = window.atob(base64);
var rawLength = raw.length;

//转换成pdf.js能直接解析的Uint8Array类型,见pdf.js-4068
var array = new Uint8Array(new ArrayBuffer(rawLength));

for(i = 0; i < rawLength; i++) {
array[i] = raw.charCodeAt(i);
}
return array;
}
</script>

<!--先设置全局变量DEFAULT_URL 的值,所以要后调入viewer.js -->
<script type="text/javascript" src="{{STATIC_URL}}pdfjs/web/viewer.js"></script>
</head>

<body>

省略内容

</body>

</html>

C. 《JavaScript开发框架权威指南》pdf下载在线阅读全文,求百度网盘云资源

《JavaScript开发框架权威指南》网络网盘pdf最新全集下载:
链接: https://pan..com/s/17SRPdiy6pRI4eyfQg-VY4Q

?pwd=gbvq 提取码: gbvq
简介:JavaScript开发框架quanwei指南涵盖了在开发过程中常用的各种JavaScript工具,以帮助读者在大量流行的JavaScript工具中做选择。全书分为16章,从开发工具、模块加载器、客户端框架、服务端框架数据库交互、通信、管理控制流和其他有用框架等几个方面,涵盖了Bower、Grunt、Yeoman、PM2、RequireJS、Browserify、Knockout、AngularJS、Kraken、Mach、Mongoose、Knex、Bookshelf、Faye、Q、Async.js、Underscore和 Lodash等框架和库。全书涵盖了客户端和服务器端的开发,通过细致的讲解、详细的代码示例,阐明了这些工具的用法。

D. 《JavaScript基础教程(第9版)》pdf下载在线阅读,求百度网盘云资源

《JavaScript基础教程(第9版)》([美] Dori Smith)电子书网盘下载免费在线阅读

资源链接:

链接:https://pan..com/s/1w3cOLdV3UXMKEjP4rFJDdg

提取码:8ghp

书名:JavaScript基础教程(第9版)

作者:[美] Dori Smith

译者:陈剑瓯

出版社:人民邮电出版社

出版年份:2015-3

页数:404

内容简介:本书是经典的JavaScript入门书,以易学便查、图文并茂、循序渐进和善于用常见任务讲解语言知识而着称。书中从JavaScript语言基础开始,分别讨论了图像、框架、浏览器窗口、表单、正则表达式等内容,循序渐进地给出了JavaScript以及相关的CSS、DOM、Ajax和jQuery等技术。第9版全新改写,新增更多示例和技术介绍,使用流行的jQuery框架向网站轻松添加有用的功能。

本书适合有志于从事Web开发和设计的初学者.也是高等院校相关课程的理想入门教材。

作者简介:Dori Smith

世界知名的Web程序员和设计师,从事软件开发已有20多年。她是Web标准项目(WaSP)指导委员会委员,并发起成立了世界性的女性技术社区Wise-Women Web。

Tom Negrino

蜚声全球的技术作家,长期主持Macworld和许多其他技术杂志的专栏。自1995年开始,与Dori Smith合作着书,向初学者介绍Web,目前已着有数十本书。

E. 《Node.js开发指南》pdf下载在线阅读,求百度网盘云资源

《Node.js开发指南》(郭家宝(BYVoid))电子书网盘下载免费在线阅读

资源链接:

链接:

提取码: 7ha5

书名:Node.js开发指南

作者:郭家宝(BYVoid)

豆瓣评分:7.5

出版社:人民邮电出版社

出版年份:2012-7

页数:178

内容简介:

Node.js是一种方兴未艾的新技术,诞生于2009年。经过两年的快速变化,Node.js生态圈已经逐渐走向稳定。Node.js采用了以往类似语言和框架中非常罕见的技术,总结为关键词就是:非阻塞式控制流、异步I/O、单线程消息循环。不少开发者在入门时总要经历一个痛苦的思维转变过程,给学习带来巨大的障碍。 而本书的目的就是帮助读者扫清这些障碍,学会使用Node.js进行Web后端开发,同时掌握事件驱动的异步式编程风格,以便进一步利用Node.js的高级特性。

作者简介:

郭家宝(BYVoid),清华大学计算机系2010级本科生,曾获得信息学奥林匹克竞赛(NOI)金牌。他从中学开始涉足开源开发,参与过“汉典网”等许多Web项目的前后端设计开发,同时是Linux输入法ibus-pinyin的作者。他从2009年Node.js诞生之始,就一直在关注它的发展,有过许多用Node.js建立网站的经验,活跃于CNode社区。

F. 《Three.js开发指南原书第三版》pdf下载在线阅读全文,求百度网盘云资源

《Three.js开发指南原书第三版》网络网盘pdf最新全集下载:
链接:https://pan..com/s/1uEcKOdIP2DTnOnj9vnIxOA

?pwd=zi2t 提取码:zi2t
简介:《Three.js开发指南:基于WebGL和HTML5在网页上渲染3D图形和动画(原书第3版)》共12章:第1章讲述使用Three.js库的基本步骤;第2章讲解Three.js库使用过程中所需要理解的各种基础组件,包括灯光、网格、几何体、材质和相机等;第3章通过具体示例讲解场景中使用的各种灯光;第4章讨论Three.js库中可以用于网格的各种材质,并通过互动示例让你来试用这些材质;第5章讲解Three.js中几何体的创建和设置;第6章展示如何设置、使用Three.js库中的高级几何体,例如凸面体和旋转体;第7章讲解如何使用Three.js库中的粒子系统;第8章展示如何从外部导入网格和几何体;第9章探索各种动画效果,使场景活动起来;第10章深入讲解材质的细节,包括如何控制材质,以及如何将HTML5视频的输出和HTML5画布中的元素作为纹理;第11章探索如何使用Three.js库来对已经渲染过的场景进行后期处理;第12章讲解如何在Three.js场景中添加物理效果。

G. 《JavaScript设计模式与开发实践》pdf下载在线阅读,求百度网盘云资源

《JavaScript设计模式与开发实践》(曾探)电子书网盘下载免费在线阅读

资源链接:

链接:

提取码:3574

书名:JavaScript设计模式与开发实践

作者:曾探

豆瓣评分:9.0

出版社:人民邮电出版社

出版年份:2015-5

页数:294

内容简介:

本书在尊重《设计模式》原意的同时,针对JavaScript语言特性全面介绍了更适合JavaScript程序员的了16个常用的设计模式,讲解了JavaScript面向对象和函数式编程方面的基础知识,介绍了面向对象的设计原则及其在设计模式中的体现,还分享了面向对象编程技巧和日常开发中的代码重构。本书将教会你如何把经典的设计模式应用到JavaScript语言中,编写出优美高效、结构化和可维护的代码。

作者简介:

曾探

2007年毕业于吉林大学软件学院。就职于国内知名前端团队腾讯AlloyTeam,高级工程师。

曾参与Web QQ、QQ群、Q+开发者网站、微云、QQ兴趣部落等大型前端项目的开发。有过Java、Python和JavaScript的开发经验,业余作品有HTML5版街头霸王等。

平时喜欢电影和音乐,业务时间也是一名健身教练。

H. pdf.js可以实现lazyload吗

尊敬的用户,您好!很高兴为您答疑。
这是pdf.js的helloworld样例:
PDFJS.getDocument('helloworld.pdf').then(function(pdf) {
// Using promise to fetch the page
pdf.getPage(1).then(function(page) {
var scale = 1.5;
var viewport = page.getViewport(scale);

//
// Prepare canvas using PDF page dimensions
//
var canvas = document.getElementById('the-canvas');
var context = canvas.getContext('2d');
canvas.height = viewport.height;
canvas.width = viewport.width;

//
// Render PDF page into canvas context
//
var renderContext = {
canvasContext: context,
viewport: viewport
};
page.render(renderContext);
});
});
根据pdf.js的helloworld代码来看,其应该是支持lazyload的,但是据这段赋值可以看出(canvas.height = viewport.height;canvas.width = viewport.width;)画布的长宽仍然是需要您手动指定的。当然,一般此类赋值我们可以认为其又一个官方默认值,这个可以从其提供的demo中体现出来。
希望我的回答对您有所帮助,如有疑问,欢迎继续咨询我们。

I. 《nodejs开发实战详解电子式》pdf下载在线阅读全文,求百度网盘云资源

《nodejs开发实战详解电子式》网络网盘pdf最新全集下载:
链接:https://pan..com/s/1sx6HT1Ktwwq5R_IGauqWlQ?pwd=nkw0 提取码:nkw0
简介:本书共分为11章。涵盖的主要内容有:Node.js的概念、应用场景、环境搭建和配置、异步编程;Node.js的模块概念及应用、Node.js的设计模式;简单服务的搭建、Node.js静态资源管理、文件处理、Cookie和Session实践、Crypto模块加密、Node.js与Nginx配合;UDP服务器的搭建、Node.js与PHP之间合作;Node.js的实现机制、Node.js的原生扩展与应用;Node.js的编码习惯;Node.js操作MySQL和MongoDB;基于Node.js的Myweb框架的基本设计架构及实现;利用Myweb框架实现一个简单的Web聊天室;在线聊天室案例和在线中国象棋案例的实现;Node.js的日志模块、curl模块、crontab模块、forever模块、xml模块和邮件发送模块等应用工具。

本书非常适合从事编程开发的学生、教师、广大科研人员和工程技术人员研读。建议阅读本书的读者对的语法和PHP的相关知识有的了解。当然,如果你是初学者,本书也是一本难得的参考书。

J. 如何用js生成pdf

1,生成 PDF 这种事情通常由服务器端做
2,浏览器做的话要依赖于插件(ActiveX/Plugin,通常购买第三方的)
3,浏览器预览、打印倒是没问题(要装 PDF viewer,Firefox 自带的 PDF.js 扩展也可以)
4,总结,AngularJS 是浏览器端的,干不来这事儿,也不应该干这事儿,我想你最好换个方向

阅读全文

与pdfjs开发相关的资料

热点内容
程序员放弃后会怎样 浏览:182
河北模具编程 浏览:187
adb查找命令 浏览:321
安卓手机视频文件夹怎么打开 浏览:309
平板加密手机后怎么关闭 浏览:567
流媒体服务器应该注意什么 浏览:536
d8命令编译 浏览:964
压缩包解压需要多少空间 浏览:145
如何查找app属性 浏览:388
android人脸识别技术 浏览:322
pc104编程 浏览:335
二维码反编译破解推广 浏览:682
修改服务器的mac地址 浏览:528
好玩的编程软件 浏览:899
编程语言创始人有钱吗 浏览:804
短视频app怎么获客 浏览:15
查看云服务器的应用 浏览:436
javadump工具 浏览:565
程序员16g 浏览:445
程序员没有办法成为top怎么办 浏览:218