tiff.ftl 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8"/>
  5. <title>Tiff 图片预览</title>
  6. <#include "*/commonHeader.ftl">
  7. <link rel="stylesheet" href="css/viewer.min.css">
  8. <script src="js/UTIF.js"></script>
  9. <script src="js/base64.min.js" type="text/javascript"></script>
  10. <#if currentUrl?contains("http://") || currentUrl?contains("https://") || currentUrl?contains("file://")|| currentUrl?contains("ftp://")>
  11. <#assign finalUrl="${currentUrl}">
  12. <#else>
  13. <#assign finalUrl="${baseUrl}${currentUrl}">
  14. </#if>
  15. </head>
  16. <style type="text/css">
  17. body{ text-align:center}
  18. img{max-width: 100%;
  19. margin:0 auto;
  20. border: 2px solid #ddd;
  21. }
  22. </style>
  23. <body>
  24. <#if "false" == pdfDownloadDisable>
  25. <!--endprint-->
  26. <button type="button" onclick="doPrint()">打印</button>
  27. <!--startprint-->
  28. </#if>
  29. <div id="tiff"></div>
  30. <script>
  31. String.prototype.startsWithh = function(str) {
  32. var reg = new RegExp("^" + str);
  33. return reg.test(this);
  34. }
  35. String.prototype.endsWithh = function(str) {
  36. var reg = new RegExp(str + "$");
  37. return reg.test(this);
  38. }
  39. var url = '${finalUrl}';
  40. var baseUrl = '${baseUrl}'.endsWithh('/') ? '${baseUrl}' : '${baseUrl}' + '/';
  41. if (!url.startsWithh(baseUrl)) {
  42. url = baseUrl + 'getCorsFile?urlPath=' + encodeURIComponent(Base64.encode(url));
  43. }
  44. var myp = document.getElementById('tiff');
  45. let pages;
  46. let p;
  47. let resp;
  48. function loadOne(e) {
  49. UTIF.decodeImage(resp, pages[p]);
  50. const rgba = UTIF.toRGBA8(pages[p]);
  51. const canvas = document.createElement('canvas');
  52. canvas.width = pages[p].width;
  53. canvas.height = pages[p].height;
  54. const ctx = canvas.getContext('2d');
  55. var imageData = null;
  56. try{
  57. imageData = ctx.createImageData(canvas.width, canvas.height);
  58. } catch(e){
  59. if (e.message.indexOf("CanvasRenderingContext2D"))
  60. {
  61. var imgObjj = new Image();
  62. imgObjj.src = url;
  63. myp.appendChild(imgObjj);
  64. console.log("错误:" + e);
  65. return;
  66. }
  67. console.log("错误:" + e);
  68. var html = "";
  69. html += "<head>";
  70. html += " <meta charset=\"utf-8\"/>";
  71. html += " <style type=\"text/css\">";
  72. html += " body {";
  73. html += " margin: 0 auto;";
  74. html += " width: 900px;";
  75. html += " background-color: #CCB;";
  76. html += " }";
  77. html += "";
  78. html += " .container {";
  79. html += " width: 700px;";
  80. html += " height: 700px;";
  81. html += " margin: 0 auto;";
  82. html += " }";
  83. html += "";
  84. html += " img {";
  85. html += " width: auto;";
  86. html += " height: auto;";
  87. html += " max-width: 100%;";
  88. html += " max-height: 100%;";
  89. html += " padding-bottom: 36px;";
  90. html += " }";
  91. html += "";
  92. html += " span {";
  93. html += " display: block;";
  94. html += " font-size: 20px;";
  95. html += " color: blue;";
  96. html += " }";
  97. html += " </style>";
  98. html += "</head>";
  99. html += "";
  100. html += "<body>";
  101. html += "<div class=\"container\">";
  102. html += " <img src=\"images/sorry.jpg\"/>";
  103. html += " <span>";
  104. html += " 该(tif)文件,系统解析错误,具体原因如下:";
  105. html += " <p style=\"color: red;\">文件[${file.name}]解析失败,请联系系统管理员</p>";
  106. html += " </span>";
  107. html += " <p>有任何疑问,请加入kk开源社区知识星球咨询:<a href=\"https://t.zsxq.com/09ZHSXbsQ\">https://t.zsxq.com/09ZHSXbsQ</a><br></p>";
  108. html += "</div>";
  109. html += "</body>";
  110. html += "</html>";
  111. document.write(html);
  112. document.close();
  113. return;
  114. }
  115. for (let i = 0; i < rgba.length; i++) {
  116. imageData.data[i] = rgba[i];
  117. }
  118. ctx.putImageData(imageData, 0, 0);
  119. const imgObj = document.createElement('img');
  120. imgObj.src = canvas.toDataURL('image/png');
  121. if (++p < pages.length) {
  122. imgObj.onload = loadOne;
  123. }
  124. myp.appendChild(imgObj);
  125. }
  126. function imgLoaded(e) {
  127. resp = e.target.response;
  128. pages = UTIF.decode(resp);
  129. p = 0;
  130. loadOne();
  131. }
  132. const xhr = new XMLHttpRequest();
  133. xhr.open('GET', url);
  134. xhr.responseType = 'arraybuffer';
  135. xhr.onload = imgLoaded;
  136. xhr.send();
  137. /*初始化水印*/
  138. window.onload = function () {
  139. initWaterMark();
  140. }
  141. </script>
  142. </body>
  143. </html>