当前位置:   article > 正文

java word转pdf三种方法(附有需要的jar)_java将word转化为pdf

java将word转化为pdf

一.jacob
1.jar下载
jacob.jar和jacob-1.17-x64.dll下载
提取码:0121
2.在jdk/bin目录下引入.dll文件(64位:jacob-1.17-x64.dll 32位:jacob-1.17-x86.dll)
3.转换代码

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import java.io.File;
 
 
public class Word2Pdf {
   
    public static void main(String args[]) {
   
        ActiveXComponent app = null;
        String wordFile = "e:/测试word.docx";
        String pdfFile = "e:/测试pdf.pdf";
        System.out.println("开始转换...");
        // 开始时间
        long start = System.currentTimeMillis();
        try {
   
            // 打开word
            app = new ActiveXComponent("Word.Application");
            // 设置word不可见,很多博客下面这里都写了这一句话,其实是没有必要的,因为默认就是不可见的,如果设置可见就是会打开一个word文档,对于转化为pdf明显是没有必要的
            //app.setProperty("Visible", false);
            // 获得word中所有打开的文档
            Dispatch documents = app.getProperty("Documents").toDispatch();
            System.out.println("打开文件: " + wordFile);
            // 打开文档
            Dispatch document = Dispatch.call(documents, "Open", wordFile, false, true).toDispatch();
            // 如果文件存在的话,不会覆盖,会直接报错,所以我们需要判断文件是否存在
            File target = new File(pdfFile);
            if (target.exists()) {
   
                target.delete();
            }
            System.out.println("另存为: " + pdfFile);
            // 另存为,将文档报错为pdf,其中word保存为pdf的格式宏的值是17
            Dispatch.call(document, "SaveAs", pdfFile, 17);
            // 关闭文档
            Dispatch.call(document, "Close", false);
            // 结束时间
            long end = System.currentTimeMillis();
            System.out.println("转换成功,用时:" + (end - start) + "ms");
        }catch(Exception e) {
   
            e.getMessage();
            System.out.println("转换失败"+e.getMessage());
        }finally {
   
            // 关闭office
            app.invoke("Quit", 0);
        }
    }
 
 
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53

注:jacb只能在windows系统使用,linux系统暂时无法解决(windows电脑安装wps office,并且设置wps office为默认启动 。(最好不要使用microsoft word 微软的需要激活,很麻烦,还不成功!)

2.docx4j
1.pom

		<dependency>
            <groupId>org.docx4j</groupId>
            <artifactId>docx4j</artifactId>
            <version>6.0.1</version>
        </dependency>

        <!-- 转出pdf需要 -->
        <dependency>
            <groupId>org.docx4j</groupId>
            <artifactId>docx4j-export-fo</artifactId>
            <version>6.1.0</version>
        </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

2.代码

/*
* inPath word路径   outPath pdf路径
*/
public static void doc3pdf(String inPath, String outPath) {
   
        try {
   
            WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(new File(inPath));
            Mapper fontMapper = new IdentityPlusMapper();
            PhysicalFont font  = PhysicalFonts.getPhysicalFonts().get("Comic Sans MS");
            fontMapper.put("Calibri", font);
            wordMLPackage.setFontMapper(fontMapper);

            OutputStream os = new java.io.FileOutputStream(outPath);
            FOSettings foSettings = Docx4J.createFOSettings();
            foSettings.setWmlPackage(wordMLPackage);

            Docx4J.toFO(foSettings, os, Docx4J
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/388486
推荐阅读
相关标签
  

闽ICP备14008679号