利用pdf.js開發嵌入pdf顯示,以及利用jquery-ui左右分欄顯示

原來考慮用pdf.js的viewer.html頁面,但怎么用都不方便。因此直接用pdf.js在左側連續顯示pdf所有內容,右側顯示其它相關內容,并且左右寬度可以任意拖動,最終實現效果如圖:

代碼:
<!DOCTYPE html>
<html>
<head>
? ? <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
? ? <title></title>?
? ? <link rel="prefetch" href="/pdfview/test.pdf">
? ? <style>
? ? ? ? #pdfView > canvas {
? ? ? ? ? ? width: 100%;
? ? ? ? }
? ? ? ? .ui-resizable-handle {
? ? ? ? ? ? background-color: #699083;
? ? ? ? ? ? width: 4px !important;
? ? ? ? ? ? right: 0px !important;
? ? ? ? }
? ? ? ? .ui-resizable-e {?
? ? ? ? ? ? width: 4px !important;
? ? ? ? ? ? right: 0px !important;
? ? ? ? }
? ? </style>
</head>
<body style="background-color: #ffffff">
??? ? ? ? <div style="width: 100%; height: 100%;" id="mainDiv">
? ? ? ? ? ? <div style="width: 50%; float: left; height: 100%;" id="resizeBoxLeft">? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? <div id="pdfView" style="width: 100%; height: 100%; overflow: auto; background-color: #ffffff; -webkit-overflow-scrolling: touch;"></div>
? ? ? ? ? ? </div>
? ? ? ? ? ? <div id="resizeBoxRight" style="width: 50%; float: right; height: 100%; background-color: #ffffff; -webkit-overflow-scrolling: touch;">
? ? ? ? ? ? ? ?<!---其它內容--->
? ? ? ? ? ? </div>
? ? ? ? </div>
? ? </form>
? ? <script type="text/javascript" src="/js/jquery/jquery-1.10.2.js"></script>
? ? <script src="/js/jquery/jquery-ui.js"></script>
? ? <link rel="stylesheet" href="/js/jquery/jquery-ui.css">
? ? <script src="build/pdf.js"></script>
? ? <script type="text/javascript">

