许鹏程
2025-02-10 ef26bf4fde77ba361bcd083a769c3a1b8a229738
excel文件预览使用pdf
已修改2个文件
63 ■■■■■ 文件已修改
src/main/java/com/product/file/service/FileManagerService.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/product/file/util/AsposeUtil.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/product/file/service/FileManagerService.java
@@ -21,14 +21,10 @@
import com.product.file.util.FileUtils;
import com.product.module.sys.entity.SystemUser;
import com.product.util.BaseUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
@@ -469,7 +465,11 @@
        String viewOnlineSign = attachmentFse.getString(CmnConst.VIEW_ONLINE_SIGN);
        boolean encrptSignFlag = "1".equals(attachmentFse.getString(CmnConst.ENCRPT_SIGN));
        boolean needOnlineViewFlag = "1".equals(fse.getString(CmnConst.NEED_ONLINE_VIEW)) && "1".equals(viewOnlineSign);
        if (needOnlineViewFlag && !realFileName.endsWith(".xlsx") && !realFileName.endsWith(".xls")) {
//        if (needOnlineViewFlag && !realFileName.endsWith(".xlsx") && !realFileName.endsWith(".xls")) {
//            // 需要在线预览且转换之后才能在线预览 excel 文件不需要转换直接输出预览
//            dir += File.separator + CmnConst.TRANSFER_DIR_NAME;
//        }
        if (needOnlineViewFlag) {
            // 需要在线预览且转换之后才能在线预览 excel 文件不需要转换直接输出预览
            dir += File.separator + CmnConst.TRANSFER_DIR_NAME;
        }
@@ -480,11 +480,13 @@
            FTPService ftpService = new FTPService();
            logger.info("需要从附件服务器上取文件...");
            response.setHeader("Access-Control-Expose-Headers", "*");
            if (realFileName.endsWith(".xlsx") || realFileName.endsWith(".xls")) {
                response.setContentType("application/vnd.ms-excel");
            } else {
//            if (realFileName.endsWith(".xlsx") || realFileName.endsWith(".xls")) {
//                response.setContentType("application/vnd.ms-excel");
//            } else {
//                response.setContentType("multipart/form-data");
//            }
                response.setContentType("multipart/form-data");
            }
            response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(realFileName, "UTF-8"));
            //设置头中的文件类型
            if (!needOnlineViewFlag && !encrptSignFlag) {
@@ -535,6 +537,15 @@
            String localBasePath = Global.getSystemConfig("local.dir", "");
            path = localBasePath + File.separator + path;
            File file = new File(path);
            if (needOnlineViewFlag && file.exists() && (realFileName.endsWith(".xlsx") || realFileName.endsWith(".xls"))) {
                //获取文件的修改时间
                long fileTime = file.lastModified();
                //如果时间是 2025年2月10日23:59:59,那么就重新转换
                //删除文件
                if (fileTime <= 1739203198000L) {
                    file.delete();
                }
            }
            if (needOnlineViewFlag && !file.exists()) {
                // 若是预览,但是转换后的文件不存在,那么重新执行转换操作
                File sourceFile = fileUtils.getFile(false, attachmentFse.getString(CmnConst.ATTACHMENT_URL), fileName, encrptSignFlag);
@@ -547,11 +558,13 @@
            byte[] b = new byte[1024];
            InputStream is = new FileInputStream(file);
            response.setHeader("Access-Control-Expose-Headers", "*");
            if (realFileName.endsWith(".xlsx") || realFileName.endsWith(".xls")) {
                response.setContentType("application/vnd.ms-excel");
            } else {
//            if (realFileName.endsWith(".xlsx") || realFileName.endsWith(".xls")) {
//                response.setContentType("application/vnd.ms-excel");
//            } else {
//                response.setContentType("multipart/form-data");
//            }
                response.setContentType("multipart/form-data");
            }
            response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(realFileName, "UTF-8"));
            response.setContentLengthLong(file.length());
            try (ServletOutputStream os = response.getOutputStream()) {
src/main/java/com/product/file/util/AsposeUtil.java
@@ -1,24 +1,18 @@
package com.product.file.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import com.aspose.cells.Cells;
import com.aspose.cells.PdfSaveOptions;
import com.aspose.cells.Workbook;
import com.aspose.cells.Worksheet;
import com.aspose.cells.WorksheetCollection;
import com.aspose.cells.*;
import com.aspose.slides.Presentation;
import com.aspose.words.SaveFormat;
import com.aspose.words.*;
import com.product.core.exception.BaseException;
import com.product.core.spring.context.SpringMVCContextHolder;
import com.product.file.config.FileCode;
import java.io.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class AsposeUtil {
    private static int OFFICE_XLS = 1;
@@ -293,8 +287,8 @@
            if (officeType.equals("doc") || officeType.equals("docx")) {
                Word2Pdf(officePath, outFile);
            } else if (officeType.equals("xls") || officeType.equals("xlsx")) {
//                Excel2Pdf(officePath,outFile);
                Excel2Html(officePath, outFile);
                Excel2Pdf(officePath,outFile);
//                Excel2Html(officePath, outFile);
//                xls2xlsx(officePath,outFile,officeType);
            } else if (officeType.equals("ppt") || officeType.equals("pptx")) {
                PPT2Pdf(officePath, outFile);