北冰洋以北 发表于 2023-1-9 21:00:51

用Java写一个PDF,Word文件转换工具

前言

前段时间一直使用到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转图片实现
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
页: [1]
查看完整版本: 用Java写一个PDF,Word文件转换工具