# 安裝LibreOffice(如果尚未安裝)
sudo apt update
sudo apt install libreoffice# 將DOC轉換為PDF
libreoffice --headless --convert-to pdf 你的文檔.doc# 或者指定輸出目錄
libreoffice --headless --convert-to pdf --outdir /輸出目錄 你的文檔.doc
python
import subprocess
import os
import sysdef convert_doc_to_pdf(doc_path, output_dir=None):"""將DOC文檔轉換為PDF:param doc_path: DOC文檔路徑:param output_dir: 輸出目錄(可選):return: 轉換后的PDF路徑,失敗返回None"""# 檢查文件是否存在if not os.path.exists(doc_path):print(f"錯誤:文件不存在 {doc_path}")return None# 檢查文件格式if not doc_path.lower().endswith(('.doc', '.docx')):print(f"錯誤:不支持的文件格式 {doc_path}")return None# 設置輸出目錄if output_dir is None:output_dir = os.path.dirname(doc_path)else:os.makedirs(output_dir, exist_ok=True)# 構建輸出文件路徑base_name = os.path.splitext(os.path.basename(doc_path))[0]pdf_path = os.path.join(output_dir, f"{base_name}.pdf")try:# 使用LibreOffice進行轉換cmd = ['libreoffice', '--headless', '--convert-to', 'pdf','--outdir', output_dir,doc_path]print(f"正在轉換: {doc_path} -> {pdf_path}")result = subprocess.run(cmd, capture_output=True, text=True, timeout=60)if result.returncode == 0:print(f"轉換成功: {pdf_path}")return pdf_pathelse:print(f"轉換失敗: {result.stderr}")return Noneexcept subprocess.TimeoutExpired:print("轉換超時")return Noneexcept FileNotFoundError:print("未找到LibreOffice,請先安裝: sudo apt install libreoffice")return Noneexcept Exception as e:print(f"轉換過程中出錯: {e}")return None# 批量轉換函數
def batch_convert_docs_to_pdf(directory, output_dir=None):"""批量轉換目錄中的所有DOC文檔為PDF"""if output_dir is None:output_dir = directorysupported_extensions = ('.doc', '.docx')converted_files = []for filename in os.listdir(directory):if filename.lower().endswith(supported_extensions):doc_path = os.path.join(directory, filename)pdf_path = convert_doc_to_pdf(doc_path, output_dir)if pdf_path:converted_files.append(pdf_path)return converted_files# 使用示例
if __name__ == "__main__":# 單個文件轉換doc_file = "/home/yklele/anli.doc"pdf_file = convert_doc_to_pdf(doc_file)if pdf_file:print(f"轉換完成: {pdf_file}")else:print("轉換失敗")# 批量轉換示例# docs_directory = "/path/to/your/documents"# converted_files = batch_convert_docs_to_pdf(docs_directory)# print(f"批量轉換完成: {len(converted_files)} 個文件")
comtypes
import os
import comtypes.client
import pythoncomdef convert_doc_to_pdf_wps(doc_path, pdf_path=None):"""使用WPS進行DOC到PDF的轉換(需要安裝WPS)"""if not os.path.exists(doc_path):return Falseif pdf_path is None:pdf_path = os.path.splitext(doc_path)[0] + '.pdf'try:# 初始化COMpythoncom.CoInitialize()# 創建WPS應用對象wps = comtypes.client.CreateObject("KWPS.Application")wps.Visible = False# 打開文檔doc = wps.Documents.Open(doc_path)# 另存為PDFdoc.SaveAs(pdf_path, FileFormat=17) # 17代表PDF格式# 關閉文檔和應用doc.Close()wps.Quit()print(f"轉換成功: {pdf_path}")return Trueexcept Exception as e:print(f"轉換失敗: {e}")return Falsefinally:pythoncom.CoUninitialize()