vElecFile.jsp 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <%@page import="com.kingdee.shr.custom.sendfile.GetElectronFile"%>
  3. <%@page import="org.springframework.http.ResponseEntity"%>
  4. <%@ page import="org.springframework.core.io.Resource" %>
  5. <%@ page import="java.util.Base64" %>
  6. <%@ page import="java.io.InputStream" %>
  7. <%@ page import="java.io.ByteArrayOutputStream" %>
  8. <%@ page import="java.io.IOException" %>
  9. <!DOCTYPE html>
  10. <html>
  11. <head>
  12. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  13. <script src="./pdf.min.js"></script>
  14. <script src="./pdf.worker.min.js"></script>
  15. <title>证明文件预览</title>
  16. <style>
  17. #downloadBtn {
  18. position: absolute;
  19. top: 10px;
  20. right: 10px;
  21. z-index: 1000;
  22. padding: 10px 20px;
  23. background-color: #007BFF;
  24. color: white;
  25. border: none;
  26. cursor: pointer;
  27. }
  28. #pdfViewer {
  29. width: 100%;
  30. height: 100vh;
  31. overflow: auto;
  32. }
  33. </style>
  34. </head>
  35. <body>
  36. <button id="downloadBtn">下载PDF</button>
  37. <div id="pdfViewer"></div>
  38. <script>
  39. document.addEventListener("DOMContentLoaded", function() {
  40. viewPdf();
  41. // 下载PDF按钮
  42. document.getElementById('downloadBtn').onclick = function() {
  43. window.location.href = 'downElecPdf.jsp?sole=<%= request.getParameter("sole") %>&fname=<%= request.getParameter("fname") %>';
  44. };
  45. });
  46. function viewPdf() {
  47. <%
  48. String sole1 = request.getParameter("sole");
  49. String fname1 = request.getParameter("fname");
  50. GetElectronFile abd = new GetElectronFile();
  51. ResponseEntity<Resource> resultData = abd.viewPdf(sole1, fname1);
  52. Resource body = resultData.getBody();
  53. String base64EncodedString = null;
  54. try (InputStream inputStream = body.getInputStream()) {
  55. ByteArrayOutputStream buffer = new ByteArrayOutputStream();
  56. byte[] data = new byte[1024];
  57. int bytesRead;
  58. while ((bytesRead = inputStream.read(data, 0, data.length)) != -1) {
  59. buffer.write(data, 0, bytesRead); // 将读取到的字节写入缓冲区
  60. }
  61. buffer.flush(); // 确保所有数据都被写入
  62. // 将缓冲区转换为字节数组并进行Base64编码
  63. base64EncodedString = Base64.getEncoder().encodeToString(buffer.toByteArray());
  64. } catch (IOException e) {
  65. e.printStackTrace(); // 处理异常,适当记录错误
  66. }
  67. %>
  68. var response2 = "<%= base64EncodedString %>";
  69. // 现在你可以使用response2作为Base64编码的PDF文件数据
  70. var byteCharacters = atob(response2);
  71. var byteNumbers = new Array(byteCharacters.length);
  72. for (var i = 0; i < byteCharacters.length; i++) {
  73. byteNumbers[i] = byteCharacters.charCodeAt(i);
  74. }
  75. var byteArray = new Uint8Array(byteNumbers);
  76. var blob = new Blob([byteArray], { type: 'application/pdf' });
  77. var loadingTask = pdfjsLib.getDocument(URL.createObjectURL(blob));
  78. loadingTask.promise.then(function(pdf) {
  79. var pdfViewer = document.getElementById('pdfViewer');
  80. pdfViewer.innerHTML = ''; // 清空之前的PDF内容
  81. for (var pageNumber = 1; pageNumber <= pdf.numPages; pageNumber++) {
  82. pdf.getPage(pageNumber).then(function(page) {
  83. var scale = 1.5;
  84. var viewport = page.getViewport({ scale: scale });
  85. var canvas = document.createElement('canvas');
  86. var context = canvas.getContext('2d');
  87. canvas.height = viewport.height;
  88. canvas.width = viewport.width;
  89. pdfViewer.appendChild(canvas);
  90. var renderContext = {
  91. canvasContext: context,
  92. viewport: viewport
  93. };
  94. page.render(renderContext);
  95. });
  96. }
  97. }, function (reason) {
  98. console.error(reason);
  99. });
  100. }
  101. </script>
  102. </body>
  103. </html>