欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java調(diào)用py或者exe文件實現(xiàn)Word轉(zhuǎn)PDF

 更新時間:2025年03月05日 10:40:21   作者:krls_shany  
這篇文章主要為大家詳細介紹了Java如何調(diào)用py或者exe文件實現(xiàn)Word轉(zhuǎn)PDF效果,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解下

前言

有次上班時小伙伴和我吐槽Java實現(xiàn)word轉(zhuǎn)pdf太麻煩,我靈機一動Java調(diào)用python,python實現(xiàn)轉(zhuǎn)換操作不就行了。

開發(fā)環(huán)境

Java:JDK1.8

python:3.12

代碼

Python代碼

import docx2pdf
import sys
import glob
import os
import comtypes
import comtypes.client
 
 
def w2ps(d):
    word_file = d
    pdf_file = d.replace('.docx', '.pdf').replace('.doc', '.pdf')
    docx2pdf.convert(word_file, pdf_file)
    print(f"轉(zhuǎn)換完成,PDF文件已保存為:{pdf_file}")
 
 
def each():
    # 獲取當(dāng)前工作目錄
    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'))
 
    # 遍歷文件列表并打印文件路徑
    if len(doc_files) > 0:
        # 初始化 Word 應(yīng)用程序
        word = comtypes.client.CreateObject('Word.Application')
        word.Visible = False  # 不顯示 Word 界面
        for file_path in doc_files:
            doc = word.Documents.Open(file_path)
            # 導(dǎo)出為 PDF
            doc.SaveAs(file_path.replace('.doc', '.pdf'), FileFormat=17)  # 17 是 PDF 格式的代碼
            doc.Close()
        word.Quit()
        # 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()
    sys.exit()

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"; // 要轉(zhuǎn)換的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文件路徑作為命令行參數(shù)傳遞給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文件的調(diào)用。

因為doc轉(zhuǎn)pdf的類庫沒找到,這里處理邏輯改為如果是doc文件,就調(diào)用Microsoft Word進行轉(zhuǎn)換。

打包py為exe時,必須指定引入comtypes.client,打包命令如下

pyinstaller --onefile --noconsole --hidden-import=comtypes.stream wwp.py

這段命令解析:把一個叫做wwp.py的文件轉(zhuǎn)換為exe,額外引入comtypes.client,不顯示命令行窗口(--noconsole)

拓展

順手額外寫了一個pdf轉(zhuǎn)word的,功能用法基本一樣

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"轉(zhuǎn)換完成,WORD文件已保存為:{pdf_file}")
 
 
def each():
    # 獲取當(dāng)前工作目錄
    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()

到此這篇關(guān)于Java調(diào)用py或者exe文件實現(xiàn)Word轉(zhuǎn)PDF的文章就介紹到這了,更多相關(guān)Java Word轉(zhuǎn)PDF內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java如何比較兩個對象并獲取不相等的字段詳解

    Java如何比較兩個對象并獲取不相等的字段詳解

    這篇文章主要給大家介紹了關(guān)于Java如何比較兩個對象并獲取不相等的字段以及JAVA判斷(獲?。﹥蓚€相同對象不同的數(shù)據(jù)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2021-11-11
  • 學(xué)習(xí)Java之Java中的異常處理機制詳解

    學(xué)習(xí)Java之Java中的異常處理機制詳解

    在本文中,小編將帶領(lǐng)大家來學(xué)習(xí)Java的異常處理機制,包括異常機制、異常類型、如何捕獲異常、如何拋出異常以及如何創(chuàng)建自定義異常等核心內(nèi)容,感興趣的同學(xué)跟著小編一起來看看吧
    2023-08-08
  • spring boot 本地圖片不能加載(圖片路徑)的問題及解決方法

    spring boot 本地圖片不能加載(圖片路徑)的問題及解決方法

    這篇文章主要介紹了spring boot 本地圖片不能加載(圖片路徑)的問題,解決的辦法其實很簡單,只要寫一個配置文件,也就是圖片位置的轉(zhuǎn)化器,原理是虛擬一個在服務(wù)器上的文件夾,與本地圖片的位置進行匹配。需要的朋友可以參考下
    2018-04-04
  • SpringBoot中MyBatis使用自定義TypeHandler的實現(xiàn)

    SpringBoot中MyBatis使用自定義TypeHandler的實現(xiàn)

    本文主要介紹了SpringBoot中MyBatis使用自定義TypeHandler,當(dāng)默認的類型映射不能滿足需求時,自定義?TypeHandler?就非常有用,具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • Sublime Text 打開Java文檔中文亂碼的解決方案

    Sublime Text 打開Java文檔中文亂碼的解決方案

    這篇文章主要介紹了Sublime Text 中文亂碼的解決方案,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-12-12
  • 解讀@SpringBootApplication注解有什么用

    解讀@SpringBootApplication注解有什么用

    @SpringBootApplication是SpringBoot的核心注解,主要包含@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan三個注解,這些注解共同簡化了Spring應(yīng)用的配置工作,并使得通過主程序類就可以啟動SpringBoot應(yīng)用
    2024-09-09
  • JSP服務(wù)器端和前端出現(xiàn)亂碼問題解決方案

    JSP服務(wù)器端和前端出現(xiàn)亂碼問題解決方案

    這篇文章主要介紹了JSP服務(wù)器端和前端出現(xiàn)亂碼問題解決方案,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • Java簡明解讀代碼塊的應(yīng)用

    Java簡明解讀代碼塊的應(yīng)用

    所謂代碼塊是指用"{}"括起來的一段代碼,根據(jù)其位置和聲明的不同,可以分為普通代碼塊、構(gòu)造塊、靜態(tài)塊、和同步代碼塊。如果在代碼塊前加上 synchronized關(guān)鍵字,則此代碼塊就成為同步代碼塊
    2022-07-07
  • Apache Commons fileUpload實現(xiàn)文件上傳之一

    Apache Commons fileUpload實現(xiàn)文件上傳之一

    這篇文章主要介紹了Apache Commons fileUpload實現(xiàn)文件上傳之一的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • Spring項目讀取配置文件中文亂碼的解決

    Spring項目讀取配置文件中文亂碼的解決

    這篇文章主要介紹了Spring項目讀取配置文件中文亂碼的解決方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01

最新評論