pdf.js可以实现在html下直接浏览pdf文档
来源:互联网 发布:有什么好玩的游戏知乎 编辑:程序博客网 时间:2024/06/05 15:59
pdf.js可以实现在html下直接浏览pdf文档,是一款开源的pdf文档读取解析插件
pdf.js主要包含两个库文件,一个pdf.js和一个pdf.worker.js,一个负责API解析,一个负责核心解析。
pdf.js可通过pdf文件的地址或pdf数据流获取pdf,具体实现是调用接口函数 PDFJs.getDocument(url/buffer)将pdf载入html,通过canvas处理, 然后渲染pdf文件。将pdf转换成数据流,因为转换成流的话可以解决pdf.js的跨域问题。
用ajax调用后台方法查询pdf的url地址,然后传递给另一个页面去调后台方法进行Base64编码。
//转换成二进制编码
byte[] data = HttpUrlConnectionUtil.doGet(pdfUrl, null, 60000);
//转换成base64二进制字符串
String encodeBase64 = Base64.encodeBase64String(data);
this.setEncodeBase64(encodeBase64);
return "detail";
后台是发pdf的数据流给前台,前台接收pdf的buffer,然后通过pdf.js来渲染。
js代码
function showPdf() {
var container = document.getElementById("container");
container.style.display = "block";
var url = convertDataURIToBinary('${encodeBase64}');//encodeBase64是后台传递的Base64编码的二进制字符串
PDFJS.workerSrc = 'js/pdf.worker.js';
PDFJS.getDocument(url).then(function getPdfHelloWorld(pdf) {
var $pop = $('#pop');
var shownPageCount = pdf.numPages
var getPageAndRender = function (pageNumber) {
pdf.getPage(pageNumber).then(function getPageHelloWorld(page) {
var scale = 2;
var viewport = page.getViewport(scale);
var $canvas = $('<canvas></canvas>').attr({
'height': viewport.height,
'width': viewport.width
});
$pop.append($canvas);
page.render({//设置渲染方式
canvasContext: $canvas[0].getContext('2d'),//二维绘图环境
viewport: viewport
});
});
if (pageNumber < shownPageCount) {
pageNumber++;
getPageAndRender(pageNumber);
}
};
getPageAndRender(1);
});
}
function convertDataURIToBinary(dataURI) { //将encodeBase64解码
var raw = window.atob(dataURI);// 进行解码
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); //charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。
}
return array;
}
<div id="container" style="display:none;">
<div id="pop" class="pop">
</div>
</div>
电子签章不显示问题:
在pdf.worker.js文件中找到如下图所示的代码段
将this.setFlags(AnnotationFlag.HIDDEN);注释掉就会显示电子签章,反之不显示
- pdf.js可以实现在html下直接浏览pdf文档
- pdf.js实现在HTML下直接浏览pdf文档,无需插件即可实现
- pdf.js实现在HTML下直接浏览pdf文档,无需插件即可实现
- 在Drupal7当中如何直接在线浏览PDF文档
- Android使用js方案实现在线浏览pdf文档
- chrome 可以直接将html转为pdf
- 利用pdf.js在手机端网页中直接打开PDF文档
- PHP+JavaScript+HTML实现上传PDF和浏览PDF课件
- pdf.js实际应用pdf文件在手机版浏览
- android 实现PDF浏览
- Java实现HTML代码生成PDF文档
- Java实现HTML代码生成PDF文档
- Java实现HTML代码生成PDF文档
- Java实现HTML代码生成PDF文档
- Java实现HTML代码生成PDF文档
- Java实现HTML代码生成PDF文档
- Java实现HTML代码生成PDF文档
- orgmode文档直接knitr输出HTML或PDF
- java 栈的实现
- Java.lang.IllegalStateException Activity has been destroyed
- 《学习opencv》第四章1,2题(第二题详解,最切题)
- 数据结构:绪论
- 百度地图 之 定位
- pdf.js可以实现在html下直接浏览pdf文档
- Web容器之Listener初始化顺序
- C语言读取及修改简单配置文件内容
- 2 分钟读懂大数据框架 Hadoop 和 Spark 的异同
- photoSwiper图片自适应
- 利用单例模式,解决toast重复弹出的问题
- PHP PHPExcel导入excel表格订单
- 【nRF51822学习教程】SDK框架分析
- gulp sass安装步骤