UNPKG

@waiting/idcard-reader-base

Version:
22 lines (20 loc) 7.62 kB
/** * @waiting/idcard-reader-base * 二代机具读卡 * * @version 2.0.1 * @author waiting * @license MIT * @link https://github.com/waitingsong/node-idcard-reader-base#readme */ /** * @waiting/idcard-reader-base * 二代机具读卡 * * @version 2.0.1 * @author waiting * @license MIT * @link https://github.com/waitingsong/node-idcard-reader-base#readme */ import{join as e,tmpdir as t,normalize as i,unlinkAsync as r,isFileExists as n,isDirExists as o,createDirAsync as a,createFileAsync as s}from"@waiting/shared-core";import{mapTo as l,tap as c,concatMap as p}from"rxjs/operators";import{run as f}from"rxrunscript";const m={appDir:"",tmpDir:e(t(),"idcard-reader")},d={name:"",gender:0,genderName:"",nation:"",nationName:"",birth:"",address:"",idc:"",regorg:"",startdate:"",enddate:""},u={useComposite:!1,compositeDir:m.tmpDir,compositeQuality:35,compositeType:"jpg",textColor:"#303030",fontHwxhei:"c:/Windows/Fonts/hwxhei.ttf",fontOcrb:"c:/Windows/Fonts/ocrb10bt.ttf",fontSimhei:"c:/Windows/Fonts/simhei.ttf"},g={debug:!1,dllTxt:"",dllImage:"",findCardRetryTimes:1,imgSaveDir:m.tmpDir,port:0,searchAll:!1},w={...g,...u},h={compositePath:"",base:null,imagePath:""},y=new Map([["01","汉"],["02","蒙古"],["03","回"],["04","藏"],["05","维吾尔"],["06","苗"],["07","彝"],["08","壮"],["09","布依"],["10","朝鲜"],["11","满"],["12","侗"],["13","瑶"],["14","白"],["15","土家"],["16","哈尼"],["17","哈萨克"],["18","傣"],["19","黎"],["20","傈僳"],["21","佤"],["22","畲"],["23","高山"],["24","拉祜"],["25","水"],["26","东乡"],["27","纳西"],["28","景颇"],["29","柯尔克孜"],["30","土"],["31","达翰尔"],["32","仫佬"],["33","羌"],["34","布朗"],["35","撒拉"],["36","毛南"],["37","仡佬"],["38","锡伯"],["39","阿昌"],["40","普米"],["41","塔吉克"],["42","怒"],["43","乌孜别克"],["44","俄罗斯"],["45","鄂温克"],["46","德昂"],["47","保安"],["48","裕固"],["49","京"],["50","塔塔尔"],["51","独龙"],["52","鄂伦春"],["53","赫哲"],["54","门巴"],["55","珞巴"],["56","基诺"],["57","其它"],["98","外国人入籍"]]);function $(t){const r=i(e(m.tmpDir,"avatar-"+Math.random().toString()+".png")).replace(/\\/gu,"/"),n=i(t).replace(/\\/gu,"/"),o=`magick "${n}" -resize x353 -fuzz 9% -transparent "#FEFEFE" "${r}"`,a=f(o,null,{maxCmdLength:4096}).pipe(l(r));return a}function x(t,n,o){if(!t)throw new TypeError("base value invalid");if(!o.fontHwxhei||!o.fontOcrb||!o.fontSimhei)throw new TypeError("font value invalid");const a=e(m.appDir,"assets"),s=e(a,"tpl.png"),p=e(o.compositeDir,"composite-"+Math.random().toString()+`.${o.compositeType}`).replace(/\\/gu,"/"),d=o.textColor,u=i(o.fontHwxhei).replace(/\\/gu,"/"),g=i(o.fontOcrb).replace(/\\/gu,"/"),w=i(o.fontSimhei).replace(/\\/gu,"/"),h=[T(t.name,d,u),b(t.genderName,d,u),v(t.nationName,d,u),D(t.birth,d,u),C(t.idc,d,g),E(t.address,d,u),k(t.regorg,d,w),S(t.startdate,t.enddate,d,u)],y=`magick ${s} `+h.join(" ")+` -compose src-over "${n}" -geometry +619+125 -quality ${o.compositeQuality} -composite "${p}"`,$=f(y,null,{maxCmdLength:4096}).pipe(l(p),c(()=>r(n)));return $}function T(e,t,i){const r=e?e.trim():"";if(!r)throw new TypeError("value invalid");return`-fill "${t}" -font "${i}" -pointsize 42 -draw "text 208,146 '${r}'"`}function b(e,t,i){const r=e?e.trim():"";if(!r)throw new TypeError("value invalid");return`-fill "${t}" -font "${i}" -pointsize 34 -draw "text 208,220 '${r}'"`}function v(e,t,i){const r=e?e.trim():"";if(!r)throw new TypeError("value invalid");return`-fill "${t}" -font "${i}" -pointsize 34 -draw "text 395,220 '${r}'"`}function D(e,t,i){const r=e?e.trim():"";if(!r)throw new TypeError("value invalid");const n=r.slice(0,4);let o=r.slice(4,6),a=r.slice(6,8);o.startsWith("0")&&(o=" "+o[1]),a.startsWith("0")&&(a=" "+a[1]);let s=`-fill "${t}" -font "${i}" -pointsize 33 -kerning 1 -draw "text 210,295 '${n}'"`;return s+=` -fill "${t}" -font "${i}" -pointsize 33 -draw "text 350,295 '${o}'"`,s+=` -fill "${t}" -font "${i}" -pointsize 33 -draw "text 435,295 '${a}'"`,s}function C(e,t,i){const r=e?e.trim():"";if(!r)throw new TypeError("value invalid");return`-fill "${t}" -font "${i}" -pointsize 45 -kerning 1 -draw "text 355,561 '${r}'"`}function E(e,t,i){const r=e?e.trim():"";if(!r)throw new TypeError("value invalid");const n=r.length;let o="",a=0,s="",l=368;const c=50;do{if(s=N(r,a),!s.length)break;o+=` -fill "${t}" -font "${i}" -pointsize 33 -kerning 3 -draw "text 208,${l} '${s}'"`,a+=s.length,l+=50}while(a<=n);return o}function N(e,t){if(e.length<=t)return"";const i=e.slice(t);if(i.length>10&&/[\d\w-]/u.test(i.slice(11,12))){const e=i.slice(12,13);if(e&&/[\d\w-]/u.test(e))return i.slice(0,10)}return i.slice(0,11)}function k(e,t,i){const r=e?e.trim():"";if(!r)throw new TypeError("value invalid");return`-fill "${t}" -font "${i}" -pointsize 32 -kerning 3 -draw "text 413,1138 '${r}'"`}function S(e,t,i,r){const n=e?e.slice(0,4)+"."+e.slice(4,6)+"."+e.slice(6,8):"";if(!n)throw new TypeError("value invalid");const o=Number.isNaN(+t)?t:t.slice(0,4)+"."+t.slice(4,6)+"."+t.slice(6,8);return`-fill "${i}" -font "${r}" -pointsize 32 -kerning 1.6 -draw "text 413,1215 '${n}-${o}'"`}function z(e){const t={...e};if(t.gender)switch(t.gender){case 1:t.genderName="男";break;case 2:t.genderName="女";break;default:t.genderName="未知"}else if(t.genderName&&!t.gender)switch(t.genderName){case"男":t.gender=1;break;case"女":t.gender=2;break;default:t.gender=0}if(t.nation){const e=y.get(t.nation);t.nationName=e?e.trim():"未知",t.startdate=t.startdate.trim(),t.enddate=t.enddate.trim()}else if(t.nationName&&!t.nation)for(const[e,i]of y)if(i===t.nationName){t.nation=e;break}return t}function R(e,t,i){if(!t)throw new TypeError("base data value empty");const r=$(e).pipe(p(e=>x(t,e,i)));return r}async function F(e){if(!await n(e))throw new Error("File not exists: "+e)}async function Q(t){if(!t)throw new Error("value of imgSaveDir empty");await o(t)||(await a(t),await s(e(t,".test"),"idctest"))}function H(e){const t={...g};if(!e.dllTxt)throw new Error("params dllTxt undefined or blank");return t.dllTxt=i(e.dllTxt),"string"==typeof e.dllImage&&e.dllImage&&(t.dllImage=i(e.dllImage)),"string"==typeof e.imgSaveDir&&e.imgSaveDir&&(t.imgSaveDir=i(e.imgSaveDir)),"boolean"==typeof e.debug&&(t.debug=e.debug),"boolean"==typeof e.searchAll&&(t.searchAll=e.searchAll),"number"==typeof e.findCardRetryTimes&&(t.findCardRetryTimes=e.findCardRetryTimes),(Number.isNaN(t.findCardRetryTimes)||t.findCardRetryTimes<0)&&(t.findCardRetryTimes=w.findCardRetryTimes),"number"==typeof e.port&&e.port>0&&(t.port=e.port),t}function I(e){const t={...u};if(e.dllImage&&e.useComposite&&(t.useComposite=!0),e.compositeDir&&"string"==typeof e.compositeDir&&(t.compositeDir=i(e.compositeDir)),"number"==typeof e.compositeQuality&&e.compositeQuality>=1&&e.compositeQuality<=100&&(t.compositeQuality=e.compositeQuality),e.textColor&&(t.textColor=e.textColor),e.compositeType){if(!["bmp","gif","jpg","png","webp"].includes(e.compositeType))throw new TypeError("compositeType value invalid");t.compositeType=e.compositeType}else t.compositeType=w.compositeType;return e.fontHwxhei&&(t.fontHwxhei=e.fontHwxhei),e.fontOcrb&&(t.fontOcrb=e.fontOcrb),e.fontSimhei&&(t.fontSimhei=e.fontSimhei),t}m.appDir=e(__dirname,"/..");export{R as composite,m as config,z as formatBaseData,$ as handleAvatar,x as handleBaseInfo,u as initialCompositeOpts,d as initialDataBase,g as initialDeviceOpts,h as initialIDData,w as initialOpts,y as nationMap,I as parseCompositeOpts,H as parseDeviceOpts,Q as testWrite,F as validateDllFile}; //# sourceMappingURL=index.esm.min.js.map