123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- package com.kingdee.shr.customer.gtiit.handler;
- import java.io.BufferedOutputStream;
- import java.io.ByteArrayInputStream;
- import java.io.ByteArrayOutputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.net.HttpURLConnection;
- import java.net.URL;
- import java.net.URLEncoder;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.apache.log4j.Logger;
- import org.springframework.ui.ModelMap;
- import com.aspose.pdf.DocSaveOptions;
- import com.aspose.pdf.Document;
- import com.aspose.pdf.SaveFormat;
- import com.kingdee.bos.BOSException;
- import com.kingdee.shr.base.syssetting.exception.SHRWebException;
- import com.kingdee.shr.empCertification.web.handler.HRcertificationbillListHandler;
- public class HRcertificationbillListHandlerEx extends HRcertificationbillListHandler{
- private static Logger logger =
- Logger.getLogger("com.kingdee.shr.customer.gtiit.handler.HRcertificationbillListHandlerEx");
-
- public void convertPdfToWordAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException {
- logger.error("进入附件转换方法");
- String downloadUrl = request.getParameter("downloadUrl");
- downloadUrl = downloadUrl.replace(" ", "+");
- String fileName = request.getParameter("fileName");
- logger.error("附件下载路径:"+downloadUrl);
- logger.error("附件名称:"+fileName);
- File attachFile = null;
- try {
- // 创建 URL 对象
- URL url = new URL(downloadUrl);
- HttpURLConnection conn = (HttpURLConnection) url.openConnection();
- // 设置超时时间为100秒
- conn.setConnectTimeout(100 * 1000);
- // 得到输入流
- InputStream inputStream = conn.getInputStream();
- // 创建文件输出流
- attachFile = File.createTempFile("temp", ".pdf");
- // 将输入流中的数据写入临时文件
- FileOutputStream outputStream = new FileOutputStream(attachFile);
- // 读取输入流中的数据并写入输出流
- byte[] buffer = new byte[4096];
- int bytesRead;
- while ((bytesRead = inputStream.read(buffer)) != -1) {
- outputStream.write(buffer, 0, bytesRead);
- }
- // 关闭流
- inputStream.close();
- outputStream.close();
-
- FileInputStream fileInputStream = new FileInputStream(attachFile);
- // 创建输出流
- ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream();
- //doc是将要被转化的word文档
- Document doc = new Document(fileInputStream);
- //全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF, EPUB, XPS, SWF 相互转换
- doc.save(byteOutputStream, SaveFormat.DocX);
- // 将 ByteArrayOutputStream 转换为 InputStream
- InputStream input = new ByteArrayInputStream(byteOutputStream.toByteArray());
-
- try (BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream())) {
- // //通知浏览器以附件形式下载
- response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8"));
- //文件输出格式
- response.setContentType("multipart/form-data;charset=utf-8");
- byte[] car = new byte[1024];
- int len;
- while ((len = input.read(car)) != -1) {
- out.write(car, 0, len);
- }
- } catch (IOException e) {
- e.getMessage();
- }
- doc.close();
- fileInputStream.close();
- byteOutputStream.close();
-
- } catch (Exception e) {
- e.printStackTrace();
- logger.error("附件类型转换失败:"+e.getMessage());
- }
- if(attachFile != null) {
- attachFile.deleteOnExit();
- attachFile.delete();
- }
- }
-
- /*public void convertPdfToWordAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException {
- logger.error("进入附件转换方法");
- String downloadUrl = request.getParameter("downloadUrl");
- downloadUrl = downloadUrl.replace(" ", "+");
- String fileName = request.getParameter("fileName");
- logger.error("附件下载路径:"+downloadUrl);
- logger.error("附件名称:"+fileName);
- try {
- URL url = new URL(downloadUrl);
- HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
- int responseCode = httpConn.getResponseCode();
- // 检查是否成功连接到文件
- if (responseCode == HttpURLConnection.HTTP_OK) {
- InputStream inputStream = url.openStream();
-
- File tempFile = File.createTempFile("temp", ".pdf");
- // 将输入流中的数据写入临时文件
- FileOutputStream fileOutputStream = new FileOutputStream(tempFile);
- byte[] buffer = new byte[1024];
- int bytesRead;
- while ((bytesRead = inputStream.read(buffer)) != -1) {
- fileOutputStream.write(buffer, 0, bytesRead);
- }
- fileOutputStream.close();
- inputStream.close();
- InputStream fileInputStream = new FileInputStream(tempFile.getPath());
- tempFile.deleteOnExit();
- tempFile.delete();
- // 创建输出流
- ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
- //doc是将要被转化的word文档
- Document doc = new Document(fileInputStream);
- //全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF, EPUB, XPS, SWF 相互转换
- DocSaveOptions saveOptions = new DocSaveOptions();
- doc.save(outputStream, saveOptions);
- // 将 ByteArrayOutputStream 转换为 InputStream
- InputStream input = new ByteArrayInputStream(outputStream.toByteArray());
-
- doc.close();
- inputStream.close();
-
- try (BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream())) {
- // //通知浏览器以附件形式下载
- response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8"));
- //文件输出格式
- response.setContentType("multipart/form-data;charset=utf-8");
- byte[] car = new byte[1024];
- int len;
- while ((len = input.read(car)) != -1) {
- out.write(car, 0, len);
- }
- } catch (IOException e) {
- e.getMessage();
- }
- input.close();
- outputStream.close();
- }else {
- logger.error("附件路径转换异常");
- }
-
- } catch (Exception e) {
- e.printStackTrace();
- logger.error("附件类型转换失败:"+e.getMessage());
- }
-
- }*/
-
- }
|