Global

Methods

(async) WDocxSplit(fpIn, strSep, fdOut, optopt) → {Promise}

Description:
  • 依照指定字串分割Docx檔

    分割由splitDocx.exe調用本機Microsoft Word(win32com)完成,故須於Windows且已安裝Word之機器執行。splitDocx.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〈外部執行檔〉

Source:
Example
import w from 'wsemi'
import WDocxSplit from './src/WDocxSplit.mjs'
//import WDocxSplit from 'w-docx-split/src/WDocxSplit.mjs'
//import WDocxSplit from 'w-docx-split'

async function test() {

    let fpIn = `./test/docin.docx`
    let strSep = '[systag:sepline]'
    let fdOut = `./test/out`
    let opt = {
        padZero: 3,
    }

    let r = await WDocxSplit(fpIn, strSep, fdOut, opt)
    console.log(r)
    // => ok

    w.fsDeleteFolder(fdOut)

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

輸入來源Html檔位置字串

strSep String

輸入內文會提供之分割字串

fdOut String

輸入轉出Docx檔位置字串

opt Object <optional>
{}

輸入設定物件,預設{}

Properties
Name Type Attributes Default Description
padZero Integer <optional>
0

輸入是否補0位數整數,例如padZero=3時檔名會變成001.docx,預設0

Returns:

回傳Promise,resolve回傳成功訊息'ok',reject回傳錯誤訊息字串。reject之字串有下列型態:參數檢測失敗為說明字串;取不到執行檔為[錯誤代碼] 原因(如[E_OFFLINE_MISSING] ...);splitDocx.exe無法執行或離開碼非0為execProcess之訊息(如code[N]:\n...);splitDocx.exe執行後自報失敗(如輸入非docx、docx損毀、Word無法開啟)為[E_SPLIT_FAILED] 原因,原因為exe輸出之診斷(已依系統字碼頁解碼,不回顯輸入路徑,但Word之診斷可能自行含檔名),此時不會產生輸出檔(分割中途失敗時,失敗前已寫出之檔不會被清除)。splitDocx.exe不論成敗離開碼皆為0,故以其輸出判定成敗:須有success行且無error:行才resolve,空輸出或未知輸出亦視為失敗

Type
Promise

(async) autoDownloadFiles() → {Promise}

Description:
  • 取得splitDocx.exe的絕對路徑,保留作為舊版對外匯入點之相容層,實際改由ensureBins取得

    舊版於當前工作路徑的src/與node_modules/w-docx-split/src/查找,缺檔時自主幹下載且不校驗;現改經ensureBins:首次使用時自GitHub(釘選提交)或環境變數W_BIN_MIRROR之鏡像取得,以bin/manifest.json之SHA-256與大小校驗後存於快取(預設為套件根之bin-cache/,可由W_BIN_CACHE改位置),之後自快取取得(亦校驗),故回傳之路徑位於快取而非src/。不在安裝時下載

    新程式碼請直接調用ensureBins(w-docx-split/src/ensureBins.mjs或WDocxSplit.ensureBins)

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

Source:
Deprecated:
  • 改用ensureBins
Example
import autoDownloadFiles from 'w-docx-split/src/autoDownloadFiles.mjs'

async function test() {

    //autoDownloadFiles, 經ensureBins取得並校驗splitDocx.exe, 取不到則reject
    let { fpExe } = await autoDownloadFiles()

    console.log('fpExe', fpExe)
    // fpExe D:\xxx\node_modules\w-docx-split\bin-cache\<sha256>\splitDocx.exe
}
test()
    .catch((err) => {
        console.log('catch', err)
    })
Returns:

回傳Promise,resolve回傳執行檔路徑物件,內含fpExe為splitDocx.exe的絕對路徑字串,reject回傳帶code之Error(如E_OFFLINE_MISSING、E_HASH_MISMATCH)

Type
Promise

ensureBins(optopt) → {Promise}

Description:
  • 取得本套件之外部執行檔splitDocx.exe: 首次使用時下載(或自鏡像取得)並以bin/manifest.json之SHA-256與大小校驗, 之後自快取取得(亦校驗)

    規格: 外部執行檔之存放下載校驗與離線(制式規格)§6; 實作為wsemi之fsEnsureBins, 本套件不另寫下載、快取、鏡像、校驗 環境變數: W_BIN_CACHE(共用快取資料夾)、W_BIN_MIRROR(鏡像, 本地資料夾或http(s)網址)、W_BIN_OFFLINE(1為離線), 見README〈外部執行檔〉

Source:
Example
import ensureBins from 'w-docx-split/src/ensureBins.mjs'
//import WDocxSplit from 'w-docx-split'; WDocxSplit.ensureBins()

async function test() {

    //部署前預先取得splitDocx.exe(連網機器執行一次, 或設W_BIN_CACHE後執行以備鏡像)
    let bins = await ensureBins()

    console.log(bins['splitDocx.exe'])
    // D:\xxx\node_modules\w-docx-split\bin-cache\<sha256>\splitDocx.exe
}
test()
    .catch((err) => {
        console.log('catch', err)
    })
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