|
|
@@ -0,0 +1,108 @@
|
|
|
+//pdf文件的路径
|
|
|
+var url;
|
|
|
+var pdfDoc = null;
|
|
|
+var pageIndex = 1;
|
|
|
+var pageSize = 1;
|
|
|
+var scale = 1;
|
|
|
+var canvas = document.getElementById('the-canvas');
|
|
|
+var ctx = canvas.getContext('2d');
|
|
|
+// 隐藏的iframe,用于加载pdf,以便打印(pdf.js自带的打印有问题)
|
|
|
+var hiddenframe = document.getElementById("hiddenframe");
|
|
|
+var winHeight;
|
|
|
+var winWidth;
|
|
|
+
|
|
|
+getWindowWidth();
|
|
|
+loadPdfData();
|
|
|
+getDocument();
|
|
|
+
|
|
|
+// 上页
|
|
|
+$("#prev").click(function() {
|
|
|
+ if (pageIndex <= 1) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 获取前一页的pdf
|
|
|
+ url = url.replace(pageIndex + ".pdf", (--pageIndex) + ".pdf");
|
|
|
+ getDocument();
|
|
|
+});
|
|
|
+
|
|
|
+// 下页
|
|
|
+$("#next").click(function() {
|
|
|
+ if (pageIndex >= pageSize) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ url = url.replace(pageIndex + ".pdf", (++pageIndex) + ".pdf");
|
|
|
+ getDocument();
|
|
|
+});
|
|
|
+
|
|
|
+// 获取窗口宽度
|
|
|
+function getWindowWidth() {
|
|
|
+ if (window.innerWidth)
|
|
|
+ winWidth = window.innerWidth;
|
|
|
+ else if ((document.body) && (document.body.clientWidth))
|
|
|
+ winWidth = document.body.clientWidth;
|
|
|
+ // 获取窗口高度
|
|
|
+ if (window.innerHeight)
|
|
|
+ winHeight = window.innerHeight;
|
|
|
+ else if ((document.body) && (document.body.clientHeight))
|
|
|
+ winHeight = document.body.clientHeight;
|
|
|
+ // 通过深入 Document 内部对 body 进行检测,获取窗口大小
|
|
|
+ if (document.documentElement && document.documentElement.clientHeight
|
|
|
+ && document.documentElement.clientWidth) {
|
|
|
+ winHeight = document.documentElement.clientHeight;
|
|
|
+ winWidth = document.documentElement.clientWidth;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// 发送请求,服务器端进行填充报表、生成pdf文件等操作
|
|
|
+function loadPdfData() {
|
|
|
+ var loadPdfDataUrl = "print/loadPdfData" + window.location.search;
|
|
|
+ pageIndex = getParameter("pageIndex");
|
|
|
+ if (!pageIndex) {
|
|
|
+ pageIndex = 1;
|
|
|
+ loadPdfDataUrl = loadPdfDataUrl + "&pageIndex=" + pageIndex;
|
|
|
+ }
|
|
|
+ $.ajax({
|
|
|
+ type : "get",
|
|
|
+ async : false,
|
|
|
+ url : loadPdfDataUrl,
|
|
|
+ success : function(data) {
|
|
|
+ var pdfPath = data.pdfPath;
|
|
|
+ hiddenframe.src = pdfPath;
|
|
|
+ url = pdfPath.replace(".pdf", "_" + pageIndex + ".pdf");
|
|
|
+ pageSize = data.pageSize;
|
|
|
+ document.getElementById('page_size').textContent = pageSize;
|
|
|
+ }
|
|
|
+ });
|
|
|
+};
|
|
|
+
|
|
|
+// 下载pdf文件
|
|
|
+function getDocument() {
|
|
|
+ PDFJS.getDocument(url).then(function(pdfDoc_) {
|
|
|
+ // 更新页码
|
|
|
+ document.getElementById('page_index').textContent = pageIndex;
|
|
|
+ pdfDoc = pdfDoc_;
|
|
|
+ // Initial/first page rendering
|
|
|
+ renderPage();
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+// Get page info from document, resize canvas accordingly, and render page.
|
|
|
+function renderPage() {
|
|
|
+ // 每个pdf只有一页
|
|
|
+ pdfDoc.getPage(1).then(function(page) {
|
|
|
+ var viewport = page.getViewport(scale);
|
|
|
+ var viewportWidth = viewport.width;
|
|
|
+ // 自动调整宽度为窗口宽度的0.8倍
|
|
|
+ scale = scale * 0.8 / (viewportWidth / winWidth);
|
|
|
+ viewport = page.getViewport(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);
|
|
|
+ });
|
|
|
+}
|