From d873c581e95fdabe4f1a32d95e283a1e1c20c980 Mon Sep 17 00:00:00 2001 From: shichongfu <shi_chongfu@163.com> Date: 星期四, 15 六月 2023 14:42:40 +0800 Subject: [PATCH] 文档处理 --- src/main/java/com/product/file/util/AsposeUtil.java | 163 +++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 123 insertions(+), 40 deletions(-) diff --git a/src/main/java/com/product/file/util/AsposeUtil.java b/src/main/java/com/product/file/util/AsposeUtil.java index 0d427d3..15ae32d 100644 --- a/src/main/java/com/product/file/util/AsposeUtil.java +++ b/src/main/java/com/product/file/util/AsposeUtil.java @@ -9,6 +9,7 @@ import java.text.DecimalFormat; import com.aspose.cells.Cells; +import com.aspose.cells.HtmlSaveOptions; import com.aspose.cells.PdfSaveOptions; import com.aspose.cells.Workbook; import com.aspose.cells.Worksheet; @@ -16,7 +17,12 @@ import com.aspose.slides.Presentation; import com.aspose.words.Document; import com.aspose.words.ImportFormatMode; +import com.aspose.words.NodeCollection; +import com.aspose.words.NodeType; +import com.aspose.words.Paragraph; import com.aspose.words.SaveFormat; +import com.aspose.words.Section; +import com.aspose.words.SectionStart; import com.product.core.exception.BaseException; import com.product.core.spring.context.SpringMVCContextHolder; import com.product.file.config.FileCode; @@ -77,8 +83,8 @@ FileOutputStream fileOS=null; try { File file = new File(OutPutPath); - if (!file.exists()) { - file.mkdirs(); + if (!file.getParentFile().exists()) { + file.getParentFile().mkdirs(); } Workbook wb = new Workbook(officePath);// 鍘熷excel璺緞 fileOS = new FileOutputStream(OutPutPath); @@ -86,6 +92,43 @@ PdfSaveOptions pdfSaveOptions = new PdfSaveOptions(); pdfSaveOptions.setAllColumnsInOnePagePerSheet(true); wb.save(fileOS, pdfSaveOptions); + } catch (Exception e) { + throw new BaseException(FileCode.DOC_CONVERT_FALL,e); + }finally{ + if(fileOS!=null) { + try { + fileOS.flush(); + fileOS.close(); + }catch(IOException e) { + throw new BaseException(e); + } + } + } + } + /** + * + * @param officePath + * @param OutPutPath + * @throws BaseException + */ + public static void xls2xlsx(String officePath,String OutPutPath,String officeType)throws BaseException { + // 楠岃瘉License + if (!getLicense(1)) { + return; + } + if("xlsx".equals(officeType)) { + FileUtil.copyFile(new File(officePath), OutPutPath); + return ; + } + FileOutputStream fileOS=null; + try { + File file = new File(OutPutPath); + if (!file.getParentFile().exists()) { + file.getParentFile().mkdirs(); + } + Workbook wb = new Workbook(officePath);// 鍘熷excel璺緞 + fileOS = new FileOutputStream(OutPutPath); + wb.save(fileOS, com.aspose.cells.SaveFormat.XLSX); } catch (Exception e) { throw new BaseException(FileCode.DOC_CONVERT_FALL,e); }finally{ @@ -107,17 +150,19 @@ FileOutputStream fileOS=null; try { File file = new File(OutPutPath); - if (!file.exists()) { - file.mkdirs(); + if (!file.getParentFile().exists()) { + file.getParentFile().mkdirs(); } Workbook wb = new Workbook(officePath);// 鍘熷excel璺緞 WorksheetCollection sheets=wb.getWorksheets(); System.out.println("sheet涓暟锛�"+sheets.getCount()); for(int i=0;i<sheets.getCount();i++) { - setAutoWithHeight(sheets.get(i)); + //setAutoWithHeight(sheets.get(i)); } +// HtmlSaveOptions options = new HtmlSaveOptions(); +// options.setPresentationPreference(true); fileOS = new FileOutputStream(OutPutPath); - wb.save(fileOS, SaveFormat.HTML); + wb.save(fileOS, com.aspose.cells.SaveFormat.HTML); } catch (Exception e) { throw new BaseException(FileCode.DOC_CONVERT_FALL,e); }finally{ @@ -165,8 +210,8 @@ FileOutputStream fileOS=null; try { File file = new File(OutPutPath); - if (!file.exists()) { - file.mkdirs(); + if (!file.getParentFile().exists()) { + file.getParentFile().mkdirs(); } Document doc = new Document(officePath);// 鍘熷word璺緞 fileOS = new FileOutputStream(OutPutPath); @@ -198,8 +243,8 @@ FileOutputStream fileOS=null; try { File PathFile = new File(OutPutPath); - if (!PathFile.exists()) { - PathFile.mkdirs(); + if (!PathFile.getParentFile().exists()) { + PathFile.getParentFile().mkdirs(); } InputStream slides = new FileInputStream(officePath);// 鍘熷ppt璺緞 Presentation pres = new Presentation(slides); @@ -226,7 +271,7 @@ * @throws BaseException */ public static String OfficeToPdf(String officePath,String outFile,String officeType )throws BaseException { - + officeType=officeType.toLowerCase(); SpringMVCContextHolder.getSystemLogger().info("The file of office type:"+officePath); if("pdf".equals(officeType)) { return outFile; @@ -238,7 +283,8 @@ Word2Pdf(officePath,outFile); }else if(officeType.equals("xls")||officeType.equals("xlsx")){ // Excel2Pdf(officePath,outFile); - Excel2Html(officePath,outFile); +// Excel2Html(officePath,outFile); + xls2xlsx(officePath,outFile,officeType); }else if(officeType.equals("ppt")||officeType.equals("pptx")){ PPT2Pdf(officePath,outFile); }else{ @@ -261,37 +307,21 @@ int lastNameIndex = split[0].lastIndexOf("/"); String officeType = split[0].substring(lastIndex+1); - String officeName = split[0].substring(lastNameIndex+1,lastIndex)+".pdf"; + String officeName = split[0].substring(lastNameIndex+1,lastIndex); String OutPutPath = split[0].substring(0,lastNameIndex+1)+"office/"; System.out.println("杈撳嚭鐩綍锛�"+OutPutPath); File file = new File(split[0]); - File pdfFile = new File(OutPutPath+officeName); //鍒ゆ柇褰撳墠office鏂囦欢鏄惁宸茬粡杞负PDF,濡傛灉宸茶浆涓篜DF灏变笉闇�瑕佸啀娆¤浆鎹€�� - if(pdfFile.exists()){ - return OutPutPath+officeName; - } - if (file.exists()) { - - double bytes = file.length(); - double kilobytes = (bytes / 1024); - double megabytes = (kilobytes / 1024); - - DecimalFormat df = new DecimalFormat("0.00"); - df.setRoundingMode(RoundingMode.HALF_UP); - String MB = df.format(megabytes); - Double Size = Double.parseDouble(MB); - if(Size>10){ - return Size+"MB"; - } //"doc", "docx", "xls","xlsx", "ppt", "pptx" try { if(officeType.equals("doc")||officeType.equals("docx")){ - Word2Pdf(split[0],OutPutPath+"/"+officeName); + Word2Pdf(split[0],OutPutPath+"/"+officeName+".pdf"); }else if(officeType.equals("xls")||officeType.equals("xlsx")){ - Excel2Pdf(split[0],OutPutPath+"/"+officeName); +// Excel2Html(split[0],OutPutPath+"/"+officeName+".html"); + xls2xlsx(split[0],OutPutPath+"/"+officeName+".xlsx",officeType); }else if(officeType.equals("ppt")||officeType.equals("pptx")){ - PPT2Pdf(split[0],OutPutPath+"/"+officeName); + PPT2Pdf(split[0],OutPutPath+"/"+officeName+".pdf"); }else{ System.out.println("鏃犳硶璇嗗埆璇ユ枃浠讹紒"); return "Error"; @@ -346,16 +376,27 @@ sin=new FileInputStream(source); Document targetDoc = new Document(tin); Document sourceDoc = new Document(sin); + docBlankProcess(targetDoc); targetDoc.appendDocument(sourceDoc, ImportFormatMode.KEEP_SOURCE_FORMATTING); + + +// for(Section sect : targetDoc.getSections()) +// { +// if (sect.getBody().getParagraphs().getCount() == 0) { +// sect.remove(); +// } +// } File dir=new File(temp); if(!dir.exists()) { - if(dir.mkdirs()) { - if(temp_target.createNewFile()) { - out=new FileOutputStream(temp_target); - targetDoc.save(out, SaveFormat.DOCX); - } - } + dir.mkdirs(); } + if(temp_target.exists()) { + temp_target.delete(); + } + if(temp_target.createNewFile()) { + out=new FileOutputStream(temp_target); + targetDoc.save(out, SaveFormat.DOCX); + } }catch(Exception e) { throw new BaseException(FileCode.DOC_MERGE_FALL,e); } @@ -377,8 +418,50 @@ } return temp_target; } + + public static void docBlankProcess(Document targetDoc) { + NodeCollection nodes=targetDoc.getChildNodes(NodeType.PARAGRAPH, true); + System.out.println(nodes.getCount()); + for(Paragraph para :(Iterable<Paragraph>) nodes) { + String text=para.getText(); + if("\r".equals(text)) { + System.out.println("rrrrrrrrrrrr"); + }else if("\f".equals(text)) { + System.out.println("ffffffffffff"); + }else { + System.out.println(text); + } + if ("\r".equals(text) + //|| "\f".equals(text) + ) { + para.remove(); + } + } + } + public static void docProcess(Document targetDoc) { + NodeCollection nodes=targetDoc.getChildNodes(); + for(Paragraph para :(Iterable<Paragraph>) nodes) { + String text=para.getText(); + if("\r".equals(text)) { + System.out.println("rrrrrrrrrrrr"); + }else if("\f".equals(text)) { + System.out.println("ffffffffffff"); + }else { + System.out.println(text); + } + if ("\r".equals(text) + //|| "\f".equals(text) + ) { + para.remove(); + } + } + } public static void main(String args[]) { - String file="E:/work/娌勫磧/FE6.6浜у搧鎶ヤ环宸ュ叿-鏂� - 鍓湰.xlsx"; + String file="E:/宸ヤ綔鍐呭.xlsx"; +// String file="E:/鐖嗙牬姣嶇嚎.xls"; +// String file="E:/閲囬泦鎻愬彇鏃ュ織琛ㄧ粨鏋�.xlsx"; +// String file="E:/FE淇℃伅绯荤粺鍥戒骇鍖栬В鍐虫柟妗圴1.0.docx"; AsposeUtil.OfficeToPdf(file); +// AsposeUtil.mergeWord("E:\\QQ\\浣忔埧鎷呬繚缃崲鍏徃.docx","E:\\QQ\\浣忔埧鎷呬繚缃崲鍏徃2.docx"); } } -- Gitblit v1.9.2