導航:首頁 > 文檔加密 > 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
平板加密手機後怎麼關閉 瀏覽:566
流媒體伺服器應該注意什麼 瀏覽:536
d8命令編譯 瀏覽:964
壓縮包解壓需要多少空間 瀏覽:145
如何查找app屬性 瀏覽:388
android人臉識別技術 瀏覽:320
pc104編程 瀏覽:335
二維碼反編譯破解推廣 瀏覽:682
修改伺服器的mac地址 瀏覽:528
好玩的編程軟體 瀏覽:898
編程語言創始人有錢嗎 瀏覽:804
短視頻app怎麼獲客 瀏覽:15
查看雲伺服器的應用 瀏覽:435
javadump工具 瀏覽:563
程序員16g 瀏覽:444
程序員沒有辦法成為top怎麼辦 瀏覽:218