前言
前段时间一直使用到word文档转pdf或者pdf转word,寻思着用Java应该是可以实现的,于是花了点时间写了个文件转换工具
源码weloe/FileConversion (github.com)
主要功能就是word和pdf的文件转换,如下
- pdf 转 word
- pdf 转 图片
- word 转 图片
- word 转 html
- word 转 pdf
实现方法
主要使用了pdfbox Apache PDFBox | A Java PDF Library以及spire.doc Free Spire.Doc for Java | 100% 免费 Java Word 组件 (e-iceblue.cn)两个工具包
pom.xml- <repositories>
- <repository>
- <id>com.e-iceblue</id>
- <url>http://repo.e-iceblue.cn/repository/maven-public/</url>
- </repository>
- </repositories>
- <properties>
- <maven.compiler.source>8</maven.compiler.source>
- <maven.compiler.target>8</maven.compiler.target>
- </properties>
- <dependencies>
- <dependency>
- <groupId>org.apache.pdfbox</groupId>
- <artifactId>pdfbox</artifactId>
- <version>2.0.4</version>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.13.2</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>e-iceblue</groupId>
- <artifactId>spire.doc.free</artifactId>
- <version>3.9.0</version>
- </dependency>
- </dependencies>
复制代码 策略接口- public interface FileConversion {
- boolean isSupport(String s);
- String convert(String pathName,String dirAndFileName) throws Exception;
- }
复制代码 PDF转图片实现
[code]public class PDF2Image implements FileConversion{ private String suffix = ".jpg"; public static final int DEFAULT_DPI = 150; @Override public boolean isSupport(String s) { return "pdf2image".equals(s); } @Override public String convert(String pathName,String dirAndFileName) throws Exception { String outPath = dirAndFileName + suffix; if(Files.exists(Paths.get(outPath))){ throw new RuntimeException(outPath+" 文件已存在"); } pdf2multiImage(pathName,outPath,DEFAULT_DPI); return outPath; } /** * pdf转图片 * 多页PDF会每页转换为一张图片,下面会有多页组合成一页的方法 * * @param pdfFile pdf文件路径 * @param outPath 图片输出路径 * @param dpi 相当于图片的分辨率,值越大越清晰,但是转换时间变长 */ public void pdf2multiImage(String pdfFile, String outPath, int dpi) { if (dpi |