java将word转成pdf--之docx4j的export pdf组件

1. 集成步骤

  1. 引入相关依赖

      
                args4j
                args4j
                2.32
            
            
                org.docx4j
                docx4j
                3.2.1
            
            
                fr.opensagres.xdocreport
                org.apache.poi.xwpf.converter.pdf
                1.0.6
            
            
                fr.opensagres.xdocreport
                org.odftoolkit.odfdom.converter.pdf
                1.0.6
            
            
                com.googlecode.jaxb-namespaceprefixmapper-interfaces
                JAXBNamespacePrefixMapper
                2.2.4
                runtime
            
            
                com.sun.xml.bind
                jaxb-impl
                2.2.11
            
            
                com.sun.xml.bind
                jaxb-core
                2.2.11
                   
            
                org.apache.xmlbeans
                xmlbeans
                2.6.0
            
            
                org.apache.poi
                poi
                3.14
            
            
                org.apache.poi
                poi-scratchpad
                3.14
            
            
                org.apache.poi
                poi-ooxml
                3.14
            
  2. 转换工具类

    ``` public class Word2PdfUtils {

   /**
    * docx文档转换为PDF
    *
    * @param pdfPath PDF文档存储路径
    * @throws Exception 可能为Docx4JException, FileNotFoundException, IOException等
    */
   public  void convertDocxToPdf(String docxPath, String pdfPath) throws Exception {

       FileOutputStream fileOutputStream = null;
       try {
           File file = new File(docxPath);
           fileOutputStream = new FileOutputStream(new File(pdfPath));
           WordprocessingMLPackage mlPackage = WordprocessingMLPackage.load(file);
           setFontMapper(mlPackage);
           Docx4J.toPDF(mlPackage, new FileOutputStream(new File(pdfPath)));
       }catch (Exception e){
           e.printStackTrace();

// log.error("docx文档转换为PDF失败"); }finally { IOUtils.closeQuietly(fileOutputStream); } }

   private static void setFontMapper(WordprocessingMLPackage mlPackage) throws Exception {
       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("simsun-extB"));
       fontMapper.put("仿宋", PhysicalFonts.get("FangSong"));
       fontMapper.put("仿宋_GB2312", PhysicalFonts.get("FangSong_GB2312"));
       fontMapper.put("幼圆", PhysicalFonts.get("YouYuan"));
       fontMapper.put("华文宋体", PhysicalFonts.get("STSong"));
       fontMapper.put("华文中宋", PhysicalFonts.get("STZhongsong"));

       mlPackage.setFontMapper(fontMapper);
   }

}


3. 测试
   @Test
   void convertDocxToPdf() throws Exception {
       String docxPath = "/Users/zsz/Project/demo/2020year/4yue/word2pdf/mytest.docx";
       String pdfPath = "/Users/zsz/Project/demo/2020year/4yue/word2pdf/word2pdf.pdf";
       Word2PdfUtils word2PdfUtils = new Word2PdfUtils();
       word2PdfUtils.convertDocxToPdf(docxPath,pdfPath);
   }

```

你可能感兴趣的:(Java)