From a1abdfb70a06bdb680df9f6b938fc23e9adc28b4 Mon Sep 17 00:00:00 2001 From: gaoxiongzaq Date: Mon, 24 Apr 2023 15:36:01 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=20tif=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E7=94=9F=E6=88=90=E5=9B=BE=E7=89=87=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=90=8E=E7=BC=80=20=20=E9=98=B2=E6=AD=A2=E5=90=8C=E5=90=8D?= =?UTF-8?q?=E4=BA=A7=E7=94=9F=20=E7=AE=80=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/TiffFilePreviewImpl.java | 48 +++++++++---------- .../java/cn/keking/utils/ConvertPicUtil.java | 30 ++---------- 2 files changed, 28 insertions(+), 50 deletions(-) diff --git a/server/src/main/java/cn/keking/service/impl/TiffFilePreviewImpl.java b/server/src/main/java/cn/keking/service/impl/TiffFilePreviewImpl.java index 2500a23c..0bbb7eb1 100644 --- a/server/src/main/java/cn/keking/service/impl/TiffFilePreviewImpl.java +++ b/server/src/main/java/cn/keking/service/impl/TiffFilePreviewImpl.java @@ -49,32 +49,32 @@ public class TiffFilePreviewImpl implements FilePreview { return TIFF_FILE_PREVIEW_PAGE; } else if ("jpg".equalsIgnoreCase(tifPreviewType) || "pdf".equalsIgnoreCase(tifPreviewType)) { String pdfName = fileName.substring(0, fileName.lastIndexOf(".")) + suffix +"." + "pdf" ; //生成文件添加类型后缀 防止同名文件 - String jpgName = fileName.substring(0, fileName.lastIndexOf(".")) + suffix +"." + "jpg" ; //生成文件添加类型后缀 防止同名文件 + String jpgName = fileName.substring(0, fileName.lastIndexOf(".")) + suffix; //生成文件添加类型后缀 防止同名文件 String strLocalTif = fileDir + fileName; String outFilePath = fileDir + pdfName; if ("pdf".equalsIgnoreCase(tifPreviewType)) { - //当文件不存在时,就去下载 - if (forceUpdatedCache || !fileHandlerService.listConvertedFiles().containsKey(pdfName) || !ConfigConstants.isCacheEnabled()) { - ReturnResponse response = DownloadUtils.downLoad(fileAttribute, fileName); - if (response.isFailure()) { - return otherFilePreview.notSupportedFile(model, fileAttribute, response.getMsg()); - } - String filePath = response.getContent(); - if(ConvertPicUtil.convertJpg2Pdf(filePath, outFilePath)){ - if(ConfigConstants.getdeletesourcefile()){ //是否保留TIFF源文件 - KkFileUtils.deleteFileByPath(filePath); - } - if (ConfigConstants.isCacheEnabled()) { - // 加入缓存 - fileHandlerService.addConvertedFile(pdfName, fileHandlerService.getRelativePath(outFilePath)); - } - model.addAttribute("pdfUrl", pdfName); - return PDF_FILE_PREVIEW_PAGE; - }else { - return NOT_SUPPORTED_FILE_PAGE; - } + //当文件不存在时,就去下载 + if (forceUpdatedCache || !fileHandlerService.listConvertedFiles().containsKey(pdfName) || !ConfigConstants.isCacheEnabled()) { + ReturnResponse response = DownloadUtils.downLoad(fileAttribute, fileName); + if (response.isFailure()) { + return otherFilePreview.notSupportedFile(model, fileAttribute, response.getMsg()); } - else { + String filePath = response.getContent(); + if(ConvertPicUtil.convertJpg2Pdf(filePath, outFilePath)){ + if(ConfigConstants.getdeletesourcefile()){ //是否保留TIFF源文件 + KkFileUtils.deleteFileByPath(filePath); + } + if (ConfigConstants.isCacheEnabled()) { + // 加入缓存 + fileHandlerService.addConvertedFile(pdfName, fileHandlerService.getRelativePath(outFilePath)); + } + model.addAttribute("pdfUrl", pdfName); + return PDF_FILE_PREVIEW_PAGE; + }else { + return NOT_SUPPORTED_FILE_PAGE; + } + } + else { model.addAttribute("pdfUrl", pdfName); return PDF_FILE_PREVIEW_PAGE; } @@ -88,10 +88,8 @@ public class TiffFilePreviewImpl implements FilePreview { } strLocalTif = response.getContent(); } - // 以JPG模式预览的过程 - String strJpgFilePathName = fileDir + jpgName; // 将tif转换为jpg,返回转换后的文件路径、文件名的list - List listPic2Jpg = ConvertPicUtil.convertTif2Jpg(strLocalTif, strJpgFilePathName); + List listPic2Jpg = ConvertPicUtil.convertTif2Jpg(strLocalTif, jpgName); // 将返回页面的图片url的list对象 List listImageUrls = new ArrayList<>(); // 循环,拼装url的list对象 diff --git a/server/src/main/java/cn/keking/utils/ConvertPicUtil.java b/server/src/main/java/cn/keking/utils/ConvertPicUtil.java index 9b5b17cd..cafaf2b2 100644 --- a/server/src/main/java/cn/keking/utils/ConvertPicUtil.java +++ b/server/src/main/java/cn/keking/utils/ConvertPicUtil.java @@ -45,46 +45,26 @@ public class ConvertPicUtil { return null; } strInputFile = strInputFile.replaceAll("\\\\", "/"); - strOutputFile = strOutputFile.replaceAll("\\\\", "/"); FileSeekableStream fileSeekStream = null; try { JPEGEncodeParam jpegEncodeParam = new JPEGEncodeParam(); TIFFEncodeParam tiffEncodeParam = new TIFFEncodeParam(); tiffEncodeParam.setCompression(TIFFEncodeParam.COMPRESSION_GROUP4); tiffEncodeParam.setLittleEndian(false); - String jpgname = strInputFile.replace(fileDir.replace("\\","/"), ""); - int index = jpgname.lastIndexOf("."); - String strFilePrefix = jpgname.substring(0, index); fileSeekStream = new FileSeekableStream(strInputFile); ImageDecoder imageDecoder = ImageCodec.createImageDecoder("TIFF", fileSeekStream, null); int intTifCount = imageDecoder.getNumPages(); logger.info("该tif文件共有【" + intTifCount + "】页"); - String strJpgPath; - String strJpgUrl; - if (intTifCount == 1) { - // 如果是单页tif文件,则转换的目标文件夹就在指定的位置 - strJpgPath = strOutputFile.substring(0, strOutputFile.lastIndexOf("/")); - } else { - // 如果是多页tif文件,则在目标文件夹下,按照文件名再创建子目录,将转换后的文件放入此新建的子目录中 - strJpgPath = strOutputFile.substring(0, strOutputFile.lastIndexOf(".")); - } - + String strJpgPath = fileDir+strOutputFile; // 处理目标文件夹,如果不存在则自动创建 File fileJpgPath = new File(strJpgPath); if (!fileJpgPath.exists() && !fileJpgPath.mkdirs()) { logger.error("{} 创建失败", strJpgPath); } - // 循环,处理每页tif文件,转换为jpg for (int i = 0; i < intTifCount; i++) { - String strJpg; - if (intTifCount == 1) { - strJpg = strJpgPath + "/" + strFilePrefix + ".jpg"; - strJpgUrl = strFilePrefix + ".jpg"; - } else { - strJpg = strJpgPath + "/" + i + ".jpg"; - strJpgUrl = strFilePrefix + "/" + i + ".jpg"; - } + String strJpg= strJpgPath + "/" + i + ".jpg"; + String strJpgUrl = strOutputFile + "/" + i + ".jpg"; File fileJpg = new File(strJpg); // 如果文件不存在,则生成 if (!fileJpg.exists()) { @@ -98,7 +78,7 @@ public class ConvertPicUtil { renderedOp.dispose(); logger.info("每页分别保存至: " + fileJpg.getCanonicalPath()); } else { - // logger.info("JPG文件已存在: " + fileJpg.getCanonicalPath()); + // logger.info("JPG文件已存在: " + fileJpg.getCanonicalPath()); } listImageFiles.add(strJpgUrl); @@ -154,7 +134,7 @@ public class ConvertPicUtil { } catch (Exception e) { - System.out.println("错误:"+ e.getMessage()); + System.out.println("错误:"+ e.getMessage()); } finally { document.close();