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


    前言

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

    开发环境

            Java:JDK1.8

            python:3.12

    代码

    1. import docx2pdf
    2. import sys
    3. import glob
    4. import os
    5. def w2ps(d):
    6. word_file = d
    7. pdf_file = d.replace('.docx', '.pdf').replace('.doc', '.pdf')
    8. docx2pdf.convert(word_file, pdf_file)
    9. print(f"转换完成,PDF文件已保存为:{pdf_file}")
    10. def each():
    11. # 获取当前工作目录
    12. current_directory = os.getcwd()
    13. # 使用glob查找所有.doc文件
    14. doc_files = glob.glob(os.path.join(current_directory, '*.doc'))
    15. doc_files1 = glob.glob(os.path.join(current_directory, '*.docx'))
    16. # 遍历文件列表并打印文件路径
    17. for file_path in doc_files:
    18. w2ps(file_path)
    19. for file_path in doc_files1:
    20. w2ps(file_path)
    21. if __name__ == "__main__":
    22. if len(sys.argv) > 1:
    23. w2ps(sys.argv[1])
    24. else:
    25. each()
    1. import java.io.IOException;
    2. public class PythonCaller {
    3. public static void main111(String[] args) {
    4. String pythonScriptPath = "D:\\WorkSpace\\python\\pycorrector-master\\shany\\W2P.py"; // Python脚本的路径
    5. String wordFilePath = "E:\\新建文件夹 (22)\\问题排查.docx"; // 要转换的Word文件的路径
    6. try {
    7. String command = "python " + pythonScriptPath + " \"" + wordFilePath+"\"";
    8. Process process = Runtime.getRuntime().exec(command);
    9. } catch (IOException e) {
    10. e.printStackTrace();
    11. }
    12. }
    13. public static void main(String[] args) {
    14. String executablePath = "D:\\新建文件夹\\a\\W2P.exe"; // 替换为你的a.exe文件的实际路径
    15. String wordFilePath = "E:\\新建文件夹 (22)\\问题排查.docx"; // 替换为你的Word文件路径
    16. try {
    17. // 将Word文件路径作为命令行参数传递给a.exe
    18. String[] command = {executablePath, wordFilePath};
    19. Process process = Runtime.getRuntime().exec(command);
    20. // 等待进程完成
    21. int exitCode = process.waitFor();
    22. System.out.println("Process exited with code " + exitCode);
    23. } catch (IOException | InterruptedException e) {
    24. e.printStackTrace();
    25. }
    26. }
    27. }

    备注

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

    拓展

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

    1. from pdf2docx import Converter
    2. import sys
    3. import glob
    4. import os
    5. def pdf_to_word(pdf_path, word_path):
    6. cv = Converter(pdf_path)
    7. cv.convert(word_path, start=0, end=None)
    8. cv.close()
    9. def p2ws(file_path):
    10. pdf_file = file_path
    11. word_file = file_path.replace('.pdf', '.docx')
    12. pdf_to_word(pdf_file, word_file)
    13. print(f"转换完成,WORD文件已保存为:{pdf_file}")
    14. def each():
    15. # 获取当前工作目录
    16. current_directory = os.getcwd()
    17. # 使用glob查找所有.doc文件
    18. doc_files = glob.glob(os.path.join(current_directory, '*.pdf'))
    19. # 遍历文件列表并打印文件路径
    20. for file_path in doc_files:
    21. p2ws(file_path)
    22. if __name__ == "__main__":
    23. if len(sys.argv) > 1:
    24. p2ws(sys.argv[1])
    25. else:
    26. each()

  • 相关阅读:
    设计模式-组合模式(Composite)
    Vue.js核心技术解析与uni-app跨平台实战开发学习笔记 第7章 Vue.js高级进阶 7.6 Vue计算属性
    【踩坑日记】springboot MultipartFile上传,@Async异步执行时报错:java,io.FileNotFoundException
    Matlab 点到矩形的最小距离
    玩一玩Spring容器
    VsCode SSH远程设置不用重复输入密码
    大数据计算框架及引擎介绍
    SpringBoot启动流程大揭秘
    uniapp发行H5获取当前页面query
    ROS自学笔记十二:Command ‘git‘ not found, but can be installed with:
  • 原文地址:https://blog.csdn.net/krls_shany/article/details/140394243