0.可用pyinstaller或nuitka編譯,但nuitka編譯出檔案會小一點(4x mb),不過卻無法執行待研究 1.可先用一般編譯方式產生spec檔: pyinstaller -F htmlToDocx.py,就會產生htmlToDocx.spec 2.若有需要修改spec後,編譯指令改為對spec檔編譯: python -m PyInstaller htmlToDocx.spec --noconfirm --clean (於srcPython內執行, 產物為dist/htmlToDocx.exe, 再複製至../src/htmlToDocx.exe) 3.使用build.bat進行編譯 4.建置環境須先安裝 pip install pyinstaller pywin32。2026-10-10 現行exe以Python 3.14.3 + PyInstaller 6.22.3 + pywin32 312建置 8.編譯完複製htmlToDocx.exe至src,使用run.bat執行,傳入的b64可將物件 { 'fpInSrc': 'input.html', #來源html絕對路徑 'fpInTemp': 'tmp.docx', #docx模板絕對路徑 'fpOut': 'output.docx', #輸出docx絕對路徑 'fontFamilies': ['標楷體', 'Times New Roman'], #依序強制更改之字型 'imgRatioWidthMax': 1, #圖片最大寬度比例(0至1) 'imgRatioHeightMax': 1, #圖片最大高度比例(0至1) 'imgHeightReserveLines': None, #行格線模板之圖片下方預留格數(非負整數), 可省略, 省略或無效時不啟用 } 序列化成json字串再轉base64即可 9.輸出約定: stdout與stderr皆為utf-8。成功時stdout印 success 且離開碼0;失敗時stdout印 error: 例外類別: 原因(如 error: com_error: (-2147221005, '無效的類別字串', None, None) 為Word未安裝) 且離開碼1。各調整步驟(字型、圖片縮放、行距、對齊、零寬空格)之例外只印至stderr不影響結果。任一步驟例外時仍會關閉已開啟之文件並結束Word 10.圖片最大寬高依圖片所在節之版心計算: 寬為版心寬×imgRatioWidthMax; 高預設為版心高×0.937043054427296×imgRatioHeightMax。 有給imgHeightReserveLines且圖片所在節設有文件格線(docGrid之type為lines、linesAndChars或snapToChars)時, 高改為((每頁格數-預留格數)×行距-0.5)×imgRatioHeightMax, 行距取模板該節之docGrid linePitch(Word COM無此屬性, 由模板之word/document.xml讀取), 每頁格數為floor(版心高÷行距); 預留格數不小於每頁格數時不啟用並印提示至stderr。 2026-10-10 以Word 16.0.14334實測: 行內圖片段佔ceil(圖高÷行距)格; 由k格進位為k+1格之門檻多恰為k×行距, 行距20點時部分k提前至多0.25點, 故減0.5點 ---------------------------------------------------------------------- 參考 解决方法:pyinstaller打包缺文件 https://www.geek-share.com/detail/2773482967.html pyinstaller spec文件 https://pyinstaller.readthedocs.io/en/stable/spec-files.html