采用免费的Docx4j

1.导入依赖

       <dependency>

            <groupId>org.docx4j</groupId>

            <artifactId>docx4j-JAXB-MOXy</artifactId>

            <version>8.2.9</version>

        </dependency>

        <!-- Helps to export as PDF -->

        <dependency>

            <groupId>org.docx4j</groupId>

            <artifactId>docx4j-export-fo</artifactId>

            <version>8.2.9</version>

        </dependency>

2.转换工具类

import org.docx4j.Docx4J;

import org.docx4j.fonts.IdentityPlusMapper;

import org.docx4j.fonts.Mapper;

import org.docx4j.fonts.PhysicalFonts;

import org.docx4j.openpackaging.packages.WordprocessingMLPackage;

import java.io.File;

import java.io.FileOutputStream;

public class WordToPdfTest_Docx4j {

    public static void wordToPdf(String docFile,String pdfFile) throws Exception {

        WordprocessingMLPackage pkg = Docx4J.load(new File(docFile));

        Mapper fontMapper = new IdentityPlusMapper();

        fontMapper.put("隶书", PhysicalFonts.get("LiSu"));

        fontMapper.put("宋体", PhysicalFonts.get("SimSun"));

        fontMapper.put("微软雅黑", PhysicalFonts.get("Microsoft Yahei"));

        fontMapper.put("黑体", PhysicalFonts.get("SimHei"));

        fontMapper.put("楷体", PhysicalFonts.get("KaiTi"));

        fontMapper.put("新宋体", PhysicalFonts.get("NSimSun"));

        fontMapper.put("华文行楷", PhysicalFonts.get("STXingkai"));

        fontMapper.put("华文仿宋", PhysicalFonts.get("STFangsong"));

        fontMapper.put("仿宋", PhysicalFonts.get("FangSong"));

        fontMapper.put("幼圆", PhysicalFonts.get("YouYuan"));

        fontMapper.put("华文宋体", PhysicalFonts.get("STSong"));

        fontMapper.put("华文中宋", PhysicalFonts.get("STZhongsong"));

        fontMapper.put("等线", PhysicalFonts.get("SimSun"));

        fontMapper.put("等线 Light", PhysicalFonts.get("SimSun"));

        fontMapper.put("华文琥珀", PhysicalFonts.get("STHupo"));

        fontMapper.put("华文隶书", PhysicalFonts.get("STLiti"));

        fontMapper.put("华文新魏", PhysicalFonts.get("STXinwei"));

        fontMapper.put("华文彩云", PhysicalFonts.get("STCaiyun"));

        fontMapper.put("方正姚体", PhysicalFonts.get("FZYaoti"));

        fontMapper.put("方正舒体", PhysicalFonts.get("FZShuTi"));

        fontMapper.put("华文细黑", PhysicalFonts.get("STXihei"));

        fontMapper.put("宋体扩展", PhysicalFonts.get("simsun-extB"));

        fontMapper.put("仿宋_GB2312", PhysicalFonts.get("FangSong_GB2312"));

        pkg.setFontMapper(fontMapper);

        FileOutputStream fileOutputStream = new FileOutputStream(pdfFile);

        Docx4J.toPDF(pkg, fileOutputStream);

        fileOutputStream.flush();

        fileOutputStream.close();

    }

}

原文链接:https://blog.csdn.net/AnnieRabbit/article/details/133790383