Java 使用wps将word文件转换pdf文件

public class WordFileToPdf {
    private static final int wdFormatPDF = 17;
    private static final int xlTypePDF = 0;
    private static final int ppSaveAsPDF = 32;
    private static final String PATH = "D:";

    /***
     * 判断需要转化文件的类型(Excel、Word、ppt)
     *
     * @param inputFile
     */
    public String convertToPDF(String inputFile) {
        //判断原文件是否存在
        File file = new File(PATH + inputFile);
        if (file.exists()) {
            String kind = getFileSufix(inputFile);
            if (kind.equals("pdf")) {
                return inputFile;//原文件就是PDF文件
            }
            String pdfFile = inputFile.substring(0, inputFile.lastIndexOf(".")) + ".pdf";
            if (kind.equals("doc")||kind.equals("docx")||kind.equals("txt")) {
                wordToPDF(PATH+inputFile, PATH+pdfFile);
            }else if (kind.equals("ppt")||kind.equals("pptx")||kind.equals("pptm")||kind.equals("ppsx")) {
                pptToPDF(PATH+inputFile, PATH+pdfFile);
            }else if(kind.equals("xls")||kind.equals("xlsx")){
                ExToPDF(PATH+inputFile, PATH+pdfFile);
            }else{
                return inputFile;//原文件是其它格式文件
            }
            //返回创建的pdf
            return pdfFile;
        } else {
            System.out.println("原文件不存在!");
            return inputFile;
        }
    }

    /***
     * 判断文件类型
     *
     * @param fileName
     * @return
     */
    public static String getFileSufix(String fileName) {
        int splitIndex = fileName.lastIndexOf(".");
        return fileName.substring(splitIndex + 1);
    }

    /***
     *
     * Word转PDF
     *
     * @param inputFile
     * @param pdfFile
     * @return
     */
    private void wordToPDF(String inputFile, String pdfFile) {
        try {
            ComThread.InitSTA(true);
            // 打开Word应用程序
            ActiveXComponent app = new ActiveXComponent("KWPS.Application");
            // 设置Word不可见
            app.setProperty("Visible", new Variant(false));
            // 禁用宏
            app.setProperty("AutomationSecurity", new Variant(3));
            // 获得Word中所有打开的文档,返回documents对象
            Dispatch docs = app.getProperty("Documents").toDispatch();
            // 调用Documents对象中Open方法打开文档,并返回打开的文档对象Document
            Dispatch doc = Dispatch.call(docs, "Open", inputFile, false, true).toDispatch();
            // word保存为pdf格式宏,值为17
            Dispatch.call(doc, "ExportAsFixedFormat", pdfFile, wdFormatPDF);
            // 关闭文档
            Dispatch.call(doc, "Close", false);
            // 关闭Word应用程序
            app.invoke("Quit", 0);
            ComThread.Release();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /***
     *
     * Excel转化成PDF
     *
     * @param inputFile
     * @param pdfFile
     * @return
     */
    private void ExToPDF(String inputFile, String pdfFile) {
        try {
            ComThread.InitSTA(true);
            ActiveXComponent ax = new ActiveXComponent("KET.Application");
            ax.setProperty("Visible", false);
            ax.setProperty("AutomationSecurity", new Variant(3)); // 禁用宏
            Dispatch excels = ax.getProperty("Workbooks").toDispatch();

            Dispatch excel = Dispatch
                    .invoke(excels, "Open", Dispatch.Method,
                            new Object[] { inputFile, new Variant(false), new Variant(false) }, new int[9])
                    .toDispatch();
            // 转换格式
            Dispatch.invoke(excel, "ExportAsFixedFormat", Dispatch.Method, new Object[] { new Variant(0),pdfFile, new Variant(xlTypePDF)}, new int[1]);

            Dispatch.call(excel, "Close", new Variant(false));
            if (ax != null) {
                ax.invoke("Quit", new Variant[] {});
            }
            ComThread.Release();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /***
     * ppt转化成PDF
     *
     * @param inputFile
     * @param pdfFile
     * @return
     */
    private void pptToPDF(String inputFile, String pdfFile) {
        try {
            ComThread.InitSTA(true);
            ActiveXComponent app = new ActiveXComponent("KWPP.Application");
            Dispatch ppts = app.getProperty("Presentations").toDispatch();
            Dispatch ppt = Dispatch.call(ppts, "Open", inputFile, true,false).toDispatch();
            Dispatch.invoke(ppt, "SaveAs", Dispatch.Method, new Object[]{
                    pdfFile,new Variant(ppSaveAsPDF)},new int[1]);
            Dispatch.call(ppt, "Close");
            app.invoke("Quit");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

下载jacob,将其中的jacob.jar添加到项目的lib中并构建。
将jacob-1.18-x64.dll添加到C:\Program Files\Java\jdk1.8.0_72\bin、C:\Program Files\Java\jdk1.8.0_72\jre\bin、C:\WINDOWS\system32 中(我只在jdk中添加的)。

### 回答1: Java WPSPDF是指使用Java编程语言编写一个程序,通过调用WPS Office软件中的API,将WPS文档换为PDF文档。WPS Office作为一款办公软件,支持多种文档格式的打开和编辑,如.doc、.ppt、.xls等,但有时候需要将这些文档换为PDF格式,以供更广泛的使用和分享。 Java作为一种跨平台的编程语言,可以在不同的操作系统和设备上运行,具有很强的可移植性和灵活性,因此选择Java编写该程序可以满足这些需求。该程序可以实现WPS文档与PDF之间的格式换,并可以在不同的操作系统和平台上运行,同时可以在程序中设置换的参数,如文档的页面大小、分辨率、文本字体等。 通过编写该程序,可以实现WPS文档的批量换,并可以自动化处理多个文档的换过程,提高效率和减少人工干预。此外,该程序还可以对换后的PDF文档进行一些处理,如加密、签名、压缩等,以增强文档的安全性和保密性。 总之,Java WPSPDF程序是一种实用的工具,可以方便地将WPS文档换为PDF文档,并可以在不同的平台和场景下灵活运用。 ### 回答2: Java WPSPDF是指使用Java程序对WPS文件进行换,将其PDF格式。WPS是一种办公文档文件格式,它是金山软件公司开发的,与Microsoft Office的DOC格式兼容。WPS可以在Windows、Mac和Linux上运行,非常方便。但是,有时需要将WPS文件转换PDF格式,以便在各种设备上进行阅读和打印。 Java是一种广泛使用的编程语言,它具有跨平台性。使用Java WPSPDF程序,可以在不同的操作系统上运行。该程序将WPS文件转换PDF格式,保留WPS文件原有的格式和内容。换完成后,生成的PDF文件可以在各种设备上进行阅读和打印,如PC、手机和平板电脑。 Java WPSPDF程序可以应用于各种场景,如在企业中共享文档、在学校中分享学习资料、在家庭中打印或阅读电子书等等。通过Java WPSPDF程序,可以使文件的传输和共享更加便捷,提高工作效率和学习效果。 ### 回答3: Java语言可以通过调用WPS API实现将WPS文档换为PDFWPS API提供了WPS文档换的功能,支持多种文档格式的换,包括WPS、DOC、DOCX、XLS、XLSX、PPT、PPTX等。Java程序可以调用WPS API提供的接口,将WPS文档加载为WPS API中的文档对象,然后使用WPS API提供的换功能将文档换为PDF格式。在换过程中,可以通过设置换参数,如换后的PDF文件名、是否保留原文件等,来实现不同的换需求。需要注意的是,Java程序需要在运行环境中安装相关的WPS软件才能调用WPS API进行文档换。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sunyanchun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值