6d9ef3f4807e53a5bc3178e1123aacc33a0c83f5.svn-base 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. package com.kingdee.shr.customer.gtiit.handler;
  2. import java.io.BufferedOutputStream;
  3. import java.io.ByteArrayInputStream;
  4. import java.io.ByteArrayOutputStream;
  5. import java.io.File;
  6. import java.io.FileInputStream;
  7. import java.io.FileOutputStream;
  8. import java.io.IOException;
  9. import java.io.InputStream;
  10. import java.net.HttpURLConnection;
  11. import java.net.URL;
  12. import java.net.URLEncoder;
  13. import javax.servlet.http.HttpServletRequest;
  14. import javax.servlet.http.HttpServletResponse;
  15. import org.apache.log4j.Logger;
  16. import org.springframework.ui.ModelMap;
  17. import com.aspose.pdf.DocSaveOptions;
  18. import com.aspose.pdf.Document;
  19. import com.aspose.pdf.SaveFormat;
  20. import com.kingdee.bos.BOSException;
  21. import com.kingdee.shr.base.syssetting.exception.SHRWebException;
  22. import com.kingdee.shr.empCertification.web.handler.HRcertificationbillListHandler;
  23. public class HRcertificationbillListHandlerEx extends HRcertificationbillListHandler{
  24. private static Logger logger =
  25. Logger.getLogger("com.kingdee.shr.customer.gtiit.handler.HRcertificationbillListHandlerEx");
  26. public void convertPdfToWordAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException {
  27. logger.error("进入附件转换方法");
  28. String downloadUrl = request.getParameter("downloadUrl");
  29. downloadUrl = downloadUrl.replace(" ", "+");
  30. String fileName = request.getParameter("fileName");
  31. logger.error("附件下载路径:"+downloadUrl);
  32. logger.error("附件名称:"+fileName);
  33. File attachFile = null;
  34. try {
  35. // 创建 URL 对象
  36. URL url = new URL(downloadUrl);
  37. HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  38. // 设置超时时间为100秒
  39. conn.setConnectTimeout(100 * 1000);
  40. // 得到输入流
  41. InputStream inputStream = conn.getInputStream();
  42. // 创建文件输出流
  43. attachFile = File.createTempFile("temp", ".pdf");
  44. // 将输入流中的数据写入临时文件
  45. FileOutputStream outputStream = new FileOutputStream(attachFile);
  46. // 读取输入流中的数据并写入输出流
  47. byte[] buffer = new byte[4096];
  48. int bytesRead;
  49. while ((bytesRead = inputStream.read(buffer)) != -1) {
  50. outputStream.write(buffer, 0, bytesRead);
  51. }
  52. // 关闭流
  53. inputStream.close();
  54. outputStream.close();
  55. FileInputStream fileInputStream = new FileInputStream(attachFile);
  56. // 创建输出流
  57. ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream();
  58. //doc是将要被转化的word文档
  59. Document doc = new Document(fileInputStream);
  60. //全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF, EPUB, XPS, SWF 相互转换
  61. doc.save(byteOutputStream, SaveFormat.DocX);
  62. // 将 ByteArrayOutputStream 转换为 InputStream
  63. InputStream input = new ByteArrayInputStream(byteOutputStream.toByteArray());
  64. try (BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream())) {
  65. // //通知浏览器以附件形式下载
  66. response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8"));
  67. //文件输出格式
  68. response.setContentType("multipart/form-data;charset=utf-8");
  69. byte[] car = new byte[1024];
  70. int len;
  71. while ((len = input.read(car)) != -1) {
  72. out.write(car, 0, len);
  73. }
  74. } catch (IOException e) {
  75. e.getMessage();
  76. }
  77. doc.close();
  78. fileInputStream.close();
  79. byteOutputStream.close();
  80. } catch (Exception e) {
  81. e.printStackTrace();
  82. logger.error("附件类型转换失败:"+e.getMessage());
  83. }
  84. if(attachFile != null) {
  85. attachFile.deleteOnExit();
  86. attachFile.delete();
  87. }
  88. }
  89. /*public void convertPdfToWordAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException {
  90. logger.error("进入附件转换方法");
  91. String downloadUrl = request.getParameter("downloadUrl");
  92. downloadUrl = downloadUrl.replace(" ", "+");
  93. String fileName = request.getParameter("fileName");
  94. logger.error("附件下载路径:"+downloadUrl);
  95. logger.error("附件名称:"+fileName);
  96. try {
  97. URL url = new URL(downloadUrl);
  98. HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
  99. int responseCode = httpConn.getResponseCode();
  100. // 检查是否成功连接到文件
  101. if (responseCode == HttpURLConnection.HTTP_OK) {
  102. InputStream inputStream = url.openStream();
  103. File tempFile = File.createTempFile("temp", ".pdf");
  104. // 将输入流中的数据写入临时文件
  105. FileOutputStream fileOutputStream = new FileOutputStream(tempFile);
  106. byte[] buffer = new byte[1024];
  107. int bytesRead;
  108. while ((bytesRead = inputStream.read(buffer)) != -1) {
  109. fileOutputStream.write(buffer, 0, bytesRead);
  110. }
  111. fileOutputStream.close();
  112. inputStream.close();
  113. InputStream fileInputStream = new FileInputStream(tempFile.getPath());
  114. tempFile.deleteOnExit();
  115. tempFile.delete();
  116. // 创建输出流
  117. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  118. //doc是将要被转化的word文档
  119. Document doc = new Document(fileInputStream);
  120. //全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF, EPUB, XPS, SWF 相互转换
  121. DocSaveOptions saveOptions = new DocSaveOptions();
  122. doc.save(outputStream, saveOptions);
  123. // 将 ByteArrayOutputStream 转换为 InputStream
  124. InputStream input = new ByteArrayInputStream(outputStream.toByteArray());
  125. doc.close();
  126. inputStream.close();
  127. try (BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream())) {
  128. // //通知浏览器以附件形式下载
  129. response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8"));
  130. //文件输出格式
  131. response.setContentType("multipart/form-data;charset=utf-8");
  132. byte[] car = new byte[1024];
  133. int len;
  134. while ((len = input.read(car)) != -1) {
  135. out.write(car, 0, len);
  136. }
  137. } catch (IOException e) {
  138. e.getMessage();
  139. }
  140. input.close();
  141. outputStream.close();
  142. }else {
  143. logger.error("附件路径转换异常");
  144. }
  145. } catch (Exception e) {
  146. e.printStackTrace();
  147. logger.error("附件类型转换失败:"+e.getMessage());
  148. }
  149. }*/
  150. }