2024年10月8日 更改转换pdf方法
This commit is contained in:
parent
ac9d8c1e36
commit
390e10e3bc
|
@ -257,6 +257,22 @@
|
||||||
<artifactId>jsch</artifactId>
|
<artifactId>jsch</artifactId>
|
||||||
<version>0.1.55</version>
|
<version>0.1.55</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!-- 引入libreoffice依赖-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jodconverter</groupId>
|
||||||
|
<artifactId>jodconverter-local</artifactId>
|
||||||
|
<version>${libreoffice.jodconverter-local.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.libreoffice</groupId>
|
||||||
|
<artifactId>ridl</artifactId>
|
||||||
|
<version>${libreoffice.ridl.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jodconverter</groupId>
|
||||||
|
<artifactId>jodconverter-spring-boot-starter</artifactId>
|
||||||
|
<version>${libreoffice.jodconverter-spring-boot-starter.version}</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
|
@ -61,20 +61,6 @@
|
||||||
<artifactId>logging-interceptor</artifactId>
|
<artifactId>logging-interceptor</artifactId>
|
||||||
<version>2.7.5</version>
|
<version>2.7.5</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- 连接libreOffice驱动包 -->
|
|
||||||
|
|
||||||
<!-- 连接libreOffice驱动包 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.artofsolving</groupId>
|
|
||||||
<artifactId>jodconverter</artifactId>
|
|
||||||
<version>2.2.1</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.openoffice</groupId>
|
|
||||||
<artifactId>bootstrap-connector</artifactId>
|
|
||||||
<version>0.1.1</version>
|
|
||||||
</dependency>
|
|
||||||
<!-- 连接libreOffice驱动包END -->
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cn.hutool</groupId>
|
<groupId>cn.hutool</groupId>
|
||||||
<artifactId>hutool-http</artifactId>
|
<artifactId>hutool-http</artifactId>
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
package org.jeecg.modules.httpinterface.controller;
|
||||||
|
|
||||||
|
import cn.hutool.core.convert.Convert;
|
||||||
|
import cn.hutool.core.net.url.UrlBuilder;
|
||||||
|
import cn.hutool.core.util.CharsetUtil;
|
||||||
|
import cn.hutool.crypto.SecureUtil;
|
||||||
|
import cn.hutool.http.HttpUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.compress.utils.Lists;
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
import org.jeecg.common.api.vo.Result;
|
||||||
|
import org.jeecg.common.aspect.annotation.AutoLog;
|
||||||
|
import org.jeecg.common.system.base.controller.JeecgController;
|
||||||
|
import org.jeecg.modules.kc.grab.exports.entity.TBks;
|
||||||
|
import org.jeecg.modules.kc.grab.exports.service.ITBksService;
|
||||||
|
import org.jeecg.modules.kc.jiaoshi.entity.KcZhihuijiaoshi;
|
||||||
|
import org.jeecg.modules.kc.jiaoshi.entity.KcZhihuijiaoshiMonitorLog;
|
||||||
|
import org.jeecg.modules.kc.jiaoshi.entity.KcZhihuijiaoshiOperateLog;
|
||||||
|
import org.jeecg.modules.kc.jiaoshi.service.IKcZhihuijiaoshiMonitorLogService;
|
||||||
|
import org.jeecg.modules.kc.jiaoshi.service.IKcZhihuijiaoshiOperateLogService;
|
||||||
|
import org.jeecg.modules.kc.jiaoshi.service.IKcZhihuijiaoshiService;
|
||||||
|
import org.jeecg.modules.tools.office.pdf.PDFUtil;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description: 对外部访问接口
|
||||||
|
* @Author: jeecg-boot
|
||||||
|
* @Date: 2023-04-10
|
||||||
|
* @Version: V1.0
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Api(tags="对外部访问接口")
|
||||||
|
//@RestController
|
||||||
|
@RequestMapping("/temp")
|
||||||
|
public class testController extends JeecgController<TBks, ITBksService> {
|
||||||
|
|
||||||
|
@AutoLog(value = "对外部访问接口-通过IDS访问奥威亚接口")
|
||||||
|
@ApiOperation(value="T_BKS-抓取-通过id查询", notes="T_BKS-抓取-通过id查询")
|
||||||
|
@GetMapping(value = "/testPDF")
|
||||||
|
public Result<?> runAvyApiByIds(String ids,String type){
|
||||||
|
PDFUtil.office2PDF("F:\\temp\\test\\a.docx","F:\\temp\\test\\a.pdf");
|
||||||
|
return Result.OK();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,54 +1,28 @@
|
||||||
package org.jeecg.modules.kc.teachingunitcontent.controller;
|
package org.jeecg.modules.kc.teachingunitcontent.controller;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.UnsupportedEncodingException;
|
|
||||||
import java.net.URLDecoder;
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
|
||||||
|
|
||||||
import cn.hutool.core.io.FileUtil;
|
|
||||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
||||||
import org.jeecg.common.api.vo.Result;
|
|
||||||
import org.jeecg.common.system.query.QueryGenerator;
|
|
||||||
import org.jeecg.common.util.DateUtils;
|
|
||||||
import org.jeecg.common.util.oConvertUtils;
|
|
||||||
import org.jeecg.modules.kc.teachingunitcontent.entity.KcTeachingUnitContentOne;
|
|
||||||
import org.jeecg.modules.kc.teachingunitcontent.entity.KcTeachingUnitContentThree;
|
|
||||||
import org.jeecg.modules.kc.teachingunitcontent.service.IKcTeachingUnitContentThreeService;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.jeecg.common.api.vo.Result;
|
||||||
|
import org.jeecg.common.aspect.annotation.AutoLog;
|
||||||
|
import org.jeecg.common.system.base.controller.JeecgController;
|
||||||
|
import org.jeecg.common.system.query.QueryGenerator;
|
||||||
|
import org.jeecg.modules.kc.teachingunitcontent.entity.KcTeachingUnitContentThree;
|
||||||
|
import org.jeecg.modules.kc.teachingunitcontent.service.IKcTeachingUnitContentThreeService;
|
||||||
import org.jeecg.modules.tools.Global;
|
import org.jeecg.modules.tools.Global;
|
||||||
import org.jeecg.modules.tools.pdf.PDFUtil;
|
|
||||||
import org.jeecg.modules.zyk.entity.ZykInfo;
|
import org.jeecg.modules.zyk.entity.ZykInfo;
|
||||||
import org.jeecg.modules.zyk.service.IZykService;
|
import org.jeecg.modules.zyk.service.IZykService;
|
||||||
import org.jeecg.modules.zyk.utils.WjlxEnum;
|
import org.jeecg.modules.zyk.utils.WjlxEnum;
|
||||||
import org.jeecgframework.poi.excel.ExcelImportUtil;
|
|
||||||
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
|
|
||||||
import org.jeecgframework.poi.excel.entity.ExportParams;
|
|
||||||
import org.jeecgframework.poi.excel.entity.ImportParams;
|
|
||||||
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
|
|
||||||
import org.jeecg.common.system.base.controller.JeecgController;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
|
||||||
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
import java.util.Map;
|
||||||
import com.alibaba.fastjson.JSON;
|
|
||||||
import io.swagger.annotations.Api;
|
|
||||||
import io.swagger.annotations.ApiOperation;
|
|
||||||
import org.jeecg.common.aspect.annotation.AutoLog;
|
|
||||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 教学单元内容-第三层
|
* @Description: 教学单元内容-第三层
|
||||||
|
|
|
@ -1,22 +1,19 @@
|
||||||
package org.jeecg.modules.kc.zyInfoStudent.controller;
|
package org.jeecg.modules.kc.zyInfoStudent.controller;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.UnsupportedEncodingException;
|
|
||||||
import java.net.URLDecoder;
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
|
||||||
|
|
||||||
import cn.hutool.core.io.FileUtil;
|
import cn.hutool.core.io.FileUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.shiro.SecurityUtils;
|
import org.apache.shiro.SecurityUtils;
|
||||||
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
import org.jeecg.common.api.vo.Result;
|
import org.jeecg.common.api.vo.Result;
|
||||||
|
import org.jeecg.common.aspect.annotation.AutoLog;
|
||||||
|
import org.jeecg.common.system.base.controller.JeecgController;
|
||||||
import org.jeecg.common.system.query.QueryGenerator;
|
import org.jeecg.common.system.query.QueryGenerator;
|
||||||
import org.jeecg.common.system.vo.LoginUser;
|
import org.jeecg.common.system.vo.LoginUser;
|
||||||
import org.jeecg.common.util.*;
|
import org.jeecg.common.util.*;
|
||||||
|
@ -36,12 +33,6 @@ import org.jeecg.modules.kc.zyInfoScjl.service.IZyInfoScjlService;
|
||||||
import org.jeecg.modules.kc.zyInfoStudent.entity.ZyInfoStudent;
|
import org.jeecg.modules.kc.zyInfoStudent.entity.ZyInfoStudent;
|
||||||
import org.jeecg.modules.kc.zyInfoStudent.entity.ZyInfoStudentSys;
|
import org.jeecg.modules.kc.zyInfoStudent.entity.ZyInfoStudentSys;
|
||||||
import org.jeecg.modules.kc.zyInfoStudent.service.IZyInfoStudentService;
|
import org.jeecg.modules.kc.zyInfoStudent.service.IZyInfoStudentService;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
|
|
||||||
import org.jeecg.modules.kc.zyInfoStudentHp.entity.ZyInfoStudentHp;
|
import org.jeecg.modules.kc.zyInfoStudentHp.entity.ZyInfoStudentHp;
|
||||||
import org.jeecg.modules.kc.zyInfoStudentHp.service.IZyInfoStudentHpService;
|
import org.jeecg.modules.kc.zyInfoStudentHp.service.IZyInfoStudentHpService;
|
||||||
import org.jeecg.modules.kc.zyInfoStudentPcz.service.IZyInfoStudentPczService;
|
import org.jeecg.modules.kc.zyInfoStudentPcz.service.IZyInfoStudentPczService;
|
||||||
|
@ -50,28 +41,25 @@ import org.jeecg.modules.system.service.ISysUserService;
|
||||||
import org.jeecg.modules.system.service.impl.SysBaseApiImpl;
|
import org.jeecg.modules.system.service.impl.SysBaseApiImpl;
|
||||||
import org.jeecg.modules.tools.DictUtils;
|
import org.jeecg.modules.tools.DictUtils;
|
||||||
import org.jeecg.modules.tools.Global;
|
import org.jeecg.modules.tools.Global;
|
||||||
import org.jeecg.modules.tools.pdf.PDFUtil;
|
import org.jeecg.modules.tools.office.pdf.PDFUtil;
|
||||||
import org.jeecg.modules.zyk.entity.ZykInfo;
|
import org.jeecg.modules.zyk.entity.ZykInfo;
|
||||||
import org.jeecg.modules.zyk.service.IZykService;
|
import org.jeecg.modules.zyk.service.IZykService;
|
||||||
import org.jeecg.modules.zyk.utils.WjlxEnum;
|
import org.jeecg.modules.zyk.utils.WjlxEnum;
|
||||||
import org.jeecgframework.poi.excel.ExcelImportUtil;
|
|
||||||
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
|
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
|
||||||
import org.jeecgframework.poi.excel.entity.ExportParams;
|
import org.jeecgframework.poi.excel.entity.ExportParams;
|
||||||
import org.jeecgframework.poi.excel.entity.ImportParams;
|
|
||||||
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
|
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
|
||||||
import org.jeecg.common.system.base.controller.JeecgController;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.mock.web.MockMultipartFile;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
|
||||||
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
import com.alibaba.fastjson.JSON;
|
|
||||||
import io.swagger.annotations.Api;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import org.jeecg.common.aspect.annotation.AutoLog;
|
import java.io.File;
|
||||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
import java.util.Arrays;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 学生提交作业
|
* @Description: 学生提交作业
|
||||||
|
|
|
@ -15,12 +15,8 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
import org.jeecg.common.api.vo.Result;
|
import org.jeecg.common.api.vo.Result;
|
||||||
import org.jeecg.common.aspect.annotation.AutoLog;
|
import org.jeecg.common.aspect.annotation.AutoLog;
|
||||||
import org.jeecg.common.system.base.controller.JeecgController;
|
import org.jeecg.common.system.base.controller.JeecgController;
|
||||||
import org.jeecg.common.system.query.QueryGenerator;
|
|
||||||
import org.jeecg.common.system.vo.LoginUser;
|
import org.jeecg.common.system.vo.LoginUser;
|
||||||
import org.jeecg.common.util.DateUtils;
|
import org.jeecg.common.util.DateUtils;
|
||||||
import org.jeecg.common.util.SpringContextHolder;
|
|
||||||
import org.jeecg.common.util.SpringContextUtils;
|
|
||||||
import org.jeecg.common.util.oConvertUtils;
|
|
||||||
import org.jeecg.modules.kc.config.entity.KcExportConfigTpkwcqkjzglx;
|
import org.jeecg.modules.kc.config.entity.KcExportConfigTpkwcqkjzglx;
|
||||||
import org.jeecg.modules.kc.config.service.IKcExportConfigTpkwcqkjzglxService;
|
import org.jeecg.modules.kc.config.service.IKcExportConfigTpkwcqkjzglxService;
|
||||||
import org.jeecg.modules.kc.kcSysConfig.entity.KcSysConfig;
|
import org.jeecg.modules.kc.kcSysConfig.entity.KcSysConfig;
|
||||||
|
@ -32,7 +28,7 @@ import org.jeecg.modules.kc.zyJxdg.entity.ZyJxdgSys;
|
||||||
import org.jeecg.modules.kc.zyJxdg.service.IZyJxdgService;
|
import org.jeecg.modules.kc.zyJxdg.service.IZyJxdgService;
|
||||||
import org.jeecg.modules.system.service.impl.SysBaseApiImpl;
|
import org.jeecg.modules.system.service.impl.SysBaseApiImpl;
|
||||||
import org.jeecg.modules.tools.Global;
|
import org.jeecg.modules.tools.Global;
|
||||||
import org.jeecg.modules.tools.pdf.PDFUtil;
|
import org.jeecg.modules.tools.office.pdf.PDFUtil;
|
||||||
import org.jeecg.modules.zyk.entity.ZykInfo;
|
import org.jeecg.modules.zyk.entity.ZykInfo;
|
||||||
import org.jeecg.modules.zyk.service.IZykService;
|
import org.jeecg.modules.zyk.service.IZykService;
|
||||||
import org.jeecg.modules.zyk.utils.WjlxEnum;
|
import org.jeecg.modules.zyk.utils.WjlxEnum;
|
||||||
|
|
|
@ -0,0 +1,130 @@
|
||||||
|
package org.jeecg.modules.tools.office.convert;
|
||||||
|
|
||||||
|
import org.apache.poi.poifs.filesystem.FileMagic;
|
||||||
|
import org.apache.poi.ss.usermodel.PrintSetup;
|
||||||
|
import org.apache.poi.ss.usermodel.Sheet;
|
||||||
|
import org.apache.poi.ss.usermodel.Workbook;
|
||||||
|
import org.apache.poi.ss.usermodel.WorkbookFactory;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
|
||||||
|
public final class MyOfficeUtils {
|
||||||
|
|
||||||
|
private MyOfficeUtils () {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取文档类型
|
||||||
|
* @param file 待转换的文件
|
||||||
|
* @return 文件转换器
|
||||||
|
* @throws IOException io异常
|
||||||
|
*/
|
||||||
|
public static FileMagic getFileMagic(File file) throws IOException {
|
||||||
|
try (FileInputStream inp = new FileInputStream(file)) {
|
||||||
|
return getFileMagic(inp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取文档类型
|
||||||
|
* @param inp 待转换的文件流
|
||||||
|
* @return 文件转换器
|
||||||
|
* @throws IOException io异常
|
||||||
|
*/
|
||||||
|
public static FileMagic getFileMagic(InputStream inp) throws IOException {
|
||||||
|
InputStream is = FileMagic.prepareToCheckMagic(inp);
|
||||||
|
return FileMagic.valueOf(is);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断是否excel03版本
|
||||||
|
* @param file 待检测的文件
|
||||||
|
* @return true:是03版本 false:不是03版本
|
||||||
|
*/
|
||||||
|
public static boolean isExcel03(File file) {
|
||||||
|
try {
|
||||||
|
boolean ole2 = FileMagic.OLE2 == getFileMagic(file);
|
||||||
|
if (!ole2) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
try (Workbook workbook = WorkbookFactory.create(file)) {
|
||||||
|
if(workbook != null) return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
} catch (Exception e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断是否excel07版本
|
||||||
|
* @param file 待检测的文件
|
||||||
|
* @return true:是07版本 false:不是07版本
|
||||||
|
*/
|
||||||
|
public static boolean isExcel07(File file) {
|
||||||
|
try {
|
||||||
|
boolean ole2 = FileMagic.OOXML == getFileMagic(file);
|
||||||
|
if (!ole2) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
try (Workbook workbook = WorkbookFactory.create(file)) {
|
||||||
|
if(workbook != null) return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
} catch (Exception e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* excel默认打印配置
|
||||||
|
* @param workbook 文档对象
|
||||||
|
*/
|
||||||
|
public static void setDefaultExcelPrintScale (Workbook workbook) {
|
||||||
|
int numberOfSheets = workbook.getNumberOfSheets();
|
||||||
|
for (int i = 0; i < numberOfSheets; i++) {
|
||||||
|
workbook.removePrintArea(i);
|
||||||
|
setSheetPrintScale(workbook.getSheetAt(i), null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void setExcelPrintScale (Workbook workbook, OfficeInputExcelPrintSetup inputExcelPrintSetup) {
|
||||||
|
int numberOfSheets = workbook.getNumberOfSheets();
|
||||||
|
for (int i = 0; i < numberOfSheets; i++) {
|
||||||
|
workbook.removePrintArea(i);
|
||||||
|
setSheetPrintScale(workbook.getSheetAt(i), inputExcelPrintSetup);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void setSheetPrintScale(Sheet sheet, OfficeInputExcelPrintSetup inputExcelPrintSetup) {
|
||||||
|
PrintSetup setup = sheet.getPrintSetup();
|
||||||
|
if (inputExcelPrintSetup == null) {
|
||||||
|
setup.setLandscape(true);
|
||||||
|
setup.setFitHeight((short) 0);
|
||||||
|
setup.setFitWidth((short) 1);
|
||||||
|
setup.setPaperSize(PrintSetup.A4_PAPERSIZE);
|
||||||
|
sheet.setFitToPage(true);
|
||||||
|
sheet.setPrintRowAndColumnHeadings(false);
|
||||||
|
sheet.setHorizontallyCenter(true);
|
||||||
|
sheet.setVerticallyCenter(false);
|
||||||
|
} else {
|
||||||
|
setup.setLandscape(inputExcelPrintSetup.isLandscape());
|
||||||
|
setup.setFitHeight(inputExcelPrintSetup.getFitHeight());
|
||||||
|
setup.setFitWidth(inputExcelPrintSetup.getFitWidth());
|
||||||
|
setup.setPaperSize(inputExcelPrintSetup.getPaperSize());
|
||||||
|
sheet.setFitToPage(inputExcelPrintSetup.isFitToPage());
|
||||||
|
sheet.setPrintRowAndColumnHeadings(inputExcelPrintSetup.isPrintRowAndColumnHeadings());
|
||||||
|
sheet.setHorizontallyCenter(inputExcelPrintSetup.isHorizontallyCenter());
|
||||||
|
sheet.setVerticallyCenter(inputExcelPrintSetup.isVerticallyCenter());
|
||||||
|
}
|
||||||
|
sheet.setMargin(Sheet.TopMargin, 0.75);
|
||||||
|
sheet.setMargin(Sheet.RightMargin, 0.70);
|
||||||
|
sheet.setMargin(Sheet.BottomMargin, 0.75);
|
||||||
|
sheet.setMargin(Sheet.LeftMargin, 0.70);
|
||||||
|
sheet.setMargin(Sheet.HeaderMargin, 0.30);
|
||||||
|
sheet.setMargin(Sheet.FooterMargin, 0.30);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,239 @@
|
||||||
|
package org.jeecg.modules.tools.office.convert;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.poi.poifs.filesystem.FileMagic;
|
||||||
|
import org.apache.poi.ss.usermodel.Workbook;
|
||||||
|
import org.apache.poi.ss.usermodel.WorkbookFactory;
|
||||||
|
import org.apache.poi.util.IOUtils;
|
||||||
|
import org.jeecg.common.util.SpringContextUtils;
|
||||||
|
import org.jeecg.modules.tools.Global;
|
||||||
|
import org.jodconverter.core.DocumentConverter;
|
||||||
|
import org.jodconverter.core.document.DefaultDocumentFormatRegistry;
|
||||||
|
import org.jodconverter.core.document.DocumentFormat;
|
||||||
|
import org.jodconverter.core.job.ConversionJobWithOptionalSourceFormatUnspecified;
|
||||||
|
import org.jodconverter.core.job.ConversionJobWithSourceSpecified;
|
||||||
|
import org.jodconverter.core.office.OfficeException;
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文档转化工具统一入口
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
public final class OfficeConvertHelper {
|
||||||
|
|
||||||
|
|
||||||
|
private static Global global = SpringContextUtils.getBean(Global.class);
|
||||||
|
public void setGlobal(Global g){
|
||||||
|
global = g;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String TMP_DIRECTORY = global.getTmpDickPath();
|
||||||
|
|
||||||
|
private OfficeConvertHelper () {}
|
||||||
|
|
||||||
|
public static OfficeConverterBox converter(DocumentConverter documentConverter) {
|
||||||
|
return new OfficeConverterBox(documentConverter);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 转换
|
||||||
|
* @param outputHelper 输出对象
|
||||||
|
* @throws IOException io异常
|
||||||
|
* @throws OfficeException office异常
|
||||||
|
*/
|
||||||
|
static void execute(OfficeOutputBox outputHelper) throws IOException, OfficeException {
|
||||||
|
OfficeInputBox officeInputBox = outputHelper.getOfficeInputBox();
|
||||||
|
OfficeConverterBox officeConverterBox = officeInputBox.getOfficeConverterBox();
|
||||||
|
|
||||||
|
DocumentConverter documentConverter = officeConverterBox.getDocumentConverter();
|
||||||
|
|
||||||
|
File inpFile = officeInputBox.getInpFile();
|
||||||
|
InputStream inp = officeInputBox.getInp();
|
||||||
|
boolean inpCloseStream = officeInputBox.isCloseStream();
|
||||||
|
DocumentFormat inpDocumentFormat = officeInputBox.getInpDocumentFormat();
|
||||||
|
OfficeInputExcelPrintSetup inputExcelPrintSetup = officeInputBox.getOfficeInputExcelPrintSetup();
|
||||||
|
|
||||||
|
File outFile = outputHelper.getOutFile();
|
||||||
|
OutputStream outp = outputHelper.getOutp();
|
||||||
|
boolean outpCloseStream = outputHelper.isCloseStream();
|
||||||
|
DocumentFormat outDocumentFormat = outputHelper.getOutDocumentFormat();
|
||||||
|
|
||||||
|
if (inpFile != null) {
|
||||||
|
DocumentFormat isDocFormat = inpDocumentFormat;
|
||||||
|
if (MyOfficeUtils.isExcel03(inpFile)) {
|
||||||
|
isDocFormat = DefaultDocumentFormatRegistry.XLS;
|
||||||
|
} else if (MyOfficeUtils.isExcel07(inpFile)) {
|
||||||
|
isDocFormat = DefaultDocumentFormatRegistry.XLSX;
|
||||||
|
}
|
||||||
|
if (DefaultDocumentFormatRegistry.XLS == isDocFormat || DefaultDocumentFormatRegistry.XLSX == isDocFormat) {
|
||||||
|
File file = new File(TMP_DIRECTORY, "xls" + UUID.randomUUID().toString().replace("-", "") + ".tmp");
|
||||||
|
try {
|
||||||
|
try (
|
||||||
|
OutputStream tmpOs = toBufferedOutputStream(Files.newOutputStream(file.toPath()));
|
||||||
|
Workbook workbook = WorkbookFactory.create(inpFile);
|
||||||
|
) {
|
||||||
|
MyOfficeUtils.setExcelPrintScale(workbook, inputExcelPrintSetup);
|
||||||
|
workbook.write(tmpOs);
|
||||||
|
}
|
||||||
|
ConversionJobWithSourceSpecified as = documentConverter.convert(file).as(isDocFormat);
|
||||||
|
if (outFile != null) {
|
||||||
|
if (outDocumentFormat != null) {
|
||||||
|
as.to(outFile).as(outDocumentFormat).execute();
|
||||||
|
} else {
|
||||||
|
as.to(outFile).execute();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
OutputStream bufferedOs = toBufferedOutputStream(outp);
|
||||||
|
as.to(bufferedOs, outpCloseStream).as(outDocumentFormat).execute();
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
Files.delete(file.toPath());
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("文档转换出现问题:" + e.getMessage(),e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (inpDocumentFormat != null) {
|
||||||
|
ConversionJobWithSourceSpecified as = documentConverter.convert(inpFile).as(inpDocumentFormat);
|
||||||
|
if (outFile != null) {
|
||||||
|
if (outDocumentFormat != null) {
|
||||||
|
as.to(outFile).as(outDocumentFormat).execute();
|
||||||
|
} else {
|
||||||
|
as.to(outFile).execute();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
OutputStream bufferedOs = toBufferedOutputStream(outp);
|
||||||
|
as.to(bufferedOs, outpCloseStream).as(outDocumentFormat).execute();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ConversionJobWithOptionalSourceFormatUnspecified as = documentConverter.convert(inpFile);
|
||||||
|
if (outFile != null) {
|
||||||
|
if (outDocumentFormat != null) {
|
||||||
|
as.to(outFile).as(outDocumentFormat).execute();
|
||||||
|
} else {
|
||||||
|
as.to(outFile).execute();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
OutputStream bufferedOs = toBufferedOutputStream(outp);
|
||||||
|
as.to(bufferedOs, outpCloseStream).as(outDocumentFormat).execute();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
File unknownFile = new File(TMP_DIRECTORY, "unknown" + UUID.randomUUID().toString().replace("-", "") + ".tmp");
|
||||||
|
try {
|
||||||
|
InputStream bufferedIs = null;
|
||||||
|
try {
|
||||||
|
bufferedIs = FileMagic.prepareToCheckMagic(inp);
|
||||||
|
IOUtils.copy(bufferedIs, unknownFile);
|
||||||
|
} finally {
|
||||||
|
if (inpCloseStream) {
|
||||||
|
if (bufferedIs != null) {
|
||||||
|
try {
|
||||||
|
bufferedIs.close();
|
||||||
|
bufferedIs = null;
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("文档转换出现问题:" + e.getMessage(),e);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
inp.close();
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("文档转换出现问题:" + e.getMessage(),e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (bufferedIs != null) {
|
||||||
|
try {
|
||||||
|
bufferedIs.reset();
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("文档转换出现问题:" + e.getMessage(),e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DocumentFormat isDocFormat = inpDocumentFormat;
|
||||||
|
if (MyOfficeUtils.isExcel03(unknownFile)) {
|
||||||
|
isDocFormat = DefaultDocumentFormatRegistry.XLS;
|
||||||
|
} else if (MyOfficeUtils.isExcel07(unknownFile)) {
|
||||||
|
isDocFormat = DefaultDocumentFormatRegistry.XLSX;
|
||||||
|
}
|
||||||
|
if (DefaultDocumentFormatRegistry.XLS == isDocFormat || DefaultDocumentFormatRegistry.XLSX == isDocFormat) {
|
||||||
|
File file = new File(TMP_DIRECTORY, "xls" + UUID.randomUUID().toString().replace("-", "") + ".tmp");
|
||||||
|
try {
|
||||||
|
try (
|
||||||
|
OutputStream tmpOs = toBufferedOutputStream(Files.newOutputStream(file.toPath()));
|
||||||
|
Workbook workbook = WorkbookFactory.create(unknownFile);
|
||||||
|
) {
|
||||||
|
MyOfficeUtils.setExcelPrintScale(workbook, inputExcelPrintSetup);
|
||||||
|
workbook.write(tmpOs);
|
||||||
|
}
|
||||||
|
ConversionJobWithSourceSpecified as = documentConverter.convert(file).as(isDocFormat);
|
||||||
|
if (outFile != null) {
|
||||||
|
if (outDocumentFormat != null) {
|
||||||
|
as.to(outFile).as(outDocumentFormat).execute();
|
||||||
|
} else {
|
||||||
|
as.to(outFile).execute();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
OutputStream bufferedOs = toBufferedOutputStream(outp);
|
||||||
|
as.to(bufferedOs, outpCloseStream).as(outDocumentFormat).execute();
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
Files.delete(file.toPath());
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("文档转换出现问题:" + e.getMessage(),e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (inpDocumentFormat != null) {
|
||||||
|
ConversionJobWithSourceSpecified as = documentConverter.convert(unknownFile).as(inpDocumentFormat);
|
||||||
|
if (outFile != null) {
|
||||||
|
if (outDocumentFormat != null) {
|
||||||
|
as.to(outFile).as(outDocumentFormat).execute();
|
||||||
|
} else {
|
||||||
|
as.to(outFile).execute();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
OutputStream bufferedOs = toBufferedOutputStream(outp);
|
||||||
|
as.to(bufferedOs, outpCloseStream).as(outDocumentFormat).execute();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ConversionJobWithOptionalSourceFormatUnspecified as = documentConverter.convert(unknownFile);
|
||||||
|
if (outFile != null) {
|
||||||
|
if (outDocumentFormat != null) {
|
||||||
|
as.to(outFile).as(outDocumentFormat).execute();
|
||||||
|
} else {
|
||||||
|
as.to(outFile).execute();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
OutputStream bufferedOs = toBufferedOutputStream(outp);
|
||||||
|
as.to(bufferedOs, outpCloseStream).as(outDocumentFormat).execute();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
Files.delete(unknownFile.toPath());
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("文档转换出现问题:" + e.getMessage(),e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static OutputStream toBufferedOutputStream(OutputStream stream) {
|
||||||
|
if (stream instanceof BufferedOutputStream) {
|
||||||
|
return stream;
|
||||||
|
}
|
||||||
|
return new BufferedOutputStream(stream);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
package org.jeecg.modules.tools.office.convert;
|
||||||
|
|
||||||
|
import org.jodconverter.core.DocumentConverter;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.InputStream;
|
||||||
|
|
||||||
|
public class OfficeConverterBox {
|
||||||
|
|
||||||
|
private final DocumentConverter documentConverter;
|
||||||
|
|
||||||
|
OfficeConverterBox(DocumentConverter documentConverter) {
|
||||||
|
this.documentConverter = documentConverter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public OfficeInputBox from(File inpFile) {
|
||||||
|
return new OfficeInputBox(this, inpFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
public OfficeInputBox from(InputStream inp) {
|
||||||
|
return new OfficeInputBox(this, inp, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public OfficeInputBox from(InputStream inp, boolean closeStream) {
|
||||||
|
return new OfficeInputBox(this, inp, closeStream);
|
||||||
|
}
|
||||||
|
|
||||||
|
DocumentConverter getDocumentConverter() {
|
||||||
|
return documentConverter;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,114 @@
|
||||||
|
package org.jeecg.modules.tools.office.convert;
|
||||||
|
|
||||||
|
import org.jodconverter.core.document.DefaultDocumentFormatRegistry;
|
||||||
|
import org.jodconverter.core.document.DocumentFormat;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
|
||||||
|
public class OfficeInputBox {
|
||||||
|
|
||||||
|
private final OfficeConverterBox officeConverterBox;
|
||||||
|
|
||||||
|
private File inpFile;
|
||||||
|
|
||||||
|
private InputStream inp;
|
||||||
|
|
||||||
|
private boolean closeStream = true;
|
||||||
|
|
||||||
|
private DocumentFormat inpDocumentFormat;
|
||||||
|
|
||||||
|
private OfficeInputExcelPrintSetup officeInputExcelPrintSetup;
|
||||||
|
|
||||||
|
OfficeInputBox(OfficeConverterBox officeConverterBox, File inpFile) {
|
||||||
|
this.officeConverterBox = officeConverterBox;
|
||||||
|
this.inpFile = inpFile;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param officeConverterBox 转换对象
|
||||||
|
* @param inp 输入流
|
||||||
|
* @param closeStream 是否关闭输入流,默认true
|
||||||
|
*/
|
||||||
|
OfficeInputBox(OfficeConverterBox officeConverterBox, InputStream inp, boolean closeStream) {
|
||||||
|
this.officeConverterBox = officeConverterBox;
|
||||||
|
this.inp = inp;
|
||||||
|
this.closeStream = closeStream;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param documentFormat @see {org.jodconverter.core.document.DefaultDocumentFormatRegistry}
|
||||||
|
* @return this
|
||||||
|
*/
|
||||||
|
public OfficeInputBox as(DocumentFormat documentFormat) {
|
||||||
|
this.inpDocumentFormat = documentFormat;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param extension @see {org.jodconverter.core.document.DefaultDocumentFormatRegistry}
|
||||||
|
* @return this
|
||||||
|
*/
|
||||||
|
public OfficeInputBox asExtension(String extension) {
|
||||||
|
this.inpDocumentFormat = DefaultDocumentFormatRegistry.getFormatByExtension(extension);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param mediaType @see {org.jodconverter.core.document.DefaultDocumentFormatRegistry}
|
||||||
|
* @return this
|
||||||
|
*/
|
||||||
|
public OfficeInputBox asMediaType(String mediaType) {
|
||||||
|
this.inpDocumentFormat = DefaultDocumentFormatRegistry.getFormatByMediaType(mediaType);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public OfficeInputExcelPrintSetup excel() {
|
||||||
|
if (this.officeInputExcelPrintSetup == null) {
|
||||||
|
this.officeInputExcelPrintSetup = new OfficeInputExcelPrintSetup(this);
|
||||||
|
}
|
||||||
|
return this.officeInputExcelPrintSetup;
|
||||||
|
}
|
||||||
|
|
||||||
|
public OfficeOutputBox to(File outFile) {
|
||||||
|
return new OfficeOutputBox(this, outFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
public OfficeOutputStreamBox to(OutputStream outp) {
|
||||||
|
return new OfficeOutputStreamBox(this, outp, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public OfficeOutputStreamBox to(OutputStream outp, boolean closeStream) {
|
||||||
|
return new OfficeOutputStreamBox(this, outp, closeStream);
|
||||||
|
}
|
||||||
|
|
||||||
|
OfficeConverterBox getOfficeConverterBox() {
|
||||||
|
return officeConverterBox;
|
||||||
|
}
|
||||||
|
|
||||||
|
File getInpFile() {
|
||||||
|
return inpFile;
|
||||||
|
}
|
||||||
|
|
||||||
|
InputStream getInp() {
|
||||||
|
return inp;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean isCloseStream() {
|
||||||
|
return closeStream;
|
||||||
|
}
|
||||||
|
|
||||||
|
DocumentFormat getInpDocumentFormat() {
|
||||||
|
return inpDocumentFormat;
|
||||||
|
}
|
||||||
|
|
||||||
|
OfficeInputExcelPrintSetup getOfficeInputExcelPrintSetup() {
|
||||||
|
return this.officeInputExcelPrintSetup;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,170 @@
|
||||||
|
package org.jeecg.modules.tools.office.convert;
|
||||||
|
|
||||||
|
import org.apache.poi.ss.usermodel.PrintSetup;
|
||||||
|
|
||||||
|
public class OfficeInputExcelPrintSetup {
|
||||||
|
|
||||||
|
private final OfficeInputBox officeInputBox;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 默认A4纸
|
||||||
|
*/
|
||||||
|
private short paperSize = PrintSetup.A4_PAPERSIZE;
|
||||||
|
/**
|
||||||
|
* 默认横版
|
||||||
|
*/
|
||||||
|
private boolean landscape = true;
|
||||||
|
/**
|
||||||
|
* 默认水平内容在一页上
|
||||||
|
*/
|
||||||
|
private short fitWidth = 1;
|
||||||
|
/**
|
||||||
|
* 默认垂直内容分页
|
||||||
|
*/
|
||||||
|
private short fitHeight = 0;
|
||||||
|
/**
|
||||||
|
* 默认铺满纸张
|
||||||
|
*/
|
||||||
|
private boolean fitToPage = true;
|
||||||
|
/**
|
||||||
|
* 默认内容水平居中
|
||||||
|
*/
|
||||||
|
private boolean horizontallyCenter = true;
|
||||||
|
/**
|
||||||
|
* 默认内容垂直与顶部对齐
|
||||||
|
*/
|
||||||
|
private boolean verticallyCenter = false;
|
||||||
|
/**
|
||||||
|
* 默认不打印excel的行号和列号
|
||||||
|
*/
|
||||||
|
private boolean printRowAndColumnHeadings = false;
|
||||||
|
|
||||||
|
OfficeInputExcelPrintSetup(OfficeInputBox officeInputBox) {
|
||||||
|
this.officeInputBox = officeInputBox;
|
||||||
|
}
|
||||||
|
|
||||||
|
public OfficeInputBox end() {
|
||||||
|
return this.officeInputBox;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置打印纸张大小
|
||||||
|
* @param paperSize @see {org.apache.poi.ss.usermodel.PrintSetup}
|
||||||
|
* @return this
|
||||||
|
*/
|
||||||
|
public OfficeInputExcelPrintSetup setPaperSize(short paperSize) {
|
||||||
|
this.paperSize = paperSize;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置打印方向,默认true
|
||||||
|
* @param landscape 是否横版打印
|
||||||
|
* @return this
|
||||||
|
*/
|
||||||
|
public OfficeInputExcelPrintSetup setLandscape(boolean landscape) {
|
||||||
|
this.landscape = landscape;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置打印宽度
|
||||||
|
* @param fitWidth 是否打印宽度方向的内容在一页上
|
||||||
|
* @return this
|
||||||
|
*/
|
||||||
|
public OfficeInputExcelPrintSetup setFitWidth(boolean fitWidth) {
|
||||||
|
if (fitWidth) {
|
||||||
|
this.fitWidth = 1;
|
||||||
|
} else {
|
||||||
|
this.fitWidth = 0;
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置打印高度
|
||||||
|
* @param fitHeight 是否打印高度方向的内容在一页上
|
||||||
|
* @return this
|
||||||
|
*/
|
||||||
|
public OfficeInputExcelPrintSetup setFitHeight(boolean fitHeight) {
|
||||||
|
if (fitHeight) {
|
||||||
|
this.fitHeight = 1;
|
||||||
|
} else {
|
||||||
|
this.fitHeight = 0;
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置是否铺满
|
||||||
|
* @param fitToPage 内容是否铺满页面
|
||||||
|
* @return this
|
||||||
|
*/
|
||||||
|
public OfficeInputExcelPrintSetup setFitToPage(boolean fitToPage) {
|
||||||
|
this.fitToPage = fitToPage;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置水平居中
|
||||||
|
* @param horizontallyCenter 内容是否水平居中
|
||||||
|
* @return this
|
||||||
|
*/
|
||||||
|
public OfficeInputExcelPrintSetup setHorizontallyCenter(boolean horizontallyCenter) {
|
||||||
|
this.horizontallyCenter = horizontallyCenter;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置垂直居中
|
||||||
|
* @param verticallyCenter 内容是否垂直居中
|
||||||
|
* @return this
|
||||||
|
*/
|
||||||
|
public OfficeInputExcelPrintSetup setVerticallyCenter(boolean verticallyCenter) {
|
||||||
|
this.verticallyCenter = verticallyCenter;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置是否打印行号和列号,默认false
|
||||||
|
* @param show 设置是否打印行号和列号
|
||||||
|
* @return this
|
||||||
|
*/
|
||||||
|
public OfficeInputExcelPrintSetup setPrintRowAndColumnHeadings(boolean show) {
|
||||||
|
this.printRowAndColumnHeadings = show;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
short getPaperSize() {
|
||||||
|
return paperSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean isLandscape() {
|
||||||
|
return landscape;
|
||||||
|
}
|
||||||
|
|
||||||
|
short getFitWidth() {
|
||||||
|
return fitWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
short getFitHeight() {
|
||||||
|
return fitHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean isFitToPage() {
|
||||||
|
return fitToPage;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean isHorizontallyCenter() {
|
||||||
|
return horizontallyCenter;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean isVerticallyCenter() {
|
||||||
|
return verticallyCenter;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean isPrintRowAndColumnHeadings() {
|
||||||
|
return printRowAndColumnHeadings;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,88 @@
|
||||||
|
package org.jeecg.modules.tools.office.convert;
|
||||||
|
|
||||||
|
import org.jodconverter.core.document.DefaultDocumentFormatRegistry;
|
||||||
|
import org.jodconverter.core.document.DocumentFormat;
|
||||||
|
import org.jodconverter.core.office.OfficeException;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
|
||||||
|
public class OfficeOutputBox {
|
||||||
|
|
||||||
|
private final OfficeInputBox officeInputBox;
|
||||||
|
|
||||||
|
private File outFile;
|
||||||
|
|
||||||
|
private OutputStream outp;
|
||||||
|
|
||||||
|
private boolean closeStream = true;
|
||||||
|
|
||||||
|
private DocumentFormat outDocumentFormat;
|
||||||
|
|
||||||
|
OfficeOutputBox(OfficeInputBox officeInputBox, File outFile) {
|
||||||
|
this.officeInputBox = officeInputBox;
|
||||||
|
this.outFile = outFile;
|
||||||
|
}
|
||||||
|
|
||||||
|
OfficeOutputBox(OfficeOutputStreamBox officeOutputStreamBox) {
|
||||||
|
this.officeInputBox = officeOutputStreamBox.getOfficeInputBox();
|
||||||
|
this.outp = officeOutputStreamBox.getOutp();
|
||||||
|
this.closeStream = officeOutputStreamBox.isCloseStream();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param documentFormat @see {org.jodconverter.core.document.DefaultDocumentFormatRegistry}
|
||||||
|
* @return this
|
||||||
|
*/
|
||||||
|
public OfficeOutputBox as(DocumentFormat documentFormat) {
|
||||||
|
this.outDocumentFormat = documentFormat;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param extension @see {org.jodconverter.core.document.DefaultDocumentFormatRegistry}
|
||||||
|
* @return this
|
||||||
|
*/
|
||||||
|
public OfficeOutputBox asExtension(String extension) {
|
||||||
|
this.outDocumentFormat = DefaultDocumentFormatRegistry.getFormatByExtension(extension);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param mediaType @see {org.jodconverter.core.document.DefaultDocumentFormatRegistry}
|
||||||
|
* @return this
|
||||||
|
*/
|
||||||
|
public OfficeOutputBox asMediaType(String mediaType) {
|
||||||
|
this.outDocumentFormat = DefaultDocumentFormatRegistry.getFormatByMediaType(mediaType);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void execute() throws IOException, OfficeException {
|
||||||
|
OfficeConvertHelper.execute(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public OfficeInputBox getOfficeInputBox() {
|
||||||
|
return officeInputBox;
|
||||||
|
}
|
||||||
|
|
||||||
|
public File getOutFile() {
|
||||||
|
return outFile;
|
||||||
|
}
|
||||||
|
|
||||||
|
public OutputStream getOutp() {
|
||||||
|
return outp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isCloseStream() {
|
||||||
|
return closeStream;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DocumentFormat getOutDocumentFormat() {
|
||||||
|
return outDocumentFormat;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,69 @@
|
||||||
|
package org.jeecg.modules.tools.office.convert;
|
||||||
|
|
||||||
|
import org.jodconverter.core.document.DocumentFormat;
|
||||||
|
|
||||||
|
import java.io.OutputStream;
|
||||||
|
|
||||||
|
public class OfficeOutputStreamBox {
|
||||||
|
|
||||||
|
private final OfficeInputBox officeInputBox;
|
||||||
|
|
||||||
|
private final OutputStream outp;
|
||||||
|
|
||||||
|
private final boolean closeStream;
|
||||||
|
|
||||||
|
OfficeOutputStreamBox(OfficeInputBox officeInputBox, OutputStream outp, boolean closeStream) {
|
||||||
|
this.officeInputBox = officeInputBox;
|
||||||
|
this.outp = outp;
|
||||||
|
this.closeStream = closeStream;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param documentFormat @see {org.jodconverter.core.document.DefaultDocumentFormatRegistry}
|
||||||
|
* @return 文档输出类
|
||||||
|
*/
|
||||||
|
public OfficeOutputBox as(DocumentFormat documentFormat) {
|
||||||
|
OfficeOutputBox officeOutputBox = new OfficeOutputBox(this);
|
||||||
|
officeOutputBox.as(documentFormat);
|
||||||
|
return officeOutputBox;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param extension @see {org.jodconverter.core.document.DefaultDocumentFormatRegistry}
|
||||||
|
* @return 文档输出类
|
||||||
|
*/
|
||||||
|
public OfficeOutputBox asExtension(String extension) {
|
||||||
|
OfficeOutputBox officeOutputBox = new OfficeOutputBox(this);
|
||||||
|
officeOutputBox.asExtension(extension);
|
||||||
|
return officeOutputBox;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param mediaType @see {org.jodconverter.core.document.DefaultDocumentFormatRegistry}
|
||||||
|
* @return 文档输出类
|
||||||
|
*/
|
||||||
|
public OfficeOutputBox asMediaType(String mediaType) {
|
||||||
|
OfficeOutputBox officeOutputBox = new OfficeOutputBox(this);
|
||||||
|
officeOutputBox.asMediaType(mediaType);
|
||||||
|
return officeOutputBox;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
OfficeInputBox getOfficeInputBox() {
|
||||||
|
return officeInputBox;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
OutputStream getOutp() {
|
||||||
|
return outp;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
boolean isCloseStream() {
|
||||||
|
return closeStream;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,65 @@
|
||||||
|
package org.jeecg.modules.tools.office.pdf;
|
||||||
|
|
||||||
|
import lombok.SneakyThrows;
|
||||||
|
import org.jeecg.common.util.SpringContextUtils;
|
||||||
|
import org.jeecg.modules.tools.office.convert.OfficeConvertHelper;
|
||||||
|
import org.jodconverter.core.DocumentConverter;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PFD工具类
|
||||||
|
*/
|
||||||
|
public class PDFUtil {
|
||||||
|
|
||||||
|
// private static Global global = SpringContextUtils.getBean(Global.class);
|
||||||
|
//
|
||||||
|
// public void setGlobal(Global g){
|
||||||
|
// global = g;
|
||||||
|
// }
|
||||||
|
|
||||||
|
private static DocumentConverter documentConverter = SpringContextUtils.getBean(DocumentConverter.class);
|
||||||
|
|
||||||
|
public void setDocumentConverter(DocumentConverter g){
|
||||||
|
documentConverter = g;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* WORD转PDF方法
|
||||||
|
* @param sourceFile 要被转化的word文档路径(如E:\\1.docx)
|
||||||
|
* @param destFile 转成之后pdf文档存放路径(如E:\\1.pdf)
|
||||||
|
*/
|
||||||
|
@SneakyThrows
|
||||||
|
public static void office2PDF(String sourceFile, String destFile) {
|
||||||
|
|
||||||
|
OfficeConvertHelper.converter(documentConverter).from(new File(sourceFile)).to(new File(destFile)).execute();
|
||||||
|
// try {
|
||||||
|
// File inputFile = new File(sourceFile);
|
||||||
|
// File outputFile = new File(destFile);
|
||||||
|
// // 获得文件格式(2018年9月25日16:12:35添加,不增加格式,多个文档拼接后转换会报错)
|
||||||
|
// DefaultDocumentFormatRegistry formatReg = new DefaultDocumentFormatRegistry();
|
||||||
|
// DocumentFormat pdfFormat = formatReg.getFormatByFileExtension("pdf");
|
||||||
|
// DocumentFormat docFormat = formatReg.getFormatByFileExtension("doc");
|
||||||
|
//
|
||||||
|
// if (!outputFile.getParentFile().exists()) {
|
||||||
|
// outputFile.getParentFile().mkdirs();
|
||||||
|
// }
|
||||||
|
// OpenOfficeConnection connection = new SocketOpenOfficeConnection(global.libreOfficeUrl, global.libreOfficePort);
|
||||||
|
//// OpenOfficeConnection connection = new SocketOpenOfficeConnection("192.168.1.227", 8100);
|
||||||
|
// connection.connect();
|
||||||
|
// // 2018年7月19日修改, 原方法生成pdf会报错 wy
|
||||||
|
//// DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
|
||||||
|
// DocumentConverter converter = new StreamOpenOfficeDocumentConverter(connection);
|
||||||
|
// converter.convert(inputFile,docFormat, outputFile,pdfFormat);
|
||||||
|
// connection.disconnect();
|
||||||
|
// } catch (ConnectException e) {
|
||||||
|
// e.printStackTrace();
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
PDFUtil.office2PDF("F:\\temp\\test\\a.docx","F:\\temp\\test\\a.pdf");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package org.jeecg.modules.tools.pdf;
|
package org.jeecg.modules.tools.office.pdf;
|
||||||
|
|
||||||
public class WordToPDf {
|
public class WordToPDf {
|
||||||
|
|
|
@ -1,60 +0,0 @@
|
||||||
package org.jeecg.modules.tools.pdf;
|
|
||||||
|
|
||||||
import com.artofsolving.jodconverter.DefaultDocumentFormatRegistry;
|
|
||||||
import com.artofsolving.jodconverter.DocumentConverter;
|
|
||||||
import com.artofsolving.jodconverter.DocumentFormat;
|
|
||||||
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
|
|
||||||
import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;
|
|
||||||
import com.artofsolving.jodconverter.openoffice.converter.StreamOpenOfficeDocumentConverter;
|
|
||||||
import org.jeecg.common.util.SpringContextUtils;
|
|
||||||
import org.jeecg.modules.tools.Global;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.net.ConnectException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* PFD工具类
|
|
||||||
*/
|
|
||||||
public class PDFUtil {
|
|
||||||
|
|
||||||
private static Global global = SpringContextUtils.getBean(Global.class);
|
|
||||||
|
|
||||||
public void setGlobal(Global g){
|
|
||||||
global = g;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* WORD转PDF方法
|
|
||||||
* @param sourceFile 要被转化的word文档路径(如E:\\1.docx)
|
|
||||||
* @param destFile 转成之后pdf文档存放路径(如E:\\1.pdf)
|
|
||||||
*/
|
|
||||||
public static void office2PDF(String sourceFile, String destFile) {
|
|
||||||
try {
|
|
||||||
File inputFile = new File(sourceFile);
|
|
||||||
File outputFile = new File(destFile);
|
|
||||||
// 获得文件格式(2018年9月25日16:12:35添加,不增加格式,多个文档拼接后转换会报错)
|
|
||||||
DefaultDocumentFormatRegistry formatReg = new DefaultDocumentFormatRegistry();
|
|
||||||
DocumentFormat pdfFormat = formatReg.getFormatByFileExtension("pdf");
|
|
||||||
DocumentFormat docFormat = formatReg.getFormatByFileExtension("doc");
|
|
||||||
|
|
||||||
if (!outputFile.getParentFile().exists()) {
|
|
||||||
outputFile.getParentFile().mkdirs();
|
|
||||||
}
|
|
||||||
OpenOfficeConnection connection = new SocketOpenOfficeConnection(global.libreOfficeUrl, global.libreOfficePort);
|
|
||||||
// OpenOfficeConnection connection = new SocketOpenOfficeConnection("192.168.1.227", 8100);
|
|
||||||
connection.connect();
|
|
||||||
// 2018年7月19日修改, 原方法生成pdf会报错 wy
|
|
||||||
// DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
|
|
||||||
DocumentConverter converter = new StreamOpenOfficeDocumentConverter(connection);
|
|
||||||
converter.convert(inputFile,docFormat, outputFile,pdfFormat);
|
|
||||||
connection.disconnect();
|
|
||||||
} catch (ConnectException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// public static void main(String[] args) {
|
|
||||||
// PDFUtil.office2PDF("G:\\work\\IDEAWork\\jeecg\\beadhouse\\beadhouse_customer_jeecg_java\\src\\main\\resources\\officetemplates\\jkpg\\HT.docx","F:\\ht4.pdf");
|
|
||||||
// }
|
|
||||||
|
|
||||||
}
|
|
|
@ -10,7 +10,7 @@ import org.jeecg.common.util.SpringContextUtils;
|
||||||
import org.jeecg.modules.tools.FileUtils;
|
import org.jeecg.modules.tools.FileUtils;
|
||||||
import org.jeecg.modules.tools.Global;
|
import org.jeecg.modules.tools.Global;
|
||||||
import org.jeecg.modules.tools.IdGen;
|
import org.jeecg.modules.tools.IdGen;
|
||||||
import org.jeecg.modules.tools.pdf.PDFUtil;
|
import org.jeecg.modules.tools.office.pdf.PDFUtil;
|
||||||
|
|
||||||
import javax.servlet.ServletOutputStream;
|
import javax.servlet.ServletOutputStream;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
|
@ -13,11 +13,10 @@ import org.jeecg.common.util.text.StringUtils;
|
||||||
import org.jeecg.modules.kc.ktgl.entity.KcKechengbiao;
|
import org.jeecg.modules.kc.ktgl.entity.KcKechengbiao;
|
||||||
import org.jeecg.modules.kc.ktgl.service.IKcKechengbiaoService;
|
import org.jeecg.modules.kc.ktgl.service.IKcKechengbiaoService;
|
||||||
import org.jeecg.modules.tools.Global;
|
import org.jeecg.modules.tools.Global;
|
||||||
import org.jeecg.modules.tools.pdf.PDFUtil;
|
import org.jeecg.modules.tools.office.pdf.PDFUtil;
|
||||||
import org.jeecg.modules.zyk.entity.ZykInfo;
|
import org.jeecg.modules.zyk.entity.ZykInfo;
|
||||||
import org.jeecg.modules.zyk.mapper.ZykMapper;
|
import org.jeecg.modules.zyk.mapper.ZykMapper;
|
||||||
import org.jeecg.modules.zyk.service.IZykService;
|
import org.jeecg.modules.zyk.service.IZykService;
|
||||||
|
|
||||||
import org.jeecg.modules.zyk.utils.FileHandleUtil;
|
import org.jeecg.modules.zyk.utils.FileHandleUtil;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
@ -29,7 +28,10 @@ import javax.servlet.http.HttpServletResponse;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.*;
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 资源库信息
|
* @Description: 资源库信息
|
||||||
|
|
|
@ -297,10 +297,22 @@ third-app:
|
||||||
# appSecret
|
# appSecret
|
||||||
client-secret: ??
|
client-secret: ??
|
||||||
agent-id: ??
|
agent-id: ??
|
||||||
# libreOffice5
|
# libreOffice5(旧)弃用
|
||||||
libreOffice:
|
libreOffice:
|
||||||
url: 127.0.0.1
|
url: 127.0.0.1
|
||||||
port: 8100
|
port: 8100
|
||||||
|
# 文档转换(新)
|
||||||
|
jodconverter:
|
||||||
|
# 使用本机作为转换服务器,如果使用其它主机作为转换服务器,则需要配置remote,
|
||||||
|
# 请参考 org.jodconverter.boot.autoconfigure.JodConverterRemoteProperties
|
||||||
|
local:
|
||||||
|
enabled: true
|
||||||
|
# 为了避免不必要的兼容问题,需要配置本机的LibreOffice安装目录
|
||||||
|
office-home: D:\Program Files\LibreOffice
|
||||||
|
# 配置LibreOffice的服务端口,以逗号分隔,每个端口为一个独立的进程
|
||||||
|
port-numbers: 2001,2002,2003,2004,2005,2006,2007,2008,2009,2010
|
||||||
|
# 配置最大的任务队列
|
||||||
|
max-tasks-per-process: 100
|
||||||
# 媒体处理器
|
# 媒体处理器
|
||||||
ffmpeg:
|
ffmpeg:
|
||||||
# 根路径
|
# 根路径
|
||||||
|
|
|
@ -303,10 +303,22 @@ third-app:
|
||||||
# appSecret
|
# appSecret
|
||||||
client-secret: ??
|
client-secret: ??
|
||||||
agent-id: ??
|
agent-id: ??
|
||||||
# libreOffice5
|
# libreOffice5(旧)弃用
|
||||||
libreOffice:
|
libreOffice:
|
||||||
url: 127.0.0.1
|
url: 127.0.0.1
|
||||||
port: 8100
|
port: 8100
|
||||||
|
# 文档转换(新)
|
||||||
|
jodconverter:
|
||||||
|
# 使用本机作为转换服务器,如果使用其它主机作为转换服务器,则需要配置remote,
|
||||||
|
# 请参考 org.jodconverter.boot.autoconfigure.JodConverterRemoteProperties
|
||||||
|
local:
|
||||||
|
enabled: true
|
||||||
|
# 为了避免不必要的兼容问题,需要配置本机的LibreOffice安装目录
|
||||||
|
office-home: D:\Program Files\LibreOffice
|
||||||
|
# 配置LibreOffice的服务端口,以逗号分隔,每个端口为一个独立的进程
|
||||||
|
port-numbers: 2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020
|
||||||
|
# 配置最大的任务队列
|
||||||
|
max-tasks-per-process: 100
|
||||||
# 媒体处理器
|
# 媒体处理器
|
||||||
ffmpeg:
|
ffmpeg:
|
||||||
# 根路径
|
# 根路径
|
||||||
|
|
36
pom.xml
36
pom.xml
|
@ -72,6 +72,12 @@
|
||||||
<!-- Log4j2爆雷漏洞 -->
|
<!-- Log4j2爆雷漏洞 -->
|
||||||
<log4j2.version>2.17.0</log4j2.version>
|
<log4j2.version>2.17.0</log4j2.version>
|
||||||
<logback.version>1.2.9</logback.version>
|
<logback.version>1.2.9</logback.version>
|
||||||
|
|
||||||
|
<!-- 引入libreoffice依赖 -->
|
||||||
|
<libreoffice.jodconverter-local.version>4.4.2</libreoffice.jodconverter-local.version>
|
||||||
|
<libreoffice.ridl.version>7.3.4</libreoffice.ridl.version>
|
||||||
|
<libreoffice.jodconverter-spring-boot-starter.version>4.4.2</libreoffice.jodconverter-spring-boot-starter.version>
|
||||||
|
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
|
@ -384,6 +390,36 @@
|
||||||
<artifactId>jimureport-nosql-starter</artifactId>
|
<artifactId>jimureport-nosql-starter</artifactId>
|
||||||
<version>${jimureport-spring-boot-starter.version}</version>
|
<version>${jimureport-spring-boot-starter.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 连接libreOffice驱动包 -->
|
||||||
|
|
||||||
|
<!-- <dependency>-->
|
||||||
|
<!-- <groupId>com.artofsolving</groupId>-->
|
||||||
|
<!-- <artifactId>jodconverter</artifactId>-->
|
||||||
|
<!-- <version>2.2.1</version>-->
|
||||||
|
<!-- </dependency>-->
|
||||||
|
<!-- <dependency>-->
|
||||||
|
<!-- <groupId>org.openoffice</groupId>-->
|
||||||
|
<!-- <artifactId>bootstrap-connector</artifactId>-->
|
||||||
|
<!-- <version>0.1.1</version>-->
|
||||||
|
<!-- </dependency>-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jodconverter</groupId>
|
||||||
|
<artifactId>jodconverter-local</artifactId>
|
||||||
|
<version>${libreoffice.jodconverter-local.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.libreoffice</groupId>
|
||||||
|
<artifactId>ridl</artifactId>
|
||||||
|
<version>${libreoffice.ridl.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jodconverter</groupId>
|
||||||
|
<artifactId>jodconverter-spring-boot-starter</artifactId>
|
||||||
|
<version>${libreoffice.jodconverter-spring-boot-starter.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- 连接libreOffice驱动包END -->
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</dependencyManagement>
|
</dependencyManagement>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue