1. 程式人生 > >pdf用turn翻頁顯示

pdf用turn翻頁顯示

demo是一個菜鳥寫的

主要是為了公司在建專案中,需要用將pdf像電子書一樣翻頁的效果,頁面都是在mui裡面寫的,

必要的js

<script src="../js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<script src="js/modernizr.2.5.3.min.js" type="text/javascript" charset="utf-8"></script>
<script src="js/pdf.js" type="text/javascript" charset="utf-8"></script>

還需要 

js/pdf.worker.js

turn.min.js

自己可以在網下載

找不到可以點這裡       pdf用到的js

整個deme的顯示的下載路徑 pdf翻頁demo

下面是整個h5,那些css 可以自己寫 req。js 和muishow 都是自己封裝的工具,主要是用於ajax

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
		<link href="../css/mui.min.css" rel="stylesheet" />
		<link rel="stylesheet" type="text/css" href="../css/beiyong.css" />
		<link rel="stylesheet" type="text/css" href="../css/html.css"/>
		<style type="text/css">
			.main {
				background-color: burlywood;
				overflow: hidden;
				margin: auto;
				margin-top: 0.625em;
			}
			.container{
				display: flex;
				justify-content: center;
				align-items: center;
				margin-top: 0.625em;
			}
			.page{
				background-color: white;
			}
			.shouye{
				padding: 15%;
				height: 100%;
				position:relative;
			}
			.bt{
				width: 100%;	
				text-align: right;		
				font-family: "arial narrow";	
			}
			.xian{
				width: 100%;
				display: flex;
				justify-content: flex-end;
			}
			.fg{
				width: 30%;
				height: 6px;
				background-color: #000000;
			}
			.main-content{
				width: 100%;
				height: 60%;
				font-size: 12px;
			}
			.footpage{
				position: absolute;
				right:15%;
				bottom: 10%;
			}
			.flipbook>div{
				width: 100%;
				height: 100%;
			}
		</style>
		<title></title>
	</head>
	<body>
		<header class="mui-bar mui-bar-nav hbg">
			<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
			<h1 class="mui-title hbg">書籍</h1>
		</header>
		<div class="mui-content">
			<div class="flipbook-viewport">
			<div class="container">
				<div class="flipbook">
				</div>
			</div>
		</div>
		</div>
		<script src="../js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
		<script src="../js/req.js" type="text/javascript" charset="utf-8"></script>
		<script src="../js/mui.min.js"></script>
		<script src="../js/muishow.js" type="text/javascript" charset="utf-8"></script>
		<script src="js/modernizr.2.5.3.min.js" type="text/javascript" charset="utf-8"></script>
		<script src="js/pdf.js" type="text/javascript" charset="utf-8"></script>
		<script type="text/javascript">
			
			let w1 = document.body.clientWidth - 20;
			let z = (297 / 210).toFixed(3);
			var flipbook = $('.flipbook');
			var pagestr = 1,bid= 2, scale = 0.8;
			//自己pdf的路徑,從後臺獲取的還沒測試
			var url = '粗茶淡飯也是幸福時光.pdf';
			window.onload = function(){
				getpdf(url);
			}
			
			function getpdf(url){
				//自己專案中worker.js的路徑
				pdfjsLib.workerSrc = 'js/pdf.worker.js';
				var loadingTask = pdfjsLib.getDocument(url);
				loadingTask.promise.then(function(pdf) {
					//根據總頁數新增固定的div和canvas
					console.log("總頁數",pdf.numPages);
					for (let i = 1; i <= pdf.numPages;i++) {
						let id = 'canvaspage' + i;
						let div = document.createElement('div');
                        div.innerHTML = '<canvas id="' + id + '"></canvas>';
						flipbook.append(div);
						setcanvas(i,pdf,id);
					}
					
					//呼叫turn
					yepnope({
						test : Modernizr.csstransforms,
						yep: ['lib/turn.min.js'],
						complete: loadApp
					});
					
			 })
			}
			//將將pdf新增到canvas裡面
			function setcanvas(i,pdf,id){
				pdf.getPage(i).then(function(page) {
					    var viewport = page.getViewport(scale);
                        let canvas = document.getElementById(id);
					    let context = canvas.getContext('2d');
						 canvas.width = w1;
					     canvas.height = w1*z;
					    	let renderContext = {
					      canvasContext: context,
					      viewport: viewport
					    };
					   page.render(renderContext);
				})
			}
			//自己寫的獲取資料的函式  
			function getbooklist(){
				let data = {
					url:"/api/Book/book_article",
					data:{
						access_token : acctoken()||"",
						page:pagestr,
						bid:bid,
					}
				};
				ajax(data,function(res){
					console.log("書本文章列表",res);
					/*if(res.code == -1){
						mui.toast(res.message);
					}*/
				})
			}
			//用於turn.js
			function loadApp() {
				$('.flipbook').turn({
						width:w1,	//翻頁檢視的寬度
						height:w1*z,//高度
						elevation: 50,
						gradients: true,
						display: 'single',//單頁顯示
						autoCenter: false
				});
			}


			
		
			

		</script>
	</body>

</html>