|
@@ -99,77 +99,18 @@ $("#print").click(function() {
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
// 下载pdf
|
|
// 下载pdf
|
|
|
-$("#downloadPdf").click(
|
|
|
|
|
- function() {
|
|
|
|
|
- if (!pdfDoc) {
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
- showLoading();
|
|
|
|
|
- // 检查文件状态,直到其可用
|
|
|
|
|
- var valid = getGeneratedPdfOrXlsInformation('pdf').valid;
|
|
|
|
|
- // 文件除了要保证有效(存在并且未过有效期),还要确保hiddenFrameLoaded不能为真,因为存在下列情况
|
|
|
|
|
- // 1.hiddenFrameLoaded不为真,即此时刚进入页面,文档尚未生成,需要等待其生成;
|
|
|
|
|
- // 2.hiddenFrameLoaded为真,页面加载成功后并未关闭,闲置了一段时间,再次点击打印,
|
|
|
|
|
- // 此时文件可能已经过期,需要立即请求下载(后台此时会重新生成),不能处于等待状态;
|
|
|
|
|
- if (!valid && !hiddenFrameLoaded) {
|
|
|
|
|
- console.log(new Date().format() + " ---- 文件正在生成,请等待");
|
|
|
|
|
- console.log(new Date().format()
|
|
|
|
|
- + " ---- subscribed wholePdfGeneratedSignal");
|
|
|
|
|
- $.subscribe("wholePdfGeneratedSignal", downloadPdf);
|
|
|
|
|
- waitWholePdfGenerated();
|
|
|
|
|
- // setTimeout(
|
|
|
|
|
- // "valid =
|
|
|
|
|
- // getGeneratedPdfOrXlsInformation('pdf').valid;console.log(valid)",
|
|
|
|
|
- // 1000);
|
|
|
|
|
- // valid = getGeneratedPdfOrXlsInformation("pdf").valid;
|
|
|
|
|
- // sleep(1000);
|
|
|
|
|
- } else {
|
|
|
|
|
- hideLoading();
|
|
|
|
|
- window.location = downloadUrl("pdf");
|
|
|
|
|
- }
|
|
|
|
|
- });
|
|
|
|
|
-
|
|
|
|
|
-/**
|
|
|
|
|
- * 下载文件
|
|
|
|
|
- */
|
|
|
|
|
-function downloadPdf() {
|
|
|
|
|
- hideLoading();
|
|
|
|
|
- console.log(new Date().format()
|
|
|
|
|
- + " ---- received and unsubscribe wholePdfGeneratedSignal");
|
|
|
|
|
- $.unsubscribe("wholePdfGeneratedSignal", downloadPdf);
|
|
|
|
|
- console.log(new Date().format() + " ---- start print");
|
|
|
|
|
- window.location = downloadUrl("pdf");
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-/**
|
|
|
|
|
- * 每隔一定时间查询文件状态,直到文件有效
|
|
|
|
|
- */
|
|
|
|
|
-function waitWholePdfGenerated() {
|
|
|
|
|
- var valid = getGeneratedPdfOrXlsInformation("pdf").valid;
|
|
|
|
|
- if (!valid) {
|
|
|
|
|
- console.log(new Date().format() + " ---- 文件还未生成");
|
|
|
|
|
- console.log(new Date().format() + " ---- wait 3000ms")
|
|
|
|
|
- setTimeout("waitWholePdfGenerated()", 3000);
|
|
|
|
|
- } else {
|
|
|
|
|
- console.log(new Date().format() + " ---- 文件已生成");
|
|
|
|
|
- console.log(new Date().format()
|
|
|
|
|
- + " ---- published wholePdfGeneratedSignal");
|
|
|
|
|
- $.publish("wholePdfGeneratedSignal", waitWholePdfGenerated);
|
|
|
|
|
|
|
+$("#downloadPdf").click(function() {
|
|
|
|
|
+ if (!pdfDoc) {
|
|
|
|
|
+ return;
|
|
|
}
|
|
}
|
|
|
-}
|
|
|
|
|
|
|
+ window.location = downloadUrl("pdf");
|
|
|
|
|
+});
|
|
|
|
|
|
|
|
// 下载纯数据excel
|
|
// 下载纯数据excel
|
|
|
$("#downloadExcelWithOnlyData").click(function() {
|
|
$("#downloadExcelWithOnlyData").click(function() {
|
|
|
if (!pdfDoc) {
|
|
if (!pdfDoc) {
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
- showLoading();
|
|
|
|
|
- var size;
|
|
|
|
|
- while (!size) {
|
|
|
|
|
- size = getGeneratedPdfOrXlsInformation("xls").size;
|
|
|
|
|
- sleep(1000);
|
|
|
|
|
- }
|
|
|
|
|
- hideLoading();
|
|
|
|
|
window.location = downloadUrl("xls_with_only_data");
|
|
window.location = downloadUrl("xls_with_only_data");
|
|
|
});
|
|
});
|
|
|
|
|
|
|
@@ -216,36 +157,8 @@ function printPdf() {
|
|
|
alert("文件过大,建议先下载到本地,再进行打印");
|
|
alert("文件过大,建议先下载到本地,再进行打印");
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
- // 判断是否存在
|
|
|
|
|
- // var size;
|
|
|
|
|
- // while (!size) {
|
|
|
|
|
- // size = getGeneratedPdfOrXlsInformation("pdf").valid;
|
|
|
|
|
- // sleep(1000);
|
|
|
|
|
- // }
|
|
|
|
|
- if (!hiddenFrameLoaded) {
|
|
|
|
|
- showLoading();
|
|
|
|
|
- console.log(new Date().format() + " ---- 需打印的文档未生成,正在生成文档");
|
|
|
|
|
- // 订阅信号 "hiddenFrameLoadedSignal",等待整个pdf加载完成
|
|
|
|
|
- console.log(new Date().format()
|
|
|
|
|
- + " ---- subscribed hiddenFrameLoadedSignal");
|
|
|
|
|
- $.subscribe("hiddenFrameLoadedSignal", print);
|
|
|
|
|
- } else {
|
|
|
|
|
- hideLoading();
|
|
|
|
|
- alert("正在加载文档");
|
|
|
|
|
- console.log(new Date().format() + " ---- start print...");
|
|
|
|
|
- hiddenFrame.contentWindow.print();
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-/**
|
|
|
|
|
- * 调用浏览器的打印方法并取消订阅信号 "hiddenFrameLoadedSignal"
|
|
|
|
|
- */
|
|
|
|
|
-function print() {
|
|
|
|
|
- console.log(new Date().format()
|
|
|
|
|
- + " ---- received and unsubscribe hiddenFrameLoadedSignal");
|
|
|
|
|
- $.unsubscribe("hiddenFrameLoadedSignal", print);
|
|
|
|
|
|
|
+ console.log(new Date().format() + " ---- start print...");
|
|
|
hiddenFrame.contentWindow.print();
|
|
hiddenFrame.contentWindow.print();
|
|
|
- alert("文档加载完成");
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -347,39 +260,6 @@ function loadWholePdf() {
|
|
|
hiddenFrameLoaded = true;
|
|
hiddenFrameLoaded = true;
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- var hiddenFrameOnload = function() {
|
|
|
|
|
- // 加载失败时(pdf文件不存在,404错误),title不为null
|
|
|
|
|
- // 此时等待一段时间再重新加载
|
|
|
|
|
- if (hiddenFrame.contentDocument.title) {
|
|
|
|
|
- console.log(new Date().format() + " ---- file not exist");
|
|
|
|
|
- console.log(new Date().format() + " ---- hiddenFrame load failed");
|
|
|
|
|
- // 等待时间为10*页数 ms(需要在500ms~5000ms之间)
|
|
|
|
|
- var waitTime = pageSize * 10;
|
|
|
|
|
- waitTime = waitTime > 5000 ? 5000 : waitTime;
|
|
|
|
|
- waitTime = waitTime < 500 ? 500 : waitTime;
|
|
|
|
|
- console.log(new Date().format() + " ---- wait " + waitTime + "ms");
|
|
|
|
|
- setTimeout("hiddenFrame.src = wholePdfPath", waitTime);
|
|
|
|
|
- console.log(new Date().format() + " ---- hiddenFrame reloading...");
|
|
|
|
|
-
|
|
|
|
|
- } else {
|
|
|
|
|
- console.log(new Date().format()
|
|
|
|
|
- + " ---- hiddenFrame load successed");
|
|
|
|
|
- hiddenFrameLoaded = true;
|
|
|
|
|
- console.log(new Date().format()
|
|
|
|
|
- + " ---- publish hiddenFrameLoadedSignal");
|
|
|
|
|
- // 发布信号 "hiddenFrameLoadedSignal"
|
|
|
|
|
- $.publish("hiddenFrameLoadedSignal");
|
|
|
|
|
- }
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- // 绑定onload事件
|
|
|
|
|
- // 低版本Chrome浏览器的onload事件
|
|
|
|
|
- if (hiddenFrame.attachEvent) {
|
|
|
|
|
- hiddenFrame.attachEvent("onload", hiddenFrameOnload)
|
|
|
|
|
- } else {
|
|
|
|
|
- hiddenFrame.onload = hiddenFrameOnload;
|
|
|
|
|
- }
|
|
|
|
|
// 开始加载
|
|
// 开始加载
|
|
|
console.log(new Date().format() + " ---- hiddenFrame loading...");
|
|
console.log(new Date().format() + " ---- hiddenFrame loading...");
|
|
|
hiddenFrame.src = wholePdfPath;
|
|
hiddenFrame.src = wholePdfPath;
|
|
@@ -486,29 +366,6 @@ function changeTextOfSelectScale() {
|
|
|
hiddenOption.hidden = true;
|
|
hiddenOption.hidden = true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-/**
|
|
|
|
|
- * 获取生成的pdf或者xls的信息
|
|
|
|
|
- *
|
|
|
|
|
- * @param pdfOrXls
|
|
|
|
|
- * pdf或者xls
|
|
|
|
|
- */
|
|
|
|
|
-function getGeneratedPdfOrXlsInformation(pdfOrXls) {
|
|
|
|
|
- var data;
|
|
|
|
|
- $.ajax({
|
|
|
|
|
- type : "get",
|
|
|
|
|
- async : false,
|
|
|
|
|
- url : "print/getGeneratedPdfOrXlsInformation" + window.location.search
|
|
|
|
|
- + "&pdfOrXls=" + pdfOrXls,
|
|
|
|
|
- success : function(result) {
|
|
|
|
|
- console
|
|
|
|
|
- .log(new Date().format() + " ---- "
|
|
|
|
|
- + JSON.stringify(result));
|
|
|
|
|
- data = result;
|
|
|
|
|
- }
|
|
|
|
|
- });
|
|
|
|
|
- return data;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
/**
|
|
/**
|
|
|
* 显示正在载入的动画
|
|
* 显示正在载入的动画
|
|
|
*/
|
|
*/
|