From 9925bc571e1234d96a66063134ab9a9ddfd7c031 Mon Sep 17 00:00:00 2001
From: 杜洪波 <1074825718@qq.com>
Date: 星期一, 03 十一月 2025 15:53:06 +0800
Subject: [PATCH] Merge branch 'dev' of http://nonxin.cn:8090/r/product/product-server-file/V2.0.0 into dev
---
src/main/java/com/product/file/util/AsposeUtil.java | 892 ++++++++++++++++++++++++++++++-----------------------------
1 files changed, 451 insertions(+), 441 deletions(-)
diff --git a/src/main/java/com/product/file/util/AsposeUtil.java b/src/main/java/com/product/file/util/AsposeUtil.java
index d584bae..c35bbfc 100644
--- a/src/main/java/com/product/file/util/AsposeUtil.java
+++ b/src/main/java/com/product/file/util/AsposeUtil.java
@@ -1,477 +1,486 @@
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;
- private static int OFFICE_WORD=2;
- private static int OFFICE_PPT=3;
- private static boolean OFFICE_XLS_=false;
- private static boolean OFFICE_WORD_=false;
- private static boolean OFFICE_PPT_=false;
+ private static int OFFICE_XLS = 1;
+ private static int OFFICE_WORD = 2;
+ private static int OFFICE_PPT = 3;
+ private static boolean OFFICE_XLS_ = false;
+ private static boolean OFFICE_WORD_ = false;
+ private static boolean OFFICE_PPT_ = false;
//鏄惁鍒濆浜唋icense
- private static boolean isInitLicense=false;
- /**
- * 鑾峰彇license
- * @return
- */
- public static boolean getLicense(int type)throws BaseException {
- //宸茬粡鍒濆杩囷紝涓嶅啀鍒濆
- if(isInitLicense) {
- return true;
- }
- boolean result = true;
- InputStream is = null;
- try {
- if(type==OFFICE_XLS && !OFFICE_XLS_ ) {
- is = AsposeUtil.class.getClassLoader().getResourceAsStream("license.xml");
- com.aspose.cells.License excel = new com.aspose.cells.License();
- excel.setLicense(is);
- OFFICE_XLS_=true;
- }else if(type==OFFICE_WORD && !OFFICE_WORD_ ){
- is = AsposeUtil.class.getClassLoader().getResourceAsStream("license.xml");
- com.aspose.words.License word = new com.aspose.words.License();
- word.setLicense(is);
- OFFICE_WORD_=true;
- }else if(type==OFFICE_PPT && ! OFFICE_PPT_) {
- is = AsposeUtil.class.getClassLoader().getResourceAsStream("license.xml");
- com.aspose.slides.License ppt = new com.aspose.slides.License();
- ppt.setLicense(is);
- OFFICE_PPT_=true;
- }
- } catch (Exception e) {
- e.printStackTrace();
- result=false;
- throw new BaseException(FileCode.DOC_CONVERT_FALL,e);
- }finally{
- if(is!=null) {
+ private static boolean isInitLicense = false;
+
+ /**
+ * 鑾峰彇license
+ *
+ * @return
+ */
+ public static boolean getLicense(int type) throws BaseException {
+ //宸茬粡鍒濆杩囷紝涓嶅啀鍒濆
+ if (isInitLicense) {
+ return true;
+ }
+ boolean result = true;
+ InputStream is = null;
+ try {
+ if (type == OFFICE_XLS && !OFFICE_XLS_) {
+ is = AsposeUtil.class.getClassLoader().getResourceAsStream("license.xml");
+ com.aspose.cells.License excel = new com.aspose.cells.License();
+ excel.setLicense(is);
+ OFFICE_XLS_ = true;
+ } else if (type == OFFICE_WORD && !OFFICE_WORD_) {
+ //鍒ゆ柇鏍硅矾寰勬槸鍚︿负web妯″潡
+
+ is = AsposeUtil.class.getClassLoader().getResourceAsStream("license.xml");
+ com.aspose.words.License word = new com.aspose.words.License();
+ word.setLicense(is);
+ OFFICE_WORD_ = true;
+ } else if (type == OFFICE_PPT && !OFFICE_PPT_) {
+ is = AsposeUtil.class.getClassLoader().getResourceAsStream("license.xml");
+ com.aspose.slides.License ppt = new com.aspose.slides.License();
+ ppt.setLicense(is);
+ OFFICE_PPT_ = true;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ result = false;
+ throw new BaseException(FileCode.DOC_CONVERT_FALL, e);
+ } finally {
+ if (is != null) {
try {
is.close();
- }catch(IOException e) {
+ } catch (IOException e) {
throw new BaseException(e);
}
}
}
- return result;
- }
- /**
- *
- * @param officePath
- * @param OutPutPath
- * @throws BaseException
- */
- public static void Excel2Pdf(String officePath,String OutPutPath)throws BaseException {
- // 楠岃瘉License
- if (!getLicense(1)) {
- 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.PDF);
- 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) {
+ return result;
+ }
+
+ /**
+ * @param officePath
+ * @param OutPutPath
+ * @throws BaseException
+ */
+ public static void Excel2Pdf(String officePath, String OutPutPath) throws BaseException {
+ // 楠岃瘉License
+ if (!getLicense(1)) {
+ 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.PDF);
+ 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) {
+ } 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{
- if(fileOS!=null) {
+ }
+
+ /**
+ * @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 {
+ if (fileOS != null) {
try {
fileOS.flush();
fileOS.close();
- }catch(IOException e) {
+ } catch (IOException e) {
throw new BaseException(e);
}
}
}
- }
- public static void Excel2Html(String officePath,String OutPutPath)throws BaseException {
- // 楠岃瘉License
- if (!getLicense(1)) {
- return;
- }
- FileOutputStream fileOS=null;
- try {
- File file = new File(OutPutPath);
- 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));
- }
+ }
+
+ public static void Excel2Html(String officePath, String OutPutPath) throws BaseException {
+ // 楠岃瘉License
+ if (!getLicense(1)) {
+ return;
+ }
+ FileOutputStream fileOS = null;
+ try {
+ File file = new File(OutPutPath);
+ 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));
+ }
// HtmlSaveOptions options = new HtmlSaveOptions();
// options.setPresentationPreference(true);
- fileOS = new FileOutputStream(OutPutPath);
- wb.save(fileOS, com.aspose.cells.SaveFormat.HTML);
- } catch (Exception e) {
- throw new BaseException(FileCode.DOC_CONVERT_FALL,e);
- }finally{
- if(fileOS!=null) {
+ fileOS = new FileOutputStream(OutPutPath);
+ wb.save(fileOS, com.aspose.cells.SaveFormat.HTML);
+ } catch (Exception e) {
+ throw new BaseException(FileCode.DOC_CONVERT_FALL, e);
+ } finally {
+ if (fileOS != null) {
try {
fileOS.flush();
fileOS.close();
- }catch(IOException e) {
+ } catch (IOException e) {
throw new BaseException(e);
}
}
}
- }
- /**
- * 璁剧疆鍗曞厓鏍肩殑鑷姩閫傚銆侀珮
- * @param sheet
- * @throws Exception
- */
- public static void setAutoWithHeight(Worksheet sheet)throws Exception
- {
- Cells cells =sheet.getCells();
- int columnCount = cells.getMaxColumn(); //鑾峰彇琛ㄩ〉鐨勬渶澶у垪鏁�
- int rowCount = cells.getMaxRow(); //鑾峰彇琛ㄩ〉鐨勬渶澶ц鏁�
- if(columnCount<0 ||rowCount<0 )return ;
- for (int col = 0; col < columnCount; col++)
- {
- sheet.autoFitColumn(col, 0, rowCount);
- }
- for (int row = 0; row < rowCount; row++)
- {
- sheet.autoFitRow(row, 0, columnCount);
- }
- }
- /**
- *
- * @param officePath
- * @param OutPutPath
- * @throws BaseException
- */
- public static void Word2Pdf(String officePath,String OutPutPath) throws BaseException {
- // 楠岃瘉License
- if (!getLicense(2)) {
- return;
- }
- FileOutputStream fileOS=null;
- try {
- File file = new File(OutPutPath);
- if (!file.getParentFile().exists()) {
- file.getParentFile().mkdirs();
- }
- Document doc = new Document(officePath);// 鍘熷word璺緞
- fileOS = new FileOutputStream(OutPutPath);
+ }
+
+ /**
+ * 璁剧疆鍗曞厓鏍肩殑鑷姩閫傚銆侀珮
+ *
+ * @param sheet
+ * @throws Exception
+ */
+ public static void setAutoWithHeight(Worksheet sheet) throws Exception {
+ Cells cells = sheet.getCells();
+ int columnCount = cells.getMaxColumn(); //鑾峰彇琛ㄩ〉鐨勬渶澶у垪鏁�
+ int rowCount = cells.getMaxRow(); //鑾峰彇琛ㄩ〉鐨勬渶澶ц鏁�
+ if (columnCount < 0 || rowCount < 0) return;
+ for (int col = 0; col < columnCount; col++) {
+ sheet.autoFitColumn(col, 0, rowCount);
+ }
+ for (int row = 0; row < rowCount; row++) {
+ sheet.autoFitRow(row, 0, columnCount);
+ }
+ }
+
+ /**
+ * @param officePath
+ * @param OutPutPath
+ * @throws BaseException
+ */
+ public static void Word2Pdf(String officePath, String OutPutPath) throws BaseException {
+ // 楠岃瘉License
+ if (!getLicense(2)) {
+ return;
+ }
+ FileOutputStream fileOS = null;
+ try {
+ File file = new File(OutPutPath);
+ if (!file.getParentFile().exists()) {
+ file.getParentFile().mkdirs();
+ }
+ Document doc = new Document(officePath);// 鍘熷word璺緞
+ fileOS = new FileOutputStream(OutPutPath);
//涓嶄繚鐣欎慨璁㈢棔杩�
doc.acceptAllRevisions();
- doc.save(fileOS, com.aspose.words.SaveFormat.PDF);
- } catch (Exception e) {
- throw new BaseException(FileCode.DOC_CONVERT_FALL,e);
- }finally{
- if(fileOS!=null) {
+ doc.save(fileOS, com.aspose.words.SaveFormat.PDF);
+ } catch (Exception e) {
+ throw new BaseException(FileCode.DOC_CONVERT_FALL, e);
+ } finally {
+ if (fileOS != null) {
try {
fileOS.flush();
fileOS.close();
- }catch(IOException e) {
+ } catch (IOException e) {
throw new BaseException(e);
}
}
}
- }
- /**
- *
- * @param officePath
- * @param OutPutPath
- * @throws BaseException
- */
- public static void PPT2Pdf(String officePath,String OutPutPath)throws BaseException {
- // 楠岃瘉License
- if (!getLicense(3)) {
- return;
- }
- FileOutputStream fileOS=null;
- try {
- File PathFile = new File(OutPutPath);
- if (!PathFile.getParentFile().exists()) {
- PathFile.getParentFile().mkdirs();
- }
- InputStream slides = new FileInputStream(officePath);// 鍘熷ppt璺緞
- Presentation pres = new Presentation(slides);
- fileOS = new FileOutputStream(OutPutPath);
- pres.save(fileOS, com.aspose.slides.SaveFormat.Pdf);
- } catch (Exception e) {
- throw new BaseException(FileCode.DOC_CONVERT_FALL,e);
- }finally{
- if(fileOS!=null) {
+ }
+
+ /**
+ * @param officePath
+ * @param OutPutPath
+ * @throws BaseException
+ */
+ public static void PPT2Pdf(String officePath, String OutPutPath) throws BaseException {
+ // 楠岃瘉License
+ if (!getLicense(3)) {
+ return;
+ }
+ FileOutputStream fileOS = null;
+ try {
+ File PathFile = new File(OutPutPath);
+ if (!PathFile.getParentFile().exists()) {
+ PathFile.getParentFile().mkdirs();
+ }
+ InputStream slides = new FileInputStream(officePath);// 鍘熷ppt璺緞
+ Presentation pres = new Presentation(slides);
+ fileOS = new FileOutputStream(OutPutPath);
+ pres.save(fileOS, com.aspose.slides.SaveFormat.Pdf);
+ } catch (Exception e) {
+ throw new BaseException(FileCode.DOC_CONVERT_FALL, e);
+ } finally {
+ if (fileOS != null) {
try {
fileOS.flush();
fileOS.close();
- }catch(IOException e) {
+ } catch (IOException e) {
throw new BaseException(e);
}
}
}
- }
- /**
- * 鏂囨。杞崲
- * @param officePath
- * @param outFile
- * @return
- * @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;
- }
- File file = new File(officePath);
- //鍒ゆ柇褰撳墠office鏂囦欢鏄惁宸茬粡杞负PDF,濡傛灉宸茶浆涓篜DF灏变笉闇�瑕佸啀娆¤浆鎹€��
- if (file.exists()) {
- if(officeType.equals("doc")||officeType.equals("docx")){
- Word2Pdf(officePath,outFile);
- }else if(officeType.equals("xls")||officeType.equals("xlsx")){
-// Excel2Pdf(officePath,outFile);
- Excel2Html(officePath,outFile);
+ }
+
+ /**
+ * 鏂囨。杞崲
+ *
+ * @param officePath
+ * @param outFile
+ * @return
+ * @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;
+ }
+ File file = new File(officePath);
+ //鍒ゆ柇褰撳墠office鏂囦欢鏄惁宸茬粡杞负PDF,濡傛灉宸茶浆涓篜DF灏变笉闇�瑕佸啀娆¤浆鎹€��
+ if (file.exists()) {
+ if (officeType.equals("doc") || officeType.equals("docx")) {
+ Word2Pdf(officePath, outFile);
+ } else if (officeType.equals("xls") || officeType.equals("xlsx")) {
+ Excel2Pdf(officePath,outFile);
+// Excel2Html(officePath, outFile);
// xls2xlsx(officePath,outFile,officeType);
- }else if(officeType.equals("ppt")||officeType.equals("pptx")){
- PPT2Pdf(officePath,outFile);
- }else{
- throw new BaseException(FileCode.DOC_CONVERT_NOT_SUPPORT_FILE_FALL);
- }
- } else {
- throw new BaseException(FileCode.DOC_CONVERT_FILE_NOT_EXIST_FALL);
- }
- return outFile;
- }
- /**
- * 鏂囨。杞崲
- * @param officePath
- * @return
- */
- public static String OfficeToPdf(String officePath) {
+ } else if (officeType.equals("ppt") || officeType.equals("pptx")) {
+ PPT2Pdf(officePath, outFile);
+ } else {
+ throw new BaseException(FileCode.DOC_CONVERT_NOT_SUPPORT_FILE_FALL);
+ }
+ } else {
+ throw new BaseException(FileCode.DOC_CONVERT_FILE_NOT_EXIST_FALL);
+ }
+ return outFile;
+ }
- String[] split = officePath.split("鈱�");
- int lastIndex = split[0].lastIndexOf(".");
- int lastNameIndex = split[0].lastIndexOf("/");
+ /**
+ * 鏂囨。杞崲
+ *
+ * @param officePath
+ * @return
+ */
+ public static String OfficeToPdf(String officePath) {
- String officeType = split[0].substring(lastIndex+1);
- 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]);
- //鍒ゆ柇褰撳墠office鏂囦欢鏄惁宸茬粡杞负PDF,濡傛灉宸茶浆涓篜DF灏变笉闇�瑕佸啀娆¤浆鎹€��
- if (file.exists()) {
- //"doc", "docx", "xls","xlsx", "ppt", "pptx"
- try {
- if(officeType.equals("doc")||officeType.equals("docx")){
- Word2Pdf(split[0],OutPutPath+"/"+officeName+".pdf");
- }else if(officeType.equals("xls")||officeType.equals("xlsx")){
+ String[] split = officePath.split("鈱�");
+ int lastIndex = split[0].lastIndexOf(".");
+ int lastNameIndex = split[0].lastIndexOf("/");
+
+ String officeType = split[0].substring(lastIndex + 1);
+ 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]);
+ //鍒ゆ柇褰撳墠office鏂囦欢鏄惁宸茬粡杞负PDF,濡傛灉宸茶浆涓篜DF灏变笉闇�瑕佸啀娆¤浆鎹€��
+ if (file.exists()) {
+ //"doc", "docx", "xls","xlsx", "ppt", "pptx"
+ try {
+ if (officeType.equals("doc") || officeType.equals("docx")) {
+ Word2Pdf(split[0], OutPutPath + "/" + officeName + ".pdf");
+ } else if (officeType.equals("xls") || officeType.equals("xlsx")) {
// 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+".pdf");
- }else{
- System.out.println("鏃犳硶璇嗗埆璇ユ枃浠讹紒");
- return "Error";
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- } else {
- return "NotExists";
- }
- return OutPutPath+officeName;
- }
- /**
- * word鏂囨。鐨勫悎骞�
- * @param targetWordFile
- * @param sourceWordFile
- * @return
- * @throws Exception
- */
- public static File mergeWord(String targetWordFile,String sourceWordFile ) throws BaseException{
- File target=new File(targetWordFile);
- File source=new File(sourceWordFile);
- return mergeWord(target,source);
- }
- /**
- * word鏂囨。鐨勫悎骞�
- * @param
- * @param
- * @return
- * @throws Exception
- */
- public static File mergeWord(File target,File source ) throws BaseException{
+ xls2xlsx(split[0], OutPutPath + "/" + officeName + ".xlsx", officeType);
+ } else if (officeType.equals("ppt") || officeType.equals("pptx")) {
+ PPT2Pdf(split[0], OutPutPath + "/" + officeName + ".pdf");
+ } else {
+ System.out.println("鏃犳硶璇嗗埆璇ユ枃浠讹紒");
+ return "Error";
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ } else {
+ return "NotExists";
+ }
+ return OutPutPath + officeName;
+ }
- if(!target.exists() && !source.exists()) {
- return null;
- }else if(!source.exists() && target.exists()) {
- return target;
- }else if(source.exists() && !target.exists()) {
- return source;
- }
- // 楠岃瘉License
- if (!getLicense(OFFICE_WORD)) {
- return null;
- }
- FileInputStream tin=null;
- FileInputStream sin=null;
- FileOutputStream out=null;
- String temp=target.getParent()+File.separator+"mergeTemp";
- File temp_target=new File(temp+File.separator+target.getName());
- try {
- tin=new FileInputStream(target);
- sin=new FileInputStream(source);
- Document targetDoc = new Document(tin);
- Document sourceDoc = new Document(sin);
-// docBlankProcess(targetDoc);
- targetDoc.appendDocument(sourceDoc, ImportFormatMode.KEEP_SOURCE_FORMATTING);
+ /**
+ * word鏂囨。鐨勫悎骞�
+ *
+ * @param targetWordFile
+ * @param sourceWordFile
+ * @return
+ * @throws Exception
+ */
+ public static File mergeWord(String targetWordFile, String sourceWordFile) throws BaseException {
+ File target = new File(targetWordFile);
+ File source = new File(sourceWordFile);
+ return mergeWord(target, source);
+ }
+
+ /**
+ * word鏂囨。鐨勫悎骞�
+ *
+ * @param
+ * @param
+ * @return
+ * @throws Exception
+ */
+ public static File mergeWord(File target, File source) throws BaseException {
+
+ if (!target.exists() && !source.exists()) {
+ return null;
+ } else if (!source.exists() && target.exists()) {
+ return target;
+ } else if (source.exists() && !target.exists()) {
+ return source;
+ }
+ // 楠岃瘉License
+ if (!getLicense(OFFICE_WORD)) {
+ return null;
+ }
+ FileInputStream tin = null;
+ FileInputStream sin = null;
+ FileOutputStream out = null;
+ String temp = target.getParent() + File.separator + "mergeTemp";
+ File temp_target = new File(temp + File.separator + target.getName());
+ try {
+ tin = new FileInputStream(target);
+ sin = new FileInputStream(source);
+ Document targetDoc = new Document(tin);
+ Document sourceDoc = new Document(sin);
+ docBlankProcess(targetDoc);
+ targetDoc.appendDocument(sourceDoc, ImportFormatMode.KEEP_SOURCE_FORMATTING);
// NodeCollection t =sourceDoc.getChildNodes();
-// for(int c=0;c<t.getCount();c++) {
-// targetDoc.getChildNodes().add(t.get(c));
-// }
- File dir=new File(temp);
- if(!dir.exists()) {
- dir.mkdirs();
- }
- if(temp_target.exists()) {
- temp_target.delete();
- }
- if(temp_target.createNewFile()) {
- out=new FileOutputStream(temp_target);
+// for (int c = 0; c < t.getCount(); c++) {
+// targetDoc.getChildNodes().add(t.get(c));
+// }
+ File dir = new File(temp);
+ if (!dir.exists()) {
+ 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) {
- e.printStackTrace();
- throw new BaseException(FileCode.DOC_MERGE_FALL,e);
- }
- finally{
- try {
- if(tin!=null) {
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new BaseException(FileCode.DOC_MERGE_FALL, e);
+ } finally {
+ try {
+ if (tin != null) {
tin.close();
}
- if(sin!=null) {
- sin.close();
+ if (sin != null) {
+ sin.close();
}
- if(out!=null) {
+ if (out != null) {
out.flush();
- out.close();
+ out.close();
}
- }catch(IOException e) {
- throw new BaseException(FileCode.DOC_MERGE_FALL,e);
+ } catch (IOException e) {
+ throw new BaseException(FileCode.DOC_MERGE_FALL, e);
}
}
- return temp_target;
- }
+ return temp_target;
+ }
- public static void docBlankProcess(Document targetDoc) {
- NodeCollection nodes=targetDoc.getChildNodes(NodeType.PARAGRAPH, true);
- System.out.println(nodes.getCount());
- List <Node> ss=new ArrayList<>();
- for(Paragraph para :(Iterable<Paragraph>) nodes) {
- System.out.println("===========================");
- System.out.println(para.isEndOfSection());
- System.out.println(para.hasChildNodes());
- String text=para.getText();
- if("\r".equals(text))System.out.println("\\\\r");
- else if("\f".equals(text))System.out.println("\\\\f");
- else if("".equals(text.trim())) System.out.println("绌烘牸");
- else System.out.println(text);
+ public static void docBlankProcess(Document targetDoc) {
+ NodeCollection nodes = targetDoc.getChildNodes(NodeType.PARAGRAPH, true);
+ System.out.println(nodes.getCount());
+ List<Node> ss = new ArrayList<>();
+ for (Paragraph para : (Iterable<Paragraph>) nodes) {
+ System.out.println("===========================");
+ System.out.println(para.isEndOfSection());
+ System.out.println(para.hasChildNodes());
+ String text = para.getText();
+ if ("\r".equals(text)) System.out.println("\\\\r");
+ else if ("\f".equals(text)) System.out.println("\\\\f");
+ else if ("".equals(text.trim())) System.out.println("绌烘牸");
+ else System.out.println(text);
- NodeCollection pnodes =para.getChildNodes();
- if(pnodes.getCount()==0)para.appendChild(new Run(targetDoc,"a"));
- if(para.isEndOfSection())para.appendChild(new Run(targetDoc,"B"));
- System.out.println("sub nodes:"+pnodes.getCount());
- for(int i=0;i<pnodes.getCount();i++) {
- Node d=pnodes.get(i);
- System.out.println("type:"+NodeType.getName(d.getNodeType()));
+ NodeCollection pnodes = para.getChildNodes();
+ if (pnodes.getCount() == 0) para.appendChild(new Run(targetDoc, "a"));
+ if (para.isEndOfSection()) para.appendChild(new Run(targetDoc, "B"));
+ System.out.println("sub nodes:" + pnodes.getCount());
+ for (int i = 0; i < pnodes.getCount(); i++) {
+ Node d = pnodes.get(i);
+ System.out.println("type:" + NodeType.getName(d.getNodeType()));
- if("\r".equals(text))System.out.println("\\\\r");
- else if("\f".equals(text))System.out.println("\\\\f");
- else if("".equals(text.trim())) System.out.println("绌烘牸");
- else System.out.println(text);
- if("BOOKMARK_END".equals(NodeType.getName(d.getNodeType()))) {
- BookmarkEnd b=(BookmarkEnd)d;
- }
- if(d.getNodeType()==NodeType.SHAPE) {
- ss.add(d);
- }
- }
+ if ("\r".equals(text)) System.out.println("\\\\r");
+ else if ("\f".equals(text)) System.out.println("\\\\f");
+ else if ("".equals(text.trim())) System.out.println("绌烘牸");
+ else System.out.println(text);
+ if ("BOOKMARK_END".equals(NodeType.getName(d.getNodeType()))) {
+ BookmarkEnd b = (BookmarkEnd) d;
+ }
+ if (d.getNodeType() == NodeType.SHAPE) {
+ ss.add(d);
+ }
+ }
- }
- for(Node d:ss) {
- d.remove();
- }
+ }
+ for (Node d : ss) {
+ d.remove();
+ }
- }
+ }
- private static String appendDoc(String sohuyepath, String xuyepath, boolean includeSection) throws Exception {
- // 楠岃瘉License
- if (!getLicense(OFFICE_WORD)) {
- return null ;
- }
- Document dstDoc = new Document(sohuyepath);
- Document srcDoc = new Document(xuyepath);
- System.out.println("鐩爣鏂囨。椤垫暟锛�"+dstDoc.getPageCount()+" | 婧愭枃妗i〉鏁帮細"+srcDoc.getPageCount());
- if (includeSection) {
+ public static File appendDoc(File source, File target) throws Exception {
+ return new File(appendDoc(source.getPath(), target.getPath(), false));
+ }
+
+ public static String appendDoc(String sohuyepath, String xuyepath, boolean includeSection) throws Exception {
+ // 楠岃瘉License
+ if (!getLicense(OFFICE_WORD)) {
+ return null;
+ }
+ Document dstDoc = new Document(sohuyepath);
+ Document srcDoc = new Document(xuyepath);
+ System.out.println("鐩爣鏂囨。椤垫暟锛�" + dstDoc.getPageCount() + " | 婧愭枃妗i〉鏁帮細" + srcDoc.getPageCount());
+ if (includeSection) {
Iterator<Section> var3 = srcDoc.getSections().iterator();
while (var3.hasNext()) {
Section srcSection = (Section) var3.next();
@@ -491,9 +500,9 @@
insertDocumentAfterNode(node, dstDoc, srcDoc);
}
- File f=new File(sohuyepath);
- dstDoc.save(f.getParent()+"/merge/"+f.getName());
- return f.getParent()+"/merge/"+f.getName();
+ File f = new File(sohuyepath);
+ dstDoc.save(f.getParent() + "/merge/" + f.getName());
+ return f.getParent() + "/merge/" + f.getName();
}
private static void insertDocumentAfterNode(Node insertAfterNode, Document mainDoc, Document srcDoc)
@@ -526,47 +535,48 @@
}
}
- /**
- * 鎶婃簮鏂囨。鍐呭鏀惧埌鏈�鍚庝竴椤电殑椤垫湯
- * @param sohuyepath
- * @return
- * @throws Exception
- */
- private static void appendDocToPageTail(String sohuyepath) throws Exception {
- Document dstDoc = new Document(sohuyepath);
- int destPages=dstDoc.getPageCount();
- System.out.println("鍚堝苟鍚堢殑鏈�鍚庢�婚〉鏁帮細"+destPages);
- Node lastNode=dstDoc.getLastSection().getBody().getLastChild();
- Paragraph lp=null;
- if(lastNode.getNodeType()==NodeType.PARAGRAPH){
- lp=(Paragraph)lastNode;
- Node ld=lp.getFirstChild();
- while(ld!=null && ld.getNodeType()!=NodeType.SHAPE && ld.getNodeType()!=NodeType.RUN && ld.getNodeType()!=NodeType.TABLE){
- System.out.println("type name "+NodeType.getName(ld.getNodeType()));
- ld=ld.getPreviousSibling();
- }
- }
- System.out.println("鏈�鍚庝竴鑺傜偣锛�"+NodeType.getName(lastNode.getNodeType()));
- for(int i=0;i<40;i++) {
- Run t = new Run(dstDoc, "======\r");
- if(lp!=null){
- lp.insertBefore(t,lp.getLastChild());
- System.out.println("瀛愬厓绱犳暟锛�"+lp.getChildNodes().getCount());
- }
- System.out.println("鍚堝苟鍚堢殑鏈�鍚庢�婚〉鏁帮細"+dstDoc.getPageCount());
- if(destPages < dstDoc.getPageCount()){
- System.out.println("================鍒嗛〉=================");
- }
- }
- File ff=new File(sohuyepath);
- dstDoc.save(ff.getParent()+"/merge/"+ff.getName(),SaveFormat.DOCX);
- }
+ /**
+ * 鎶婃簮鏂囨。鍐呭鏀惧埌鏈�鍚庝竴椤电殑椤垫湯
+ *
+ * @param sohuyepath
+ * @return
+ * @throws Exception
+ */
+ private static void appendDocToPageTail(String sohuyepath) throws Exception {
+ Document dstDoc = new Document(sohuyepath);
+ int destPages = dstDoc.getPageCount();
+ System.out.println("鍚堝苟鍚堢殑鏈�鍚庢�婚〉鏁帮細" + destPages);
+ Node lastNode = dstDoc.getLastSection().getBody().getLastChild();
+ Paragraph lp = null;
+ if (lastNode.getNodeType() == NodeType.PARAGRAPH) {
+ lp = (Paragraph) lastNode;
+ Node ld = lp.getFirstChild();
+ while (ld != null && ld.getNodeType() != NodeType.SHAPE && ld.getNodeType() != NodeType.RUN && ld.getNodeType() != NodeType.TABLE) {
+ System.out.println("type name " + NodeType.getName(ld.getNodeType()));
+ ld = ld.getPreviousSibling();
+ }
+ }
+ System.out.println("鏈�鍚庝竴鑺傜偣锛�" + NodeType.getName(lastNode.getNodeType()));
+ for (int i = 0; i < 40; i++) {
+ Run t = new Run(dstDoc, "======\r");
+ if (lp != null) {
+ lp.insertBefore(t, lp.getLastChild());
+ System.out.println("瀛愬厓绱犳暟锛�" + lp.getChildNodes().getCount());
+ }
+ System.out.println("鍚堝苟鍚堢殑鏈�鍚庢�婚〉鏁帮細" + dstDoc.getPageCount());
+ if (destPages < dstDoc.getPageCount()) {
+ System.out.println("================鍒嗛〉=================");
+ }
+ }
+ File ff = new File(sohuyepath);
+ dstDoc.save(ff.getParent() + "/merge/" + ff.getName(), SaveFormat.DOCX);
+ }
- public static void main(String args[]) {
+ public static void main(String args[]) {
// String file="E:/宸ヤ綔鍐呭.xlsx";
// String file="E:/鐖嗙牬姣嶇嚎.xls";
// String file="E:/閲囬泦鎻愬彇鏃ュ織琛ㄧ粨鏋�.xlsx";
- String file="E:/FE淇℃伅绯荤粺鍥戒骇鍖栬В鍐虫柟妗圴1.0.docx";
+ String file = "E:/FE淇℃伅绯荤粺鍥戒骇鍖栬В鍐虫柟妗圴1.0.docx";
// AsposeUtil.OfficeToPdf(file);
// AsposeUtil.mergeWord("E:\\QQ\\浣忔埧鎷呬繚缃崲鍏徃.docx","E:\\QQ\\浣忔埧鎷呬繚缃崲鍏徃2.docx");
@@ -575,17 +585,17 @@
// }catch(Exception e) {
// e.printStackTrace();
// }
- try {
+ try {
// String sohuyepath="E:/QQ/浣忔埧鎷呬繚缃崲鍏徃.docx";
// String xuyepath="E:/QQ/FE淇℃伅绯荤粺鍥戒骇鍖栬В鍐虫柟妗圴1.0.docx";
// String npath=appendDoc(sohuyepath, xuyepath, false);
- String tail="E:/QQ/浣忔埧鎷呬繚缃崲鍏徃2.docx";
+ String tail = "E:/QQ/浣忔埧鎷呬繚缃崲鍏徃2.docx";
// appendDoc(npath, tail, false);
- appendDocToPageTail(tail);
+ appendDocToPageTail(tail);
- }catch(Exception e) {
+ } catch (Exception e) {
e.printStackTrace();
}
- }
+ }
}
--
Gitblit v1.9.2