You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
175 lines
5.7 KiB
175 lines
5.7 KiB
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PDFView.aspx.cs" Inherits="Swift.web.Remit.PDFView" %>
|
|
|
|
<!DOCTYPE html>
|
|
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head runat="server">
|
|
<title></title>
|
|
<script src="../js/pdf/pdf.js"></script>
|
|
<script src="../js/pdf/pdf.worker.js"></script>
|
|
<style type="text/css">
|
|
#the-canvas {
|
|
border: 1px solid black;
|
|
direction: ltr;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<form id="form1" runat="server">
|
|
<div>
|
|
<input type="button" id="prev" value="Previous" />
|
|
<input type="button" id="next" value="Next" />
|
|
|
|
<span>Page: <span id="page_num"></span>/ <span id="page_count"></span></span>
|
|
</div>
|
|
|
|
<canvas id="the-canvas"></canvas>
|
|
</form>
|
|
<script language="JavaScript">
|
|
/**
|
|
* Disable right-click of mouse, F12 key, and save key combinations on page
|
|
* By Arthur Gareginyan (https://www.arthurgareginyan.com)
|
|
* For full source code, visit https://mycyberuniverse.com
|
|
*/
|
|
window.onload = function () {
|
|
document.addEventListener("contextmenu", function (e) {
|
|
e.preventDefault();
|
|
}, false);
|
|
document.addEventListener("keydown", function (e) {
|
|
//document.onkeydown = function(e) {
|
|
// "I" key
|
|
if (e.ctrlKey && e.shiftKey && e.keyCode == 73) {
|
|
disabledEvent(e);
|
|
}
|
|
// "J" key
|
|
if (e.ctrlKey && e.shiftKey && e.keyCode == 74) {
|
|
disabledEvent(e);
|
|
}
|
|
// "S" key + macOS
|
|
if (e.keyCode == 83 && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {
|
|
disabledEvent(e);
|
|
}
|
|
// "U" key
|
|
if (e.ctrlKey && e.keyCode == 85) {
|
|
disabledEvent(e);
|
|
}
|
|
// "F12" key
|
|
if (event.keyCode == 123) {
|
|
disabledEvent(e);
|
|
}
|
|
}, false);
|
|
function disabledEvent(e) {
|
|
if (e.stopPropagation) {
|
|
e.stopPropagation();
|
|
} else if (window.event) {
|
|
window.event.cancelBubble = true;
|
|
}
|
|
e.preventDefault();
|
|
return false;
|
|
}
|
|
};
|
|
</script>
|
|
|
|
<script type="text/javascript">
|
|
|
|
// If absolute URL from the remote server is provided, configure the CORS
|
|
// header on that server.
|
|
var url = sessionStorage.getItem("fileLoadPath");
|
|
|
|
// Loaded via <script> tag, create shortcut to access PDF.js exports.
|
|
var pdfjsLib = window['pdfjs-dist/build/pdf'];
|
|
|
|
// The workerSrc property shall be specified.
|
|
pdfjsLib.GlobalWorkerOptions.workerSrc = '//mozilla.github.io/pdf.js/build/pdf.worker.js';
|
|
|
|
var pdfDoc = null,
|
|
pageNum = 1,
|
|
pageRendering = false,
|
|
pageNumPending = null,
|
|
scale = 1.3,
|
|
canvas = document.getElementById('the-canvas'),
|
|
ctx = canvas.getContext('2d');
|
|
|
|
/**
|
|
* Get page info from document, resize canvas accordingly, and render page.
|
|
* @param num Page number.
|
|
*/
|
|
function renderPage(num) {
|
|
pageRendering = true;
|
|
// Using promise to fetch the page
|
|
pdfDoc.getPage(num).then(function (page) {
|
|
var viewport = page.getViewport({ scale: scale });
|
|
canvas.height = viewport.height;
|
|
canvas.width = viewport.width;
|
|
|
|
// Render PDF page into canvas context
|
|
var renderContext = {
|
|
canvasContext: ctx,
|
|
viewport: viewport
|
|
};
|
|
var renderTask = page.render(renderContext);
|
|
|
|
// Wait for rendering to finish
|
|
renderTask.promise.then(function () {
|
|
pageRendering = false;
|
|
if (pageNumPending !== null) {
|
|
// New page rendering is pending
|
|
renderPage(pageNumPending);
|
|
pageNumPending = null;
|
|
}
|
|
});
|
|
});
|
|
|
|
// Update page counters
|
|
document.getElementById('page_num').textContent = num;
|
|
}
|
|
|
|
/**
|
|
* If another page rendering in progress, waits until the rendering is
|
|
* finised. Otherwise, executes rendering immediately.
|
|
*/
|
|
function queueRenderPage(num) {
|
|
if (pageRendering) {
|
|
pageNumPending = num;
|
|
} else {
|
|
renderPage(num);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Displays previous page.
|
|
*/
|
|
function onPrevPage() {
|
|
if (pageNum <= 1) {
|
|
return;
|
|
}
|
|
pageNum--;
|
|
queueRenderPage(pageNum);
|
|
}
|
|
document.getElementById('prev').addEventListener('click', onPrevPage);
|
|
|
|
/**
|
|
* Displays next page.
|
|
*/
|
|
function onNextPage() {
|
|
if (pageNum >= pdfDoc.numPages) {
|
|
return;
|
|
}
|
|
pageNum++;
|
|
queueRenderPage(pageNum);
|
|
}
|
|
document.getElementById('next').addEventListener('click', onNextPage);
|
|
|
|
/**
|
|
* Asynchronously downloads PDF.
|
|
*/
|
|
pdfjsLib.getDocument(url).promise.then(function (pdfDoc_) {
|
|
pdfDoc = pdfDoc_;
|
|
document.getElementById('page_count').textContent = pdfDoc.numPages;
|
|
|
|
// Initial/first page rendering
|
|
renderPage(pageNum);
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|