3 zmienionych plików z 97 dodań i 0 usunięć
			
			
		| @ -0,0 +1,90 @@ | |||
| package com.aiprose.word2pdf; | |||
| 
 | |||
| /** | |||
|  * @author yanpeng | |||
|  * @version 1.0 | |||
|  * @desc TODO | |||
|  * @company 北京中经网软件有限公司 | |||
|  * @date 2022/3/8 11:47 | |||
|  */ | |||
| 
 | |||
| import org.springframework.beans.factory.annotation.Value; | |||
| import org.springframework.scheduling.annotation.Async; | |||
| import org.springframework.stereotype.Component; | |||
| 
 | |||
| import java.io.IOException; | |||
| import java.io.InputStream; | |||
| 
 | |||
| /** | |||
|  * 依赖libreoffice实现PDF转化 | |||
|  * @author Dawn | |||
|  */ | |||
| 
 | |||
| public class PdfUtils { | |||
| 
 | |||
|     public static void main(String[] args) { | |||
|         PdfUtils pdfUtils = new PdfUtils(); | |||
|         String filepath = "F:/word2pdf/tst.docx"; | |||
|         String targetFolder = "F:/word2pdf/"; | |||
|         pdfUtils.toPdf(filepath,targetFolder); | |||
|     } | |||
|     /** | |||
|      * | |||
|      * @param filePath 原文件路径 本地路径 | |||
|      * @param targetFolder 目标文件夹 | |||
|      */ | |||
|     @Async | |||
|     public  void toPdf(String filePath,String targetFolder){ | |||
|         long start=System.currentTimeMillis(); | |||
|         String srcPath = filePath, desPath = targetFolder; | |||
|         System.out.println("源文件:"+filePath); | |||
|         System.out.println("目标文件夹:"+targetFolder); | |||
|         String command = ""; | |||
|         String osName = System.getProperty("os.name"); | |||
|         System.out.println("系统名称:"+osName); | |||
|         if (osName.contains("Windows")) { | |||
|             command = "soffice --headless --convert-to pdf " + srcPath + " --outdir " + desPath; | |||
|             windowExec(command); | |||
|         }else { | |||
|             command = "libreoffice7.0 --convert-to pdf:writer_pdf_Export " + srcPath + " --outdir "+ desPath; | |||
|             LinuxExec(command); | |||
|         } | |||
|         long end=System.currentTimeMillis(); | |||
|         System.out.println("转换文件耗时:"+(end-start)+"毫秒"); | |||
|     } | |||
| 
 | |||
| 
 | |||
|     private boolean windowExec(String command) { | |||
|         Process process;// Process可以控制该子进程的执行或获取该子进程的信息
 | |||
|         try { | |||
|             process = Runtime.getRuntime().exec(command);// exec()方法指示Java虚拟机创建一个子进程执行指定的可执行程序,并返回与该子进程对应的Process对象实例。
 | |||
|             // 下面两个可以获取输入输出流
 | |||
|             InputStream errorStream = process.getErrorStream(); | |||
|             InputStream inputStream = process.getInputStream(); | |||
|         } catch (IOException e) { | |||
|             e.printStackTrace(); | |||
|             return false; | |||
|         } | |||
| 
 | |||
|         int exitStatus = 0; | |||
|         try { | |||
|             exitStatus = process.waitFor();// 等待子进程完成再往下执行,返回值是子线程执行完毕的返回值,返回0表示正常结束
 | |||
|             // 第二种接受返回值的方法
 | |||
|             int i = process.exitValue(); // 接收执行完毕的返回值
 | |||
|         } catch (InterruptedException e) { | |||
|             return false; | |||
|         } | |||
|         process.destroy(); // 销毁子进程
 | |||
|         process = null; | |||
|         return true; | |||
|     } | |||
| 
 | |||
|     private void LinuxExec(String cmd){ | |||
|         System.out.println(cmd); | |||
|         try { | |||
|             Runtime.getRuntime().exec(cmd); | |||
|         } catch (IOException e) { | |||
|             System.err.println(e.getMessage()); | |||
|         } | |||
|     } | |||
| } | |||
								
									Binary file not shown.
								
							
						
					
					Ładowanie…
					
					
				
		Reference in new issue