Global

Methods

(async) WHtml2docx(fpInHtml, fpOutDocx, optopt) → {Promise}

Description:
  • Html檔轉Docx檔

    轉檔由套件內之htmlToDocx.exe調用本機Microsoft Word(win32com)完成,故須於Windows且已安裝Word之機器執行。htmlToDocx.exe若不存在(安裝時npm封鎖scripts致postinstall未執行)會於轉檔當下自動下載,下載失敗則reject並帶網址與落點。 轉檔器內部失敗(Word未安裝、模板無法開啟、另存失敗等)一律reject並帶轉檔器回報之原因;resolve前另確認輸出檔已產生且非空。輸出資料夾不存在時自動建立

Source:
Example
import w from 'wsemi'
import WHtml2docx from './src/WHtml2docx.mjs'
//import WHtml2docx from 'w-html2docx/src/WHtml2docx.mjs'
//import WHtml2docx from 'w-html2docx'

async function test() {

    let fpIn = `./test/ztmp.html`
    let fpOut = `./test/ztmp.docx`
    let opt = {
        imgRatioWidthMax: 0.5,
    }

    let r = await WHtml2docx(fpIn, fpOut, opt)
    console.log(r)
    // => ok

    w.fsDeleteFile(fpOut)

}
test()
    .catch((err) => {
        console.log('catch', err)
    })
Parameters:
Name Type Attributes Default Description
fpInHtml String

輸入來源Html檔位置字串

fpOutDocx String

輸入轉出Docx檔位置字串

opt Object <optional>
{}

輸入設定物件,預設{}

Properties
Name Type Attributes Default Description
fpInTemp String <optional>
''

輸入Docx模板檔案位置字串,有給時須存在否則reject;未給時依序取模組載入當下工作路徑之./src/tmp.docx或./node_modules/w-html2docx/src/tmp.docx(套件內建模板),預設''

fontFamilies Array | String <optional>
['標楷體','Times New Roman']

輸入轉出Docx時強制更改字型陣列或字串,陣列順序為變更順序,若有要覆寫字型得放後面。預設['標楷體','Times New Roman']

imgRatioWidthMax Number <optional>
1

輸入圖片最大寬度比例,值介於0至1,圖片最大寬度為所在節之版心寬乘以本值,預設1

imgRatioHeightMax Number <optional>
1

輸入圖片最大高度比例,值介於0至1,圖片最大高度為所在節之版心高乘以0.937043054427296(為圖名預留空間)再乘以本值;有給imgHeightReserveLines且其生效時,改為其算出之高度乘以本值。預設1

imgHeightReserveLines Integer <optional>
null

輸入行格線模板之圖片下方預留格數,為非負整數,預設null(不啟用)。僅於圖片所在節設有文件格線(Word之「只指定行的格線」「指定行與字元的格線」「文字對齊字元格線」)時生效:圖片最大高度改為(每頁格數-本值)×行距-0.5點,行距為模板之文件格線行距(w:docGrid之w:linePitch),每頁格數為版心高÷行距之整數部分。行格線下圖片段佔「圖高÷行距」無條件進位之格數,故整頁高之圖下方仍留有本值格數,供間隔段與圖名使用,例如間隔段1格、圖名至多2行時至少給3。格數依實際所佔計,行距18點時12pt中文字每行佔1格、14pt之標楷體每行佔2格。建議再多給1格作為餘裕(如前例給4):帶段前段後距離之段落會使其後各行不再對齊格線而多佔,頁首頁尾高於邊界時Word亦會縮小本文區,使每頁實際格數少於推算值。給無效值、模板無行格線、或本值不小於每頁格數時不生效,沿用imgRatioHeightMax之預設算法

timeout Number <optional>
null

輸入轉檔逾時毫秒數,預設null表示不限制;逾時時強制關閉轉檔器並reject回傳逾時訊息,惟由轉檔器經COM啟動之Word不在其程序樹內,不會一併被關閉

Returns:

回傳Promise,resolve回傳'ok',reject回傳錯誤訊息字串

Type
Promise

(async) autoDownloadFiles() → {Promise}

Description:
  • 自動定位htmlToDocx.exe,若無檔案則自動下載,回傳htmlToDocx.exe的絕對路徑

    依序偵測當前工作路徑的src/與node_modules/w-html2docx/src/,皆無htmlToDocx.exe時, 代表安裝時npm封鎖scripts致postinstall未執行,故自動調用downloadFiles重新下載

    下載係先寫入暫存檔htmlToDocx.exe.download,完成後才改名為htmlToDocx.exe,故下載中途斷線或程序被終止時不會留下截斷之htmlToDocx.exe,下次呼叫會重新下載; 下載失敗(斷網、代理不可達、非2xx回應、中途斷線)時reject字串failed to download url[網址] to file[落點]: 原因

    供w-html2docx自身與其他依賴w-html2docx的套件調用,無須各自實作偵測與下載邏輯

    因htmlToDocx.exe只能用於Windows作業系統,故調用前須自行檢核作業系統

Source:
Example
import autoDownloadFiles from 'w-html2docx/src/autoDownloadFiles.mjs'

async function test() {

    //autoDownloadFiles, 無htmlToDocx.exe時自動下載, 下載失敗則reject
    let { fpExe } = await autoDownloadFiles()

    console.log('fpExe', fpExe)
    // fpExe D:\xxx\node_modules\w-html2docx\src\htmlToDocx.exe
}
test()
    .catch((err) => {
        console.log('catch', err)
    })
Returns:

回傳Promise,resolve回傳執行檔路徑物件,內含fpExe為htmlToDocx.exe的絕對路徑字串,reject回傳錯誤訊息

Type
Promise