officeweb.ftl 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8" />
  5. <title>${file.name}预览</title>
  6. <link rel='stylesheet' href='xlsx/plugins/css/pluginsCss.css' />
  7. <link rel='stylesheet' href='xlsx/plugins/plugins.css' />
  8. <link rel='stylesheet' href='xlsx/css/luckysheet.css' />
  9. <link rel='stylesheet' href='xlsx/assets/iconfont/iconfont.css' />
  10. <script src="xlsx/plugins/js/plugin.js"></script>
  11. <script src="xlsx/luckysheet.umd.js"></script>
  12. <script src="js/watermark.js" type="text/javascript"></script>
  13. <script src="js/base64.min.js" type="text/javascript"></script>
  14. </head>
  15. <#if pdfUrl?contains("http://") || pdfUrl?contains("https://") || pdfUrl?contains("ftp://")>
  16. <#assign finalUrl="${pdfUrl}">
  17. <#else>
  18. <#assign finalUrl="${baseUrl}${pdfUrl}">
  19. </#if>
  20. <script>
  21. /**
  22. * 初始化水印
  23. */
  24. function initWaterMark() {
  25. let watermarkTxt = '${watermarkTxt}';
  26. if (watermarkTxt !== '') {
  27. watermark.init({
  28. watermark_txt: '${watermarkTxt}',
  29. watermark_x: 0,
  30. watermark_y: 0,
  31. watermark_rows: 0,
  32. watermark_cols: 0,
  33. watermark_x_space: ${watermarkXSpace},
  34. watermark_y_space: ${watermarkYSpace},
  35. watermark_font: '${watermarkFont}',
  36. watermark_fontsize: '${watermarkFontsize}',
  37. watermark_color: '${watermarkColor}',
  38. watermark_alpha: ${watermarkAlpha},
  39. watermark_width: ${watermarkWidth},
  40. watermark_height: ${watermarkHeight},
  41. watermark_angle: ${watermarkAngle},
  42. });
  43. }
  44. }
  45. </script>
  46. <style>
  47. * {
  48. margin: 0;
  49. padding: 0;
  50. }
  51. html, body {
  52. height: 100%;
  53. width: 100%;
  54. }
  55. </style>
  56. <body>
  57. <div id="lucky-mask-demo" style="position: absolute;z-index: 1000000;left: 0px;top: 0px;bottom: 0px;right: 0px; background: rgba(255, 255, 255, 0.8); text-align: center;font-size: 40px;align-items:center;justify-content: center;display: none;">加载中</div>
  58. <p style="text-align:center;">
  59. <div id="button-area">
  60. <label><button onclick="tiaozhuan()">跳转HTML预览</button></label>
  61. <button id="confirm-button" onclick="print()">打印</button>
  62. </div>
  63. <div id="luckysheet" style="margin:0px;padding:0px;position:absolute;width:100%;left: 0px;top: 20px;bottom: 0px;outline: none;"></div>
  64. <script src="xlsx/luckyexcel.umd.js"></script>
  65. <script>
  66. function tiaozhuan(){
  67. var test = window.location.href;
  68. test = test.replace(new RegExp("&officePreviewType=xlsx",("gm")),"");
  69. test = test+'&officePreviewType=html';
  70. window.location.href=test;
  71. }
  72. var url = '${finalUrl}';
  73. var baseUrl = '${baseUrl}'.endsWith('/') ? '${baseUrl}' : '${baseUrl}' + '/';
  74. if (!url.startsWith(baseUrl)) {
  75. url = baseUrl + 'getCorsFile?urlPath=' + encodeURIComponent(Base64.encode(url));
  76. }
  77. let mask = document.getElementById("lucky-mask-demo");
  78. function loadText() {
  79. initWaterMark(); // 是否显示水印
  80. var value = url;
  81. var name = '${file.name}';
  82. if(value==""){
  83. return;
  84. }
  85. // mask.style.display = "flex";
  86. LuckyExcel.transformExcelToLuckyByUrl(value, name, function(exportJson, luckysheetfile){
  87. if(exportJson.sheets==null || exportJson.sheets.length==0){
  88. alert("读取excel文件内容失败!");
  89. return;
  90. }
  91. mask.style.display = "none";
  92. window.luckysheet.destroy();
  93. window.luckysheet.create({
  94. container: 'luckysheet', //luckysheet is the container id
  95. lang: "zh",
  96. showtoolbarConfig:{
  97. image: true,
  98. print: true, //关闭打印按钮 启用也不能用 等以后看情况而定
  99. exportXlsx: true, //关闭导出按钮 启用也不能用 等以后看情况而定
  100. },
  101. allowCopy: true, // 是否允许拷贝
  102. showtoolbar: true, // 是否显示工具栏
  103. showinfobar: false, // 是否显示顶部信息栏
  104. // myFolderUrl: "/",//作用:左上角<返回按钮的链接
  105. showsheetbar: true, // 是否显示底部sheet页按钮
  106. showstatisticBar: true, // 是否显示底部计数栏
  107. sheetBottomConfig: true, // sheet页下方的添加行按钮和回到顶部按钮配置
  108. allowEdit: true, // 是否允许前台编辑
  109. enableAddRow: false, // 允许增加行
  110. enableAddCol: false, // 允许增加列
  111. userInfo: false, // 右上角的用户信息展示样式
  112. showRowBar: true, // 是否显示行号区域
  113. showColumnBar: false, // 是否显示列号区域
  114. sheetFormulaBar: false, // 是否显示公式栏
  115. enableAddBackTop: true,//返回头部按钮
  116. forceCalculation: false, //下面是导出插件 默认关闭
  117. data: exportJson.sheets,
  118. title: exportJson.info.name,
  119. userInfo: exportJson.info.name.creator,
  120. });
  121. }, 1000);
  122. }
  123. loadText();
  124. // 打印时,获取luckysheet指定区域html内容,拼接至div,隐藏luckysheet容器并显示打印区域html
  125. function to_print() {
  126. const html = luckysheet.getRangeHtml();
  127. document.querySelector('#print-html').innerHTML = html;
  128. document.querySelector('#print-area').style.display = 'block';
  129. document.querySelector('#button-area').style.display = 'none';
  130. }
  131. </script>
  132. </body>
  133. </html>