|
|
@@ -1,86 +1,67 @@
|
|
|
-var DEFAULT_URL = "";// 重新定义pdf.js的默认pdf路径
|
|
|
-var PDFData = "";
|
|
|
-loadPdfData();
|
|
|
-/**
|
|
|
- * 从服务器获取报表pdf流
|
|
|
- */
|
|
|
-function loadPdfData() {
|
|
|
- var url = getUrl();
|
|
|
- $.ajax({
|
|
|
- type : "post",
|
|
|
- async : false,
|
|
|
- mimeType : 'text/plain; charset=x-user-defined',
|
|
|
- url : url,
|
|
|
- success : function(data) {
|
|
|
- // 服务器未成功填充报表
|
|
|
- if (data == null || data.toString().length < 1) {
|
|
|
- return;
|
|
|
- }
|
|
|
- var result = JSON.parse(data);
|
|
|
- // 服务器端pdf流经过base64编码,需要进行解码
|
|
|
- PDFData = base64_decode(result.data);
|
|
|
- }
|
|
|
- });
|
|
|
- var rawLength = PDFData.length;
|
|
|
- // 转换成pdf.js能直接解析的Uint8Array类型,见pdf.js-4068
|
|
|
- var array = new Uint8Array(new ArrayBuffer(rawLength));
|
|
|
- for (i = 0; i < rawLength; i++) {
|
|
|
- array[i] = PDFData.charCodeAt(i) & 0xff;
|
|
|
- }
|
|
|
- DEFAULT_URL = array;
|
|
|
-}
|
|
|
+var PDFData, DEFAULT_URL;
|
|
|
+
|
|
|
+var pageIndex = 1, pageSize = 1;// 当前页码,页码总数
|
|
|
+
|
|
|
+// 获取链接参数
|
|
|
+var getParameter = function(key) {
|
|
|
+ var reg = new RegExp("(^|&)" + key + "=([^&]*)(&|$)");
|
|
|
+ var r = window.location.search.substr(1).match(reg);
|
|
|
+ if (r != null)
|
|
|
+ return unescape(r[2]);
|
|
|
+ return null;
|
|
|
+};
|
|
|
|
|
|
-/**
|
|
|
- * 拼接服务器端获取pdf流的url
|
|
|
- *
|
|
|
- * @returns {String}
|
|
|
- */
|
|
|
-function getUrl() {
|
|
|
+// 获取url
|
|
|
+var getUrl = function(page) {
|
|
|
var userName = getParameter("userName");
|
|
|
var reportName = getParameter("reportName");
|
|
|
var whereCondition = getParameter("whereCondition");
|
|
|
var otherParameters = getParameter("otherParameters");
|
|
|
- var pageIndex = getParameter("pageIndex");
|
|
|
+ pageIndex = page || getParameter("pageIndex") || 1;
|
|
|
|
|
|
- var url = "print/loadPdfData?";
|
|
|
- if (userName != null && userName != "") {
|
|
|
- url += "userName=" + userName;
|
|
|
+ var previewUrl = "print/loadPdfData?";
|
|
|
+ if (userName) {
|
|
|
+ previewUrl += "userName=" + userName;
|
|
|
}
|
|
|
- if (reportName != null && reportName != "") {
|
|
|
- url += "&reportName=" + reportName;
|
|
|
+ if (reportName) {
|
|
|
+ previewUrl += "&reportName=" + reportName;
|
|
|
}
|
|
|
- if (whereCondition != null && whereCondition != "") {
|
|
|
- url += "&whereCondition=" + whereCondition;
|
|
|
+ if (whereCondition) {
|
|
|
+ previewUrl += "&whereCondition=" + whereCondition;
|
|
|
}
|
|
|
- if (otherParameters != null && otherParameters != "") {
|
|
|
- url += "&otherParameters=" + otherParameters;
|
|
|
+ if (otherParameters) {
|
|
|
+ previewUrl += "&otherParameters=" + otherParameters;
|
|
|
}
|
|
|
- if (pageIndex != null && pageIndex != "") {
|
|
|
- url += "&pageIndex=" + pageIndex;
|
|
|
+ if (pageIndex) {
|
|
|
+ previewUrl += "&pageIndex=" + pageIndex;
|
|
|
}
|
|
|
- return url;
|
|
|
-}
|
|
|
-/**
|
|
|
- * 从地址中获取参数
|
|
|
- *
|
|
|
- * @param key
|
|
|
- * 参数名
|
|
|
- * @returns 参数值
|
|
|
- */
|
|
|
-function getParameter(key) {
|
|
|
- var reg = new RegExp("(^|&)" + key + "=([^&]*)(&|$)");
|
|
|
- var r = window.location.search.substr(1).match(reg);
|
|
|
- if (r != null)
|
|
|
- return unescape(r[2]);
|
|
|
- return null;
|
|
|
+ return previewUrl;
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * base64解码
|
|
|
- *
|
|
|
- * @param {Object}
|
|
|
- * str
|
|
|
- */
|
|
|
+// 获取数据
|
|
|
+function loadData(page, callback) {
|
|
|
+ $.ajax({
|
|
|
+ type: "get",
|
|
|
+ async: false,
|
|
|
+ url: page ? getUrl(page) : getUrl(),
|
|
|
+ success: function(data) {
|
|
|
+ pageSize = data.pageSize;
|
|
|
+ PDFData = base64_decode(data.data);
|
|
|
+ var rawLength = PDFData.length;
|
|
|
+ //转换成pdf.js能直接解析的Uint8Array类型,见pdf.js-4068
|
|
|
+ var array = new Uint8Array(new ArrayBuffer(rawLength));
|
|
|
+ for(var i = 0; i < rawLength; i++) {
|
|
|
+ array[i] = PDFData.charCodeAt(i) & 0xff;
|
|
|
+ }
|
|
|
+ DEFAULT_URL = array;
|
|
|
+ callback && callback.call();
|
|
|
+ }
|
|
|
+ });
|
|
|
+};
|
|
|
+
|
|
|
+loadData();
|
|
|
+
|
|
|
+// base64 解码
|
|
|
function base64_decode(str) {
|
|
|
var c1, c2, c3, c4;
|
|
|
var base64DecodeChars = new Array(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
|
@@ -136,4 +117,4 @@ function base64_decode(str) {
|
|
|
string += String.fromCharCode(((c3 & 0x03) << 6) | c4)
|
|
|
}
|
|
|
return string;
|
|
|
-}
|
|
|
+}
|