Methods
(async) WHtml2docx(fpInHtml, fpOutDocx, optopt) → {Promise}
- Description:
Html檔轉Docx檔
轉檔由htmlToDocx.exe調用本機Microsoft Word(win32com)完成,故須於Windows且已安裝Word之機器執行。htmlToDocx.exe不含於npm包,首次轉檔時經ensureBins自GitHub(釘選提交)或環境變數W_BIN_MIRROR之鏡像取得,以bin/manifest.json之SHA-256與大小校驗後存於快取(預設為套件根之bin-cache/,可由W_BIN_CACHE改位置),之後自快取取得(亦校驗);環境變數W_BIN_OFFLINE=1時不連網。取得失敗則reject字串,內含錯誤代碼(如E_OFFLINE_MISSING、E_HASH_MISMATCH)與原因,詳見README〈外部執行檔〉 轉檔器內部失敗(Word未安裝、模板無法開啟、另存失敗等)一律reject並帶轉檔器回報之原因;resolve前另確認輸出檔已產生且非空。輸出資料夾不存在時自動建立 html內圖片皆內嵌於輸出docx,使docx不依賴原圖:data URI照舊,本機路徑與網址之圖片由Word取回後斷開連結內嵌;解析不到者(圖檔不存在、Word無法解析之路徑寫法如正斜線絕對路徑與百分比編碼路徑、網址取不到)不產生輸出檔並reject,訊息每行列出一個無法解析之圖片來源(
unresolved linked picture: <來源>),可解析之路徑寫法詳見README〈圖片〉
- 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
|
Returns:
回傳Promise,resolve回傳'ok',reject回傳錯誤訊息字串
- Type
- Promise
(async) autoDownloadFiles() → {Promise}
- Description:
取得htmlToDocx.exe的絕對路徑,保留作為舊版對外匯入點之相容層,實際改由ensureBins取得
舊版於當前工作路徑的src/與node_modules/w-html2docx/src/查找,缺檔時自主幹下載且不校驗;現改經ensureBins:首次使用時自GitHub(釘選提交)或環境變數W_BIN_MIRROR之鏡像取得,以bin/manifest.json之SHA-256與大小校驗後存於快取(預設為套件根之bin-cache/,可由W_BIN_CACHE改位置),之後自快取取得(亦校驗),故回傳之路徑位於快取而非src/。不在安裝時下載
新程式碼請直接調用ensureBins(
w-html2docx/src/ensureBins.mjs或WHtml2docx.ensureBins)因htmlToDocx.exe只能用於Windows作業系統,故調用前須自行檢核作業系統
- Source:
- Deprecated:
- 改用ensureBins
Example
import autoDownloadFiles from 'w-html2docx/src/autoDownloadFiles.mjs'
async function test() {
//autoDownloadFiles, 經ensureBins取得並校驗htmlToDocx.exe, 取不到則reject
let { fpExe } = await autoDownloadFiles()
console.log('fpExe', fpExe)
// fpExe D:\xxx\node_modules\w-html2docx\bin-cache\<sha256>\htmlToDocx.exe
}
test()
.catch((err) => {
console.log('catch', err)
})
Returns:
回傳Promise,resolve回傳執行檔路徑物件,內含fpExe為htmlToDocx.exe的絕對路徑字串,reject回傳帶code之Error(如E_OFFLINE_MISSING、E_HASH_MISMATCH)
- Type
- Promise
ensureBins(optopt) → {Promise}
- Description:
取得本套件之外部執行檔: 首次使用時下載(或自鏡像取得)並以bin/manifest.json之SHA-256與大小校驗, 之後自快取取得(亦校驗)
規格: 外部執行檔之存放下載校驗與離線(制式規格)§6; 實作為wsemi之fsEnsureBins, 本套件不另寫下載、快取、鏡像、校驗 環境變數: W_BIN_CACHE(共用快取資料夾)、W_BIN_MIRROR(鏡像, 本地資料夾或http(s)網址)、W_BIN_OFFLINE(1為離線), 見README〈外部執行檔〉
- Source:
Parameters:
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
opt |
Object |
<optional> |
{}
|
輸入設定物件, 交wsemi之fsEnsureBins(names、cacheDir、mirror、offline、onProgress等), pkgRoot固定為本套件根 |
Returns:
回傳Promise, resolve回傳{ [檔名]: 絕對路徑 }, reject回傳帶code之Error(E_OFFLINE_MISSING等)
- Type
- Promise