Java调用py或者exe文件实现word转PDF

前言

有次上班时小伙伴和我吐槽Java实现word转pdf太麻烦,我灵机一动Java调用python,python实现转换操作不就行了。

开发环境

Java:JDK1.8

python:3.12

代码

python 复制代码
import docx2pdf
import sys
import glob
import os


def w2ps(d):
    word_file = d
    pdf_file = d.replace('.docx', '.pdf').replace('.doc', '.pdf')
    docx2pdf.convert(word_file, pdf_file)
    print(f"转换完成,PDF文件已保存为:{pdf_file}")


def each():
    # 获取当前工作目录
    current_directory = os.getcwd()

    # 使用glob查找所有.doc文件
    doc_files = glob.glob(os.path.join(current_directory, '*.doc'))
    doc_files1 = glob.glob(os.path.join(current_directory, '*.docx'))

    # 遍历文件列表并打印文件路径
    for file_path in doc_files:
        w2ps(file_path)
    for file_path in doc_files1:
        w2ps(file_path)


if __name__ == "__main__":
    if len(sys.argv) > 1:
        w2ps(sys.argv[1])
    else:
        each()
java 复制代码
import java.io.IOException;

public class PythonCaller {

    public static void main111(String[] args) {
        String pythonScriptPath = "D:\\WorkSpace\\python\\pycorrector-master\\shany\\W2P.py"; // Python脚本的路径
        String wordFilePath = "E:\\新建文件夹 (22)\\问题排查.docx"; // 要转换的Word文件的路径

        try {
            String command = "python " + pythonScriptPath + " \"" + wordFilePath+"\"";
            Process process = Runtime.getRuntime().exec(command);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        String executablePath = "D:\\新建文件夹\\a\\W2P.exe"; // 替换为你的a.exe文件的实际路径
        String wordFilePath = "E:\\新建文件夹 (22)\\问题排查.docx"; // 替换为你的Word文件路径

        try {
            // 将Word文件路径作为命令行参数传递给a.exe
            String[] command = {executablePath, wordFilePath};
            Process process = Runtime.getRuntime().exec(command);

            // 等待进程完成
            int exitCode = process.waitFor();
            System.out.println("Process exited with code " + exitCode);

        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

备注

这里的python文件后来为了防止缺少三方依赖,单独打包成exe文件。Java代码中额外加了对exe文件的调用。

拓展

顺手额外写了一个pdf转word的,功能用法基本一样

python 复制代码
from pdf2docx import Converter
import sys
import glob
import os


def pdf_to_word(pdf_path, word_path):
    cv = Converter(pdf_path)
    cv.convert(word_path, start=0, end=None)
    cv.close()


def p2ws(file_path):
    pdf_file = file_path
    word_file = file_path.replace('.pdf', '.docx')
    pdf_to_word(pdf_file, word_file)
    print(f"转换完成,WORD文件已保存为:{pdf_file}")


def each():
    # 获取当前工作目录
    current_directory = os.getcwd()

    # 使用glob查找所有.doc文件
    doc_files = glob.glob(os.path.join(current_directory, '*.pdf'))

    # 遍历文件列表并打印文件路径
    for file_path in doc_files:
        p2ws(file_path)


if __name__ == "__main__":
    if len(sys.argv) > 1:
        p2ws(sys.argv[1])
    else:
        each()
相关推荐
猿究院_夏燊3 小时前
Spring Bean 生命周期
java·后端·spring
Wang's Blog4 小时前
Java 项目实战: 交友项目:登录链路回顾与今日任务地图
java·开发语言·状态模式·交友
信誓旦旦的程序猿4 小时前
【Python量化实战宝典 #08】可转债与债券接口手册:转股价·溢价率·纯债价值(Python 可跑)
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
砚底藏山河4 小时前
python量化:行情数据回溯
java·开发语言·python·金融·maven
今年下半年4 小时前
AI智能体项目实战记录(02):初始化 Python 项目
开发语言·人工智能·python·fastapi
Jlzn88884 小时前
华东电芯分选通道数怎么配才不堵线
java·人工智能·架构·自动化·制造
Williamtym4 小时前
PickGo Lab实践:用浏览器、Python和MCP串起机器人搬运仿真
开发语言·python·机器人
香吧香5 小时前
GRPC连接机制---长连接分析
java·网络与传输协议
DongQiShanRen5 小时前
六根硬件映射(四):归属澄清、两处不一致与卷十一总表
开发语言·人工智能·算法·rust·哈希算法·集成学习
CS创新实验室5 小时前
Python 对象“死“了之后去了哪?——引用计数与分代垃圾回收
开发语言·jvm·python