? ? ? ? $(function ()
? ? ? ? {
? ? ? ? ? ? var url = '../pdfview/test.pdf';
? ? ? ? ? ? PDFJS.workerSrc = 'build/pdf.worker.js';
? ? ? ? ? ? var scale = 1.5;? ? ??
? ? ? ? ? ? //逐頁創建canvas顯示pdf內容? ? ?
? ? ? ? ? ? PDFJS.getDocument(url).then(function (pdf)
? ? ? ? ? ? {? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? var pdfPageCount = pdf.numPages;
? ? ? ? ? ? ? ? var getPageAndRender = function (pageNumber)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? pdf.getPage(pageNumber).then(function (page)
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? var viewport = page.getViewport(scale);
? ? ? ? ? ? ? ? ? ? ? ? var canvas = document.createElement('canvas');
? ? ? ? ? ? ? ? ? ? ? ? canvas.height = viewport.height;
? ? ? ? ? ? ? ? ? ? ? ? canvas.width = viewport.width;
? ? ? ? ? ? ? ? ? ? ? ? var renderContext = {
? ? ? ? ? ? ? ? ? ? ? ? ? ? canvasContext: canvas.getContext('2d'),
? ? ? ? ? ? ? ? ? ? ? ? ? ? viewport: viewport
? ? ? ? ? ? ? ? ? ? ? ? };
? ? ? ? ? ? ? ? ? ? ? ? page.render(renderContext);
? ? ? ? ? ? ? ? ? ? ? ? $("#pdfView").append(canvas);? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? });
? ? ? ? ? ? ? ? ? ? if (pageNumber < pdfPageCount?)
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? pageNumber++;
? ? ? ? ? ? ? ? ? ? ? ? getPageAndRender(pageNumber);
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? getPageAndRender(1);

? ? ? ? ? ? });


? ? ? ? ? ? $("#resizeBoxLeft").resizable({? ? ? ? ? ? ??
? ? ? ? ? ? ? ? handles: 'e',? ? ? ? ? ? ??
? ? ? ? ? ? ? ? start: function() {
? ? ? ? ? ? ? ? ? ? ?$("#resizeBoxRight").hide();//拖動時會影響拖動條向右拖動,所以拖動時隱藏,停止拖動再顯示。(暫時沒想到其它辦法)
? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? stop: function (event, ui)
? ? ? ? ? ? ? ? {
//計算左右兩欄寬度 百分比
? ? ? ? ? ? ? ? ? ? var rightWidth = $(document).width() - ui.size.width;
? ? ? ? ? ? ? ? ? ? $("#resizeBoxLeft").css({ "width": parseInt((ui.size.width / $(document).width()) * 100) + "%", "height": "100%" });
? ? ? ? ? ? ? ? ? ? $("#resizeBoxRight").css({ "width": parseInt((rightWidth / $(document).width()) * 100) + "%", "height": "100%" });
? ? ? ? ? ? ? ? ? ? $("#resizeBoxRight").show();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? });
? ? ? ? });
? ? </script>
</body>
</html>


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/286650.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/286650.shtml
英文地址,請注明出處:http://en.pswp.cn/news/286650.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

十三、制作 iVX音樂分享小程序

功能介紹 通過前幾節的學習&#xff0c;我們對完成一個應用已經有了一些自己的心得。在此再次再制作一個小的音樂小程序應用。該應用一共分為首頁、榜單頁、音樂分享頁和音樂搜索頁。 首頁&#xff1a; 榜單內容頁&#xff1a; 音樂分享頁&#xff1a; 音樂搜索頁&#xff1a…

01_反射_02_反射類的構造方法

【工程截圖】 【Person.java】 //將要被反射的類 package com.Higgin.reflect; import java.util.List;public class Person {private String name"NULL";private int age0;public Person(){System.out.println("構造方法&#xff1a;Person()");}public P…

西北師范大學地理與環境科學學院考研真題匯總(自然地理學)持續更新。。。

西北師范大學地理與環境學科學院研究生入學考試的所有專業(地圖學與地理信息系統、自然地理學、人文地理學、環境科學、環境工程)的專業課均為自然地理學,本文持續收集整理歷年自然地理學考研入學考試真題。 1998年 一、名詞 1. 焚風 2. 徑流模數 3. 趨同適應 4. 墨卡托…

Android之提示type checking has run into a recrusive problem. Easiest workaround: specify types of your

1 問題 寫kotlin的時候錯誤提示如下 type checking has run into a recrusive problem. Easiest workaround: specify types of your declarations explicitly 2 分析 我寫得是遞歸函數如下&#xff0c;錯誤提示就是上面&#xff0c;是因為我們寫返回值&#xff0c;才導致 s…

私有云搭建 OpenStack(centos7.3, centos-release-openstack-ocata)

OpenStack&#xff08;centos7.3,centos-release-openstack-ocata&#xff09;nova&#xff1a;計算節點queue&#xff1a;消息隊列&#xff0c;系統瓶頸所在scheduler&#xff1a;調度機制conductor&#xff1a;更新數據庫cert&#xff08;objectstore&#xff09;&#xff1a…

C# 類繼承中的私有字段都去了哪里?

最近在看 C 類繼承中的字段內存布局&#xff0c;我就很好奇 C# 中的繼承鏈那些 private 字段都哪里去了? 在內存中是如何布局的&#xff0c;畢竟在子類中是無法訪問的。一&#xff1a;舉例說明 為了方便講述&#xff0c;先上一個例子&#xff1a;internal class Program{stati…

大型分布式網站架構技術總結

本文是學習大型分布式網站架構的技術總結。對架構一個高性能&#xff0c;高可用&#xff0c;可伸縮&#xff0c;可擴展的分布式網站進行了概要性描述&#xff0c;并給出一個架構參考。一部分為讀書筆記&#xff0c;一部分是個人經驗總結。對大型分布式網站架構有很好的參考價值…

python 數據分析找到老外最喜歡的中國美食【完整代碼】

一、環境及依賴 語言&#xff1a;python3.8 抓取&#xff1a;selenium 代理&#xff1a;ipide **注&#xff1a;**想要完整代碼的在末尾&#xff0c;注意新手建議慢慢看完。在此提示一下本篇文章的編寫步驟&#xff1a;1.獲取數據、2.翻譯、3.數據清洗、4.切詞詞權重、5.詞云 …

Android之檢查跳轉的Activity是否存在

1、需求 android我們知道經常會跳各種設置頁面,比如設置默認瀏覽器頁面、設置添加快捷方式權限頁面,我們會根據機型進行適配,但是有時候如果找到也找個頁面不try catch操作程序會奔潰 2、檢查跳轉的Activity是否存在代碼實現 public static boolean hasActivity(Context co…

hihoCoder 1257 Snake Carpet(很簡單的構造方法)

2015 ACM / ICPC 北京現場賽 I 題 構造 注意一個小坑&#xff0c;每條蛇的輸出是要從頭到尾輸出的。 還要注意的是&#xff0c;不能開數組去模擬構造過程&#xff0c;然后輸出&#xff0c;那樣會TLE的。 #include <cstdio> #include <cstring> #include <cmath&…

西北師范大學地理與環境科學學院考研真題匯總(高等數學)持續更新。。。

西北師范大學地理與環境學科學院研究生入學考試的所有專業(地圖學與地理信息系統、自然地理學、人文地理學、環境科學、環境工程)的數學均為自主命題,復習參考教材為同濟大學第五版。

操作系統與多核處理器

這篇文章解答了我心中的疑問&#xff0c;那就是操作系統會自動調度cpu資源來處理多進程&#xff0c;多線程的并發。早在上世紀90年代末&#xff0c;就有眾多業界人士呼吁用CMP(單芯片多處理器)技術來替代復雜性較高的單線程CPU。IBM、惠普、Sun等高端服務器廠商&#xff0c;更是…

Java網絡編程二:Socket詳解

Socket又稱套接字&#xff0c;是連接運行在網絡上兩個程序間的雙向通訊的端點。 一、使用Socket進行網絡通信的過程 服務端&#xff1a;服務器程序將一個套接字綁定到一個特定的端口&#xff0c;并通過此套接字等待和監聽客戶端的連接請求。 客戶端&#xff1a;客戶端程序根據你…

Android之提示Could not find com.android.support:appcompat-v7:25.3.1.

1 問題 編譯第三方項目&#xff0c;錯誤提示如下 Could not find com.android.support:appcompat-v7:25.3.1. Required by:project :sampleproject :sample > com.yanzhenjie:permission:1.0.7project :sample > com.yanzhenjie.alertdialog:alertdialog:1.0.1 Search …

在 .NET 中使用 FixedTimeEquals 應對計時攻擊

計時攻擊 在計算機安全中&#xff0c;計時攻擊&#xff08;Timing attack&#xff09;是旁道攻擊 &#xff08;Side-channel attack&#xff09; 的一種&#xff0c;而旁道攻擊是根據計算機處理過程發出的信息進行分析&#xff0c;包括耗時&#xff0c;聲音&#xff0c;功耗等…

解讀大型網站系統架構的演化

解讀大型網站系統架構的演化 大型網站的架構是根據業務需求不斷完善的&#xff0c;根據不同的業務特征會做特定的設計和考慮&#xff0c;本文只是講述一個常規大型網站會涉及的一些技術和手段。作者&#xff1a;李平來源&#xff1a;LEE的博客前言 一個成熟的大型網站&#xff…

【ArcGIS風暴】西北地區氣象臺站年均NDVI與年均氣溫和降水的相關性分析

在研究植被動態變化與氣候的關系時,通常通過計算植被NDVI值與氣溫和降水的相關系數來描述相關性的大小。如下圖所示,計算了西北地區分布的氣象臺站與氣溫和降水的相關性并作圖可視化。 下面詳細說明整個實現過程。 一、計算相關系數 1. 原理分析 通過計算年均N…

python 全解坦克大戰 輔助類 附完整代碼【雛形】

我正在博客之星評選&#xff0c;歡迎投票給我 會從投票人中抽獎機械鍵盤書&#xff0c;中了會私聊地址 投票連接是&#xff1a;https://bbs.csdn.net/topics/603955346 投票連接是&#xff1a;https://bbs.csdn.net/topics/603955346 投票連接是&#xff1a;https://bbs.csdn.…

vc++ mfc中拖動效果的實現 借助于CImageList

拖動是界面編程頻繁使用的一個效果&#xff0c;在windows系統下可謂大行其道。縱觀時下的應用軟件幾乎各個都支持各種各樣拖動的效果&#xff0c;windows7更是把拖動做到了極致。其實說起來拖動的實現也很簡單&#xff0c;對于有句柄的對象都可以通過MoveWindow或SetWindowPos實…

從瀏覽器地址欄輸入url到顯示頁面的步驟

從瀏覽器地址欄輸入url到顯示頁面的步驟(以HTTP為例)- 在瀏覽器地址欄輸入URL- 瀏覽器查看緩存&#xff0c;如果請求資源在緩存中并且新鮮&#xff0c;跳轉到轉碼步驟 - 如果資源未緩存&#xff0c;發起新請求 - 如果已緩存&#xff0c;檢驗是否足夠新鮮&#xff0c;足夠…