【open office+jodconverter】檔案預覽
阿新 • • 發佈:2021-10-15
一、環境/工具
1、Windows10 64
2、Apache OpenOffice 3.3.0 for Windows(OOo_3.3.0_Win_x86_install-wJRE_zh-CN.exe)
3、jdk8
4、springboot專案工程
二、依賴
<!--jodconverter-core--> <dependency> <groupId>org.jodconverter</groupId> <artifactId>jodconverter-core</artifactId> <version>4.3.0</version> </dependency> <!--jodconverter-local--> <dependency> <groupId>org.jodconverter</groupId> <artifactId>jodconverter-local</artifactId> <version>4.3.0</version> </dependency> <!--jodconverter-springboot--> <dependency> <groupId>org.jodconverter</groupId> <artifactId>jodconverter-spring-boot-starter</artifactId> <version>4.3.0</version> </dependency>
三、配置屬性檔案
# jodconverter jodconverter.local.enabled=true # 開啟openoffice程序對應的埠 jodconverter.local.port-numbers=8200
四、編寫測試用介面
package com.example.controller; import org.jodconverter.core.DocumentConverter; import org.jodconverter.core.office.OfficeException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletResponse; import java.io.*; /** * Description:檔案轉pdf預覽 * Package:com.example.controller * * @author lightbc * @version 1.0 */ @RestController @RequestMapping("/preview") public class PreviewController { @Autowired private DocumentConverter converter; private String filePath="用於轉化的檔案全路徑(例:d:/xxx/1.docx)"; private String newFilePath="新生成的檔案的存放目錄(例:d:/temp)"; private String newFileName="test.pdf"; @RequestMapping(value = "/convert/file/2/pdf") public void convertFileToPDF(HttpServletResponse response){ File file=new File(filePath); InputStream in; OutputStream out; File tempFile=new File(newFilePath); if(!tempFile.exists()){ tempFile.mkdirs(); } File newFile=new File(tempFile.getAbsolutePath()+File.separator+newFileName); // 清除首部空白行 response.reset(); try { converter.convert(file).to(newFile).execute(); in=new BufferedInputStream(new FileInputStream(newFile)); byte[] b=new byte[in.available()]; in.read(b); out=response.getOutputStream(); out.write(b); in.close(); out.flush(); out.close(); } catch (OfficeException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
五、檔案預覽效果
六、總結
1、Apache OpenOffice 3.3.0以上的Windows版本需要單獨下載32位JRE執行環境。
2、以上是比較簡單的檔案預覽功能,如有其他需求需自行拓展。