diff --git a/src/main/java/com/docus/sw/fenpan/FenpanService.java b/src/main/java/com/docus/sw/fenpan/FenpanService.java index 149f229..feb3e7e 100644 --- a/src/main/java/com/docus/sw/fenpan/FenpanService.java +++ b/src/main/java/com/docus/sw/fenpan/FenpanService.java @@ -3,6 +3,7 @@ package com.docus.sw.fenpan; import com.alibaba.excel.util.FileUtils; import com.docus.sw.Config; import com.docus.sw.word.GetPicsDocx; +import com.docus.sw.word.MyFileUtil; import com.docus.sw.word.PdfBoxUtils; import com.docus.sw.word.ReadImgDoc; import lombok.extern.slf4j.Slf4j; @@ -107,21 +108,17 @@ public class FenpanService { if (piece.getFileTypeEnum() == FileTypeEnum.DOC) { //从word 直接提取图片 //提取图片为document ,然后用于后面判断 - File file = new File("temp"); + String teamName = "temp/"+UUID.randomUUID(); + File file = new File(teamName); if(!file.exists()){ file.mkdirs(); } - ReadImgDoc.readPicture(piece.getAbsolutePath(),file.getAbsolutePath()); List documentList = new ArrayList<>(); - try { - PdfBoxUtils.pdf2image(piece.getAbsolutePath(),file.getAbsolutePath()); - File[] files = file.listFiles(); - for(File pdfImg:files){ - getDocumentList(documentList, pdfImg); - } - } catch (IOException e) { - log.error(e.getMessage(),e); + ReadImgDoc.readPicture(piece.getAbsolutePath(),file.getAbsolutePath()); + File[] files = file.listFiles(); + for(File pdfImg:files){ + getDocumentList(documentList, pdfImg); } piece.put(documentList); @@ -130,21 +127,17 @@ public class FenpanService { } else if (piece.getFileTypeEnum() == FileTypeEnum.DOCX) { //从word 直接提取图片 //提取图片为document ,然后用于后面判断 - File file = new File("temp"); + String teamName = "temp/"+UUID.randomUUID(); + File file = new File(teamName); if(!file.exists()){ file.mkdirs(); } - GetPicsDocx.getPics(piece.getAbsolutePath(),file.getAbsolutePath()); List documentList = new ArrayList<>(); - try { - PdfBoxUtils.pdf2image(piece.getAbsolutePath(),file.getAbsolutePath()); - File[] files = file.listFiles(); - for(File pdfImg:files){ - getDocumentList(documentList, pdfImg); - } - } catch (IOException e) { - log.error(e.getMessage(),e); + GetPicsDocx.getPics(piece.getAbsolutePath(),file.getAbsolutePath()); + File[] files = file.listFiles(); + for(File pdfImg:files){ + getDocumentList(documentList, pdfImg); } piece.put(documentList); @@ -153,7 +146,8 @@ public class FenpanService { } else if (piece.getFileTypeEnum() == FileTypeEnum.PDF) { // 从pdf 提取图片, //提取图片为document ,然后用于后面判断 - File file = new File("temp"); + String teamName = "temp/"+UUID.randomUUID(); + File file = new File(teamName); if(!file.exists()){ file.mkdirs(); } @@ -162,7 +156,9 @@ public class FenpanService { try { PdfBoxUtils.pdf2image(piece.getAbsolutePath(),file.getAbsolutePath()); File[] files = file.listFiles(); + System.out.println("件名:"+file.getName()); for(File pdfImg:files){ + System.out.println("图片名"+pdfImg.getName()); getDocumentList(documentList, pdfImg); } } catch (IOException e) { @@ -171,7 +167,7 @@ public class FenpanService { piece.put(documentList); //删除对应的temp 文件 - FileUtils.delete(file); +// FileUtils.delete(file); } else { //是图片,直接从图片提取 List documentList = new ArrayList<>(); @@ -203,6 +199,9 @@ public class FenpanService { zongMap.put(zongName, zong); } + + FileUtils.delete(new File("temp")); + for (String zongName : zongMap.keySet()) { Zong zong = zongMap.get(zongName); File zongfile = new File(zong.getAbsolutePath()); diff --git a/src/main/java/com/docus/sw/souyin/SuoyinService.java b/src/main/java/com/docus/sw/souyin/SuoyinService.java index 6557ea2..e063e22 100644 --- a/src/main/java/com/docus/sw/souyin/SuoyinService.java +++ b/src/main/java/com/docus/sw/souyin/SuoyinService.java @@ -84,15 +84,10 @@ public class SuoyinService { } ReadImgDoc.readPicture(piece.getAbsolutePath(),temp.getAbsolutePath()); - try { - PdfBoxUtils.pdf2image(piece.getAbsolutePath(),temp.getAbsolutePath()); - File[] listFiles = temp.listFiles(); - genPieces(pieces, listFiles,FileTypeEnum.DOC); - pieceList.add(pieces); - - } catch (IOException e) { + File[] listFiles = temp.listFiles(); + genPieces(pieces, listFiles,FileTypeEnum.DOC); + pieceList.add(pieces); - } //删除对应的temp 文件 FileUtils.delete(temp); }else if(piece.getName().endsWith(".docx")){ @@ -104,14 +99,9 @@ public class SuoyinService { } GetPicsDocx.getPics(piece.getAbsolutePath(),temp.getAbsolutePath()); - try { - PdfBoxUtils.pdf2image(piece.getAbsolutePath(),temp.getAbsolutePath()); - File[] listFiles = temp.listFiles(); - genPieces(pieces, listFiles,FileTypeEnum.DOCX); - pieceList.add(pieces); - } catch (IOException e) { - - } + File[] listFiles = temp.listFiles(); + genPieces(pieces, listFiles,FileTypeEnum.DOCX); + pieceList.add(pieces); //删除对应的temp 文件 FileUtils.delete(temp); }else if(piece.getName().endsWith(".pdf")){ diff --git a/src/main/java/com/docus/sw/word/MyFileUtil.java b/src/main/java/com/docus/sw/word/MyFileUtil.java new file mode 100644 index 0000000..c7afcbd --- /dev/null +++ b/src/main/java/com/docus/sw/word/MyFileUtil.java @@ -0,0 +1,18 @@ +package com.docus.sw.word; + +import java.io.File; + +public class MyFileUtil { + + public static void deleteDirectory(File directory) { + if (directory.isDirectory()) { + File[] files = directory.listFiles(); + if (files != null) { + for (File file : files) { + deleteDirectory(file); + } + } + } + directory.delete(); + } +} diff --git a/src/main/java/com/docus/sw/word/PdfBoxUtils.java b/src/main/java/com/docus/sw/word/PdfBoxUtils.java index 57660fb..4ab758c 100644 --- a/src/main/java/com/docus/sw/word/PdfBoxUtils.java +++ b/src/main/java/com/docus/sw/word/PdfBoxUtils.java @@ -24,7 +24,9 @@ import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; +import java.io.BufferedOutputStream; import java.io.File; +import java.io.FileOutputStream; import java.io.IOException; import java.util.List; @@ -118,7 +120,8 @@ public class PdfBoxUtils { if (pdxObject instanceof PDImageXObject) { PDImageXObject imageXObject = (PDImageXObject) pdxObject; BufferedImage image = imageXObject.getImage(); - ImageIO.write(image,"jpg",new File(this.des +"/"+ this.name + "-" + this.imageNum + ".jpg")); + BufferedOutputStream os = new BufferedOutputStream(new FileOutputStream(this.des +"/"+ this.name + "-" + this.imageNum + ".jpg")); + ImageIO.write(image,"jpg",os); ++this.imageNum; } else if (pdxObject instanceof PDFormXObject) { PDFormXObject form = (PDFormXObject) pdxObject;