赞
踩
<!-- openoffice --> <dependency> <groupId>org.openoffice</groupId> <artifactId>unoil</artifactId> <version>${openoffice.version}</version> </dependency> <dependency> <groupId>org.openoffice</groupId> <artifactId>ridl</artifactId> <version>${openoffice.version}</version> </dependency> <dependency> <groupId>org.openoffice</groupId> <artifactId>juh</artifactId> <version>${openoffice.version}</version> </dependency> <dependency> <groupId>org.jodconverter</groupId> <artifactId>jodconverter-local</artifactId> <version>${jodconverter.version}</version> </dependency> <dependency> <groupId>org.jodconverter</groupId> <artifactId>jodconverter-core</artifactId> <version>${jodconverter.version}</version> </dependency> <dependency> <groupId>org.jodconverter</groupId> <artifactId>jodconverter-spring-boot-starter</artifactId> <version>${jodconverter.version}</version> </dependency>
# ===================================
# openOffice
# ===================================
# 默认不开启 需要开启的设置成true
jodconverter.local.enabled=false
# 设置openOffice主目录 默认会自动读取
# jodconverter.local.office-home=C:/Program Files (x86)/OpenOffice 4
# 开启多个openOffice进程,每个端口对应一个进程
jodconverter.local.portNumbers=8200
# openOffice进程重启前的最大进程数
jodconverter.local.maxTasksPerProcess=100
因为在使用openOffice时,doc和ppt可以直接转pdf且不会乱码,txt文件会出现乱码,因此txt文件特殊处理,另外需要在本地磁盘配置一个目录存储转换好的PDF文件。
//下载文件 public byte[] downloadFile(String fileUrl) { byte[] by = null; if (StringUtils.isEmpty(fileUrl)) { return null; } try { StorePath storePath = StorePath.praseFromUrl(fileUrl); by = fastFileStorageClient.downloadFile(storePath.getGroup(), storePath.getPath(), new DownloadByteArray()); } catch (FdfsUnsupportStorePathException e) { logger.warn(e.getMessage()); } return by; } //1、如果这个文件是已经上传了,根据文件路径从服务器下载为ByteArrayInputStream ByteArrayInputStream inputStream = new ByteArrayInputStream(fastDfsUtil.downloadFile(ConverterUtils.toString(filePath))); //2、定义文件格式 文件路径 String[] pdftypes = {".doc", ".docx", ".ppt", ".pptx"}; String pdfFilePath = "";//声明这个是文件为.pdf的路径 String nowStr = DateConvertor.getCurrentDateFormat(); String nf = nowStr.substring(0, 4); String yf = nowStr.substring(5, 7); String filedir = pdfdir + nf + "/" + yf + "/";//假如现在是2022年4月 则目录为D:/qlc/pdf/2022/04/ //3、转pdf存储到对应的目录 if(Arrays.asList(pdftypes).contains(kzm)) {//需要转pdf pdfFilePath = filedir + zlid.replace("-", "") + ".pdf";//这里的目录为D:/qlc/pdf/2022/04/xx.pdf File pdfFile = new File(pdfFilePath);//声明一个.pdf文件的对象,并不会在本地磁盘真正创建 new Thread(new Runnable() { @Override public void run() { try { documentConverter.convert(inputStream).to(pdfFile).execute(); inputStream.close(); } catch (Exception e) { } } }).start(); }
//txt文件特殊处理,需要先将目标文件下载到本地磁盘,然后在进行转化 if(".txt".equals(kzm)){ //在磁盘中创建目录 用于存储上传的txt文件 String dirPath = "D:/" + nf + "/"; File dirs = new File(dirPath); if(!dirs.exists()){ dirs.mkdirs(); } //文件目录 String txtPath = dirPath + zlid.replace("-", "") + ".txt"; File txtFile = new File(txtPath); try{ //写到磁盘 FileOutputStream outputStream = new FileOutputStream(txtFile); outputStream.write(fastDfsUtil.downloadFile(ConverterUtils.toString(filePath))); outputStream.close(); }catch (Exception e){ } pdfFilePath = filedir + zlid.replace("-", "") + ".pdf"; File pdfFile = new File(pdfFilePath); new Thread(new Runnable() { @Override public void run() { try { //txt转为pdf格式 并存储到指定目录下 documentConverter.convert(new File(txtPath)).to(pdfFile).execute(); //删除文件及目录 File[] listFiles = dirs.listFiles(); for(File files : listFiles){ files.delete(); } dirs.delete(); } catch (Exception e) { } } }).start(); }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。