xh-htmlword 1.1.8 → 1.1.9

Sign up to get free protection for your applications and to get access to all the features.
package/README.md CHANGED
@@ -13,6 +13,8 @@ import handleExportWord from "xh-htmlword";
13
13
  ## 页面 dom 生成后调用
14
14
 
15
15
  ```js
16
+ //在需要分页的地方添加 <span><br clear="all" style="page-break-before: always" /> </span> 即可分页
17
+
16
18
  // dom:需要渲染的html父盒子标签 , 类型:string 例如 id/class
17
19
  // fileName:文件名称 类型:string
18
20
  // timeOut:设置导出图片加载 超时时间 默认值 5000 (5s)
@@ -195,6 +197,13 @@ handleExportWord({
195
197
  <el-step title="Step 3" />
196
198
  </el-steps>
197
199
  </div>
200
+
201
+ <span><br clear="all" style="page-break-before: always" /> </span>
202
+ 分页
203
+
204
+ <span><br clear="all" style="page-break-before: always" /> </span>
205
+ 分页
206
+
198
207
  </div>
199
208
 
200
209
  <button @click="handleExport">导出</button>
package/dist/xh.js CHANGED
@@ -10257,28 +10257,32 @@ const $C = Array.isArray, AQ = (r, e, A) => new Promise((t, n) => {
10257
10257
  }) => {
10258
10258
  const s = document.querySelector(r), g = s.cloneNode(!0);
10259
10259
  if (o && o.length > 0 && $C(o)) {
10260
- const f = o.map((u) => {
10261
- const U = document.querySelector(u);
10262
- if (!U)
10260
+ const f = [];
10261
+ o.map((u) => {
10262
+ const U = document.querySelectorAll(u);
10263
+ if (U.length == 0)
10263
10264
  throw new Error(`dom不存在:“${u}” , 请检查传入的dom标签是否正确`);
10264
- return new Promise((p, v) => {
10265
- YC(U, {
10266
- scale: 1,
10267
- width: U.offsetWidth,
10268
- height: U.offsetHeight,
10269
- allowTaint: !0,
10270
- useCORS: !0
10271
- }).then((K) => {
10272
- const k = g.querySelector(u);
10273
- k.innerHTML = "";
10274
- const L = K.toDataURL("image/png", 1), F = new Image();
10275
- F.onload = () => {
10276
- URL.revokeObjectURL(L);
10277
- }, F.src = L, k.appendChild(F), p(K);
10278
- });
10265
+ U.forEach((p, v) => {
10266
+ f.push(
10267
+ new Promise((K, k) => {
10268
+ YC(p, {
10269
+ scale: 1,
10270
+ width: p.offsetWidth,
10271
+ height: p.offsetHeight,
10272
+ allowTaint: !0,
10273
+ useCORS: !0
10274
+ }).then((L) => {
10275
+ const F = g.querySelectorAll(u)[v];
10276
+ F.innerHTML = "";
10277
+ const O = L.toDataURL("image/png", 1), D = new Image();
10278
+ D.onload = () => {
10279
+ URL.revokeObjectURL(O);
10280
+ }, D.src = O, F.appendChild(D), K(L);
10281
+ });
10282
+ })
10283
+ );
10279
10284
  });
10280
- });
10281
- await Promise.all(f);
10285
+ }), await Promise.all(f);
10282
10286
  }
10283
10287
  const Q = s == null ? void 0 : s.getElementsByTagName("canvas"), c = g == null ? void 0 : g.getElementsByTagName("canvas"), h = Array.from(Q).map((f, u) => new Promise((U) => {
10284
10288
  const p = f.toDataURL("image/png", 1), v = new Image();
@@ -10303,7 +10307,7 @@ const $C = Array.isArray, AQ = (r, e, A) => new Promise((t, n) => {
10303
10307
  });
10304
10308
  };
10305
10309
  function eQ(r, e) {
10306
- return e && [...tQ(e)].forEach((A) => {
10310
+ return r = r.replace(/break-before: page/g, "page-break-before: always"), e && [...tQ(e)].forEach((A) => {
10307
10311
  if (r.includes(fi(A.selectorText))) {
10308
10312
  let t = new RegExp(`class="${fi(A.selectorText)}"`, "g");
10309
10313
  r = r.replace(t, `style="${A.style.cssText}"`);
package/dist/xh.umd.cjs CHANGED
@@ -98,10 +98,10 @@ Content-Location: `+((a=i.contentLocation)==null?"":a)+`
98
98
  * @vue/shared v3.4.23
99
99
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
100
100
  * @license MIT
101
- **/process.env.NODE_ENV!=="production"&&Object.freeze({}),process.env.NODE_ENV!=="production"&&Object.freeze([]);const $C=Array.isArray,AQ=(r,e,A)=>new Promise((t,n)=>{const i=new Image;i.crossOrigin="",i.src=r.src,i.onload=function(){const s=document.createElement("canvas");s.width=r.width,s.height=r.height;const g=s.getContext("2d");g==null||g.drawImage(i,0,0,r.width,r.height);const Q=i.src.substring(i.src.lastIndexOf(".")+1).toLowerCase(),c=s.toDataURL("image/"+Q,1);r.setAttribute("src",c),s.remove(),clearTimeout(a),t(c)},i.onerror=async()=>{clearTimeout(a),await o(),console.error("图片加载异常:",i.src),t("xh-htmlword: 图片加载异常")};const a=setTimeout(async()=>{await o(),console.error("图片加载超时:",i.src),t("xh-htmlword: 图片加载超时")},e),o=()=>new Promise(s=>{const g=new Image;g.crossOrigin="",g.src=A||ya,g.onload=()=>{const Q=document.createElement("canvas");Q.width=r.width,Q.height=r.height;const c=Q.getContext("2d");c==null||c.drawImage(g,0,0,r.width,r.height);const h=g.src.substring(g.src.lastIndexOf(".")+1).toLowerCase(),C=Q.toDataURL("image/"+h,1);r.setAttribute("src",C),Q.remove(),s()}})}),eQ=async({dom:r,fileName:e=nQ(),timeOut:A=5e3,callBack:t,options:n={},defultImg:i,className:a,drawCanvas:o})=>{const s=document.querySelector(r),g=s.cloneNode(!0);if(o&&o.length>0&&$C(o)){const f=o.map(u=>{const U=document.querySelector(u);if(!U)throw new Error(`dom不存在:“${u}” , 请检查传入的dom标签是否正确`);return new Promise((p,v)=>{YC(U,{scale:1,width:U.offsetWidth,height:U.offsetHeight,allowTaint:!0,useCORS:!0}).then(K=>{const k=g.querySelector(u);k.innerHTML="";const L=K.toDataURL("image/png",1),F=new Image;F.onload=()=>{URL.revokeObjectURL(L)},F.src=L,k.appendChild(F),p(K)})})});await Promise.all(f)}const Q=s==null?void 0:s.getElementsByTagName("canvas"),c=g==null?void 0:g.getElementsByTagName("canvas"),h=Array.from(Q).map((f,u)=>new Promise(U=>{const p=f.toDataURL("image/png",1),v=new Image;v.onload=()=>{URL.revokeObjectURL(p),U()},v.src=p,c[u].parentNode.insertBefore(v,c[u])})),C=g.getElementsByTagName("canvas");Array.from(C).forEach(f=>f.parentNode.removeChild(f)),Promise.all(h).then(async()=>{const f=[...g.getElementsByTagName("img")];let u=[];f.forEach(K=>{u.push(AQ(K,A,i))}),await Promise.all(u);const U=`
101
+ **/process.env.NODE_ENV!=="production"&&Object.freeze({}),process.env.NODE_ENV!=="production"&&Object.freeze([]);const $C=Array.isArray,AQ=(r,e,A)=>new Promise((t,n)=>{const i=new Image;i.crossOrigin="",i.src=r.src,i.onload=function(){const s=document.createElement("canvas");s.width=r.width,s.height=r.height;const g=s.getContext("2d");g==null||g.drawImage(i,0,0,r.width,r.height);const Q=i.src.substring(i.src.lastIndexOf(".")+1).toLowerCase(),c=s.toDataURL("image/"+Q,1);r.setAttribute("src",c),s.remove(),clearTimeout(a),t(c)},i.onerror=async()=>{clearTimeout(a),await o(),console.error("图片加载异常:",i.src),t("xh-htmlword: 图片加载异常")};const a=setTimeout(async()=>{await o(),console.error("图片加载超时:",i.src),t("xh-htmlword: 图片加载超时")},e),o=()=>new Promise(s=>{const g=new Image;g.crossOrigin="",g.src=A||ya,g.onload=()=>{const Q=document.createElement("canvas");Q.width=r.width,Q.height=r.height;const c=Q.getContext("2d");c==null||c.drawImage(g,0,0,r.width,r.height);const h=g.src.substring(g.src.lastIndexOf(".")+1).toLowerCase(),C=Q.toDataURL("image/"+h,1);r.setAttribute("src",C),Q.remove(),s()}})}),eQ=async({dom:r,fileName:e=nQ(),timeOut:A=5e3,callBack:t,options:n={},defultImg:i,className:a,drawCanvas:o})=>{const s=document.querySelector(r),g=s.cloneNode(!0);if(o&&o.length>0&&$C(o)){const f=[];o.map(u=>{const U=document.querySelectorAll(u);if(U.length==0)throw new Error(`dom不存在:“${u}” , 请检查传入的dom标签是否正确`);U.forEach((p,v)=>{f.push(new Promise((K,k)=>{YC(p,{scale:1,width:p.offsetWidth,height:p.offsetHeight,allowTaint:!0,useCORS:!0}).then(L=>{const F=g.querySelectorAll(u)[v];F.innerHTML="";const O=L.toDataURL("image/png",1),D=new Image;D.onload=()=>{URL.revokeObjectURL(O)},D.src=O,F.appendChild(D),K(L)})}))})}),await Promise.all(f)}const Q=s==null?void 0:s.getElementsByTagName("canvas"),c=g==null?void 0:g.getElementsByTagName("canvas"),h=Array.from(Q).map((f,u)=>new Promise(U=>{const p=f.toDataURL("image/png",1),v=new Image;v.onload=()=>{URL.revokeObjectURL(p),U()},v.src=p,c[u].parentNode.insertBefore(v,c[u])})),C=g.getElementsByTagName("canvas");Array.from(C).forEach(f=>f.parentNode.removeChild(f)),Promise.all(h).then(async()=>{const f=[...g.getElementsByTagName("img")];let u=[];f.forEach(K=>{u.push(AQ(K,A,i))}),await Promise.all(u);const U=`
102
102
  <html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'><head>
103
103
  </head>
104
104
  <body>
105
105
  ${g.outerHTML}
106
106
  </body>
107
- </html>`,p=tQ(U,a),v=Ua.asBlob(p,n);va(v,`${e}.docx`),t&&t()})};function tQ(r,e){return e&&[...rQ(e)].forEach(A=>{if(r.includes(ha(A.selectorText))){let t=new RegExp(`class="${ha(A.selectorText)}"`,"g");r=r.replace(t,`style="${A.style.cssText}"`)}}),r}function ha(r){let e=r.match(/\.(\w+)/);if(e)return e[1];console.log("没有找到匹配的部分")}function rQ(r){return[...document.styleSheets].reverse().find(({cssRules:t})=>[...t].find(n=>n.selectorText.includes(r))).cssRules}const nQ=()=>{const r=new Date,e=r.getFullYear(),A=("0"+(r.getMonth()+1)).slice(-2),t=("0"+r.getDate()).slice(-2);return`${e}${A}${t}`};return eQ});
107
+ </html>`,p=tQ(U,a),v=Ua.asBlob(p,n);va(v,`${e}.docx`),t&&t()})};function tQ(r,e){return r=r.replace(/break-before: page/g,"page-break-before: always"),e&&[...rQ(e)].forEach(A=>{if(r.includes(ha(A.selectorText))){let t=new RegExp(`class="${ha(A.selectorText)}"`,"g");r=r.replace(t,`style="${A.style.cssText}"`)}}),r}function ha(r){let e=r.match(/\.(\w+)/);if(e)return e[1];console.log("没有找到匹配的部分")}function rQ(r){return[...document.styleSheets].reverse().find(({cssRules:t})=>[...t].find(n=>n.selectorText.includes(r))).cssRules}const nQ=()=>{const r=new Date,e=r.getFullYear(),A=("0"+(r.getMonth()+1)).slice(-2),t=("0"+r.getDate()).slice(-2);return`${e}${A}${t}`};return eQ});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xh-htmlword",
3
- "version": "1.1.8",
3
+ "version": "1.1.9",
4
4
  "type": "module",
5
5
  "description": "用于html页转word文档的工具",
6
6
  "files": [