jspdf-utils 0.1.9 → 0.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/html-to-pdf.js +211 -211
- package/package.json +1 -1
package/dist/html-to-pdf.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import P from "html2canvas";
|
|
2
2
|
const q = {
|
|
3
3
|
a0: [841, 1189],
|
|
4
4
|
a1: [594, 841],
|
|
@@ -22,8 +22,8 @@ const q = {
|
|
|
22
22
|
legal: 25.4,
|
|
23
23
|
tabloid: 25
|
|
24
24
|
};
|
|
25
|
-
function
|
|
26
|
-
const e = t.format ?? "a4", [a,
|
|
25
|
+
function S(t = {}) {
|
|
26
|
+
const e = t.format ?? "a4", [a, o] = q[e], i = t.pageWidth ?? a, n = t.pageHeight ?? o, s = $[e], r = {
|
|
27
27
|
top: s,
|
|
28
28
|
right: s,
|
|
29
29
|
bottom: s,
|
|
@@ -33,15 +33,15 @@ function M(t = {}) {
|
|
|
33
33
|
unit: t.unit ?? "mm",
|
|
34
34
|
format: e,
|
|
35
35
|
pageWidth: i,
|
|
36
|
-
pageHeight:
|
|
36
|
+
pageHeight: n,
|
|
37
37
|
margin: { ...r, ...t.margin }
|
|
38
38
|
};
|
|
39
39
|
}
|
|
40
|
-
function
|
|
41
|
-
const a = t.offsetWidth,
|
|
42
|
-
return { renderedWidth: a, scale: i, contentWidthMm:
|
|
40
|
+
function B(t, e) {
|
|
41
|
+
const a = t.offsetWidth, o = e.pageWidth - e.margin.left - e.margin.right, i = o / a, s = (e.pageHeight - e.margin.top - e.margin.bottom) / i;
|
|
42
|
+
return { renderedWidth: a, scale: i, contentWidthMm: o, pageContentPx: s };
|
|
43
43
|
}
|
|
44
|
-
function
|
|
44
|
+
function E(t, e = 210) {
|
|
45
45
|
const a = t.cloneNode(!0);
|
|
46
46
|
return Object.assign(a.style, {
|
|
47
47
|
position: "fixed",
|
|
@@ -57,161 +57,161 @@ function N() {
|
|
|
57
57
|
const t = document.createElement("style");
|
|
58
58
|
return t.setAttribute("data-jspdf-utils", ""), t.textContent = "img { display: inline !important; }", document.head.appendChild(t), () => t.remove();
|
|
59
59
|
}
|
|
60
|
-
function
|
|
60
|
+
function T(t) {
|
|
61
61
|
for (const e of t.querySelectorAll("table")) {
|
|
62
62
|
const a = e.getAttribute("cellpadding");
|
|
63
63
|
if (a) {
|
|
64
|
-
for (const
|
|
65
|
-
|
|
64
|
+
for (const o of e.querySelectorAll("th, td"))
|
|
65
|
+
o.style.padding || (o.style.padding = a + "px");
|
|
66
66
|
e.removeAttribute("cellpadding");
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
|
-
function
|
|
70
|
+
function R(t, e) {
|
|
71
71
|
for (const a of Array.from(
|
|
72
72
|
t.querySelectorAll(":scope > table")
|
|
73
73
|
)) {
|
|
74
74
|
if (a.offsetHeight <= e) continue;
|
|
75
|
-
const
|
|
76
|
-
if (
|
|
77
|
-
const i =
|
|
75
|
+
const o = Array.from(a.rows);
|
|
76
|
+
if (o.length === 0) continue;
|
|
77
|
+
const i = o[0].querySelector("th") !== null, n = i ? o[0] : null, s = i ? o.slice(1) : o, r = n ? n.offsetHeight : 0, l = e - r - 2, h = [];
|
|
78
78
|
let c = [], g = 0;
|
|
79
|
-
for (const
|
|
80
|
-
const
|
|
81
|
-
g +
|
|
79
|
+
for (const f of s) {
|
|
80
|
+
const d = f.offsetHeight;
|
|
81
|
+
g + d > l && c.length > 0 && (h.push(c), c = [], g = 0), c.push(f), g += d;
|
|
82
82
|
}
|
|
83
|
-
c.length > 0 &&
|
|
84
|
-
for (const
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
for (const
|
|
88
|
-
a.parentNode.insertBefore(
|
|
83
|
+
c.length > 0 && h.push(c);
|
|
84
|
+
for (const f of h) {
|
|
85
|
+
const d = a.cloneNode(!1);
|
|
86
|
+
n && d.appendChild(n.cloneNode(!0));
|
|
87
|
+
for (const m of f) d.appendChild(m.cloneNode(!0));
|
|
88
|
+
a.parentNode.insertBefore(d, a);
|
|
89
89
|
}
|
|
90
90
|
a.remove();
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
|
-
function
|
|
93
|
+
function j(t, e) {
|
|
94
94
|
for (const a of Array.from(t.querySelectorAll(":scope > *"))) {
|
|
95
|
-
const
|
|
96
|
-
if (
|
|
95
|
+
const o = a;
|
|
96
|
+
if (o.offsetHeight <= e || o.tagName === "TABLE")
|
|
97
97
|
continue;
|
|
98
|
-
const i =
|
|
99
|
-
l.setAttribute("style",
|
|
98
|
+
const i = o.tagName, n = o.getAttribute("style") || "", s = getComputedStyle(o).width, r = (o.textContent || "").split(/\s+/).filter(Boolean), l = document.createElement(i);
|
|
99
|
+
l.setAttribute("style", n), Object.assign(l.style, {
|
|
100
100
|
position: "absolute",
|
|
101
101
|
visibility: "hidden",
|
|
102
102
|
width: s
|
|
103
103
|
}), t.appendChild(l);
|
|
104
|
-
const
|
|
104
|
+
const h = [];
|
|
105
105
|
let c = 0;
|
|
106
106
|
for (; c < r.length; ) {
|
|
107
|
-
let g = c + 1,
|
|
108
|
-
for (; g <
|
|
109
|
-
const
|
|
110
|
-
l.textContent = r.slice(c,
|
|
107
|
+
let g = c + 1, f = r.length;
|
|
108
|
+
for (; g < f; ) {
|
|
109
|
+
const m = Math.ceil((g + f) / 2);
|
|
110
|
+
l.textContent = r.slice(c, m).join(" "), l.offsetHeight <= e ? g = m : f = m - 1;
|
|
111
111
|
}
|
|
112
|
-
const
|
|
113
|
-
|
|
112
|
+
const d = document.createElement(i);
|
|
113
|
+
d.setAttribute("style", n), d.textContent = r.slice(c, g).join(" "), h.push(d), c = g;
|
|
114
114
|
}
|
|
115
115
|
l.remove();
|
|
116
|
-
for (const g of
|
|
117
|
-
|
|
118
|
-
|
|
116
|
+
for (const g of h)
|
|
117
|
+
o.parentNode.insertBefore(g, o);
|
|
118
|
+
o.remove();
|
|
119
119
|
}
|
|
120
120
|
}
|
|
121
121
|
function U(t, e, a) {
|
|
122
|
-
const
|
|
123
|
-
if (
|
|
124
|
-
const i =
|
|
122
|
+
const o = Array.from(t.rows);
|
|
123
|
+
if (o.length === 0) return !1;
|
|
124
|
+
const i = o[0].querySelector("th") !== null, n = i ? o[0] : null, s = i ? o.slice(1) : o, r = n ? n.offsetHeight : 0;
|
|
125
125
|
if (s.length < 2) return !1;
|
|
126
126
|
const l = a - r - 2;
|
|
127
127
|
if (l <= 0) return !1;
|
|
128
|
-
let
|
|
129
|
-
for (const
|
|
130
|
-
if (c +
|
|
131
|
-
c +=
|
|
128
|
+
let h = 0, c = 0;
|
|
129
|
+
for (const d of s) {
|
|
130
|
+
if (c + d.offsetHeight > l) break;
|
|
131
|
+
c += d.offsetHeight, h++;
|
|
132
132
|
}
|
|
133
|
-
if (
|
|
133
|
+
if (h === 0 || h === s.length) return !1;
|
|
134
134
|
const g = t.cloneNode(!1);
|
|
135
|
-
|
|
136
|
-
for (let
|
|
137
|
-
g.appendChild(s[
|
|
138
|
-
const
|
|
139
|
-
|
|
140
|
-
for (let
|
|
141
|
-
|
|
142
|
-
return e.insertBefore(g, t), e.insertBefore(
|
|
135
|
+
n && g.appendChild(n.cloneNode(!0));
|
|
136
|
+
for (let d = 0; d < h; d++)
|
|
137
|
+
g.appendChild(s[d].cloneNode(!0));
|
|
138
|
+
const f = t.cloneNode(!1);
|
|
139
|
+
n && f.appendChild(n.cloneNode(!0));
|
|
140
|
+
for (let d = h; d < s.length; d++)
|
|
141
|
+
f.appendChild(s[d].cloneNode(!0));
|
|
142
|
+
return e.insertBefore(g, t), e.insertBefore(f, t), t.remove(), !0;
|
|
143
143
|
}
|
|
144
144
|
function _(t, e, a) {
|
|
145
145
|
if (t.tagName === "TABLE" || t.tagName === "IMG") return !1;
|
|
146
|
-
const
|
|
147
|
-
if (
|
|
148
|
-
const i = t.tagName,
|
|
149
|
-
if (r.setAttribute("style",
|
|
146
|
+
const o = (t.textContent || "").split(/\s+/).filter(Boolean);
|
|
147
|
+
if (o.length < 2) return !1;
|
|
148
|
+
const i = t.tagName, n = t.getAttribute("style") || "", s = getComputedStyle(t).width, r = document.createElement(i);
|
|
149
|
+
if (r.setAttribute("style", n), Object.assign(r.style, {
|
|
150
150
|
position: "absolute",
|
|
151
151
|
visibility: "hidden",
|
|
152
152
|
width: s
|
|
153
|
-
}), e.appendChild(r), r.textContent =
|
|
153
|
+
}), e.appendChild(r), r.textContent = o[0], r.offsetHeight > a)
|
|
154
154
|
return r.remove(), !1;
|
|
155
|
-
let l = 1,
|
|
156
|
-
for (; l <
|
|
157
|
-
const
|
|
158
|
-
r.textContent =
|
|
155
|
+
let l = 1, h = o.length;
|
|
156
|
+
for (; l < h; ) {
|
|
157
|
+
const f = Math.ceil((l + h) / 2);
|
|
158
|
+
r.textContent = o.slice(0, f).join(" "), r.offsetHeight <= a ? l = f : h = f - 1;
|
|
159
159
|
}
|
|
160
|
-
if (r.remove(), l >=
|
|
160
|
+
if (r.remove(), l >= o.length) return !1;
|
|
161
161
|
const c = document.createElement(i);
|
|
162
|
-
c.setAttribute("style",
|
|
162
|
+
c.setAttribute("style", n), c.textContent = o.slice(0, l).join(" ");
|
|
163
163
|
const g = document.createElement(i);
|
|
164
|
-
return g.setAttribute("style",
|
|
164
|
+
return g.setAttribute("style", n), g.textContent = o.slice(l).join(" "), e.insertBefore(c, t), e.insertBefore(g, t), t.remove(), !0;
|
|
165
165
|
}
|
|
166
|
-
function
|
|
166
|
+
function O(t, e) {
|
|
167
167
|
let a = 0;
|
|
168
168
|
for (; a < t.children.length; ) {
|
|
169
|
-
const
|
|
170
|
-
if (
|
|
169
|
+
const o = t.children[a], i = o.offsetTop, n = i + o.offsetHeight, s = (Math.floor(i / e) + 1) * e;
|
|
170
|
+
if (n > s) {
|
|
171
171
|
const r = s - i;
|
|
172
|
-
if (
|
|
172
|
+
if (o.tagName === "TABLE") {
|
|
173
173
|
if (U(
|
|
174
|
-
|
|
174
|
+
o,
|
|
175
175
|
t,
|
|
176
176
|
r
|
|
177
177
|
))
|
|
178
178
|
continue;
|
|
179
|
-
} else if (_(
|
|
179
|
+
} else if (_(o, t, r))
|
|
180
180
|
continue;
|
|
181
|
-
if (
|
|
181
|
+
if (o.offsetHeight <= e) {
|
|
182
182
|
const l = document.createElement("div");
|
|
183
|
-
l.style.height = s - i + 1 + "px",
|
|
183
|
+
l.style.height = s - i + 1 + "px", o.parentNode.insertBefore(l, o), a++;
|
|
184
184
|
}
|
|
185
185
|
}
|
|
186
186
|
a++;
|
|
187
187
|
}
|
|
188
188
|
}
|
|
189
189
|
function J(t, e = {}) {
|
|
190
|
-
const a =
|
|
191
|
-
|
|
192
|
-
const
|
|
193
|
-
return
|
|
190
|
+
const a = S(e), o = N(), i = E(t, a.pageWidth);
|
|
191
|
+
T(i);
|
|
192
|
+
const n = B(i, a);
|
|
193
|
+
return R(i, n.pageContentPx), j(i, n.pageContentPx), O(i, n.pageContentPx), {
|
|
194
194
|
clone: i,
|
|
195
|
-
layout:
|
|
195
|
+
layout: n,
|
|
196
196
|
options: a,
|
|
197
197
|
cleanup: () => {
|
|
198
|
-
i.remove(),
|
|
198
|
+
i.remove(), o();
|
|
199
199
|
}
|
|
200
200
|
};
|
|
201
201
|
}
|
|
202
202
|
async function Y(t, e, a = {}) {
|
|
203
|
-
const { clone:
|
|
203
|
+
const { clone: o, layout: i, options: n, cleanup: s } = J(e, a);
|
|
204
204
|
try {
|
|
205
205
|
await new Promise((r) => {
|
|
206
|
-
t.html(
|
|
206
|
+
t.html(o, {
|
|
207
207
|
callback: () => r(),
|
|
208
208
|
width: i.contentWidthMm,
|
|
209
209
|
windowWidth: i.renderedWidth,
|
|
210
210
|
margin: [
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
211
|
+
n.margin.top,
|
|
212
|
+
n.margin.right,
|
|
213
|
+
n.margin.bottom,
|
|
214
|
+
n.margin.left
|
|
215
215
|
]
|
|
216
216
|
});
|
|
217
217
|
});
|
|
@@ -220,7 +220,7 @@ async function Y(t, e, a = {}) {
|
|
|
220
220
|
}
|
|
221
221
|
return a.marginContent && await z(t, a.marginContent, a), t;
|
|
222
222
|
}
|
|
223
|
-
function
|
|
223
|
+
function I(t, e) {
|
|
224
224
|
switch (t) {
|
|
225
225
|
case "top":
|
|
226
226
|
return { x: 0, y: 0, width: e.pageWidth, height: e.margin.top };
|
|
@@ -242,7 +242,7 @@ function k(t, e) {
|
|
|
242
242
|
};
|
|
243
243
|
}
|
|
244
244
|
}
|
|
245
|
-
async function L(t, e, a,
|
|
245
|
+
async function L(t, e, a, o) {
|
|
246
246
|
const i = document.createElement("div");
|
|
247
247
|
Object.assign(i.style, {
|
|
248
248
|
position: "fixed",
|
|
@@ -253,30 +253,30 @@ async function L(t, e, a, n) {
|
|
|
253
253
|
overflow: "hidden"
|
|
254
254
|
}), i.appendChild(t), document.body.appendChild(i);
|
|
255
255
|
try {
|
|
256
|
-
return await
|
|
257
|
-
scale:
|
|
256
|
+
return await P(i, {
|
|
257
|
+
scale: o,
|
|
258
258
|
backgroundColor: null
|
|
259
259
|
});
|
|
260
260
|
} finally {
|
|
261
261
|
i.remove();
|
|
262
262
|
}
|
|
263
263
|
}
|
|
264
|
-
const
|
|
265
|
-
async function
|
|
266
|
-
const
|
|
267
|
-
for (const i of
|
|
268
|
-
const
|
|
269
|
-
if (
|
|
270
|
-
const s =
|
|
271
|
-
|
|
272
|
-
|
|
264
|
+
const G = ["top", "right", "bottom", "left"];
|
|
265
|
+
async function D(t, e, a) {
|
|
266
|
+
const o = {};
|
|
267
|
+
for (const i of G) {
|
|
268
|
+
const n = t[i];
|
|
269
|
+
if (n && typeof n != "function") {
|
|
270
|
+
const s = I(i, e);
|
|
271
|
+
o[i] = await L(
|
|
272
|
+
n.cloneNode(!0),
|
|
273
273
|
s.width,
|
|
274
274
|
s.height,
|
|
275
275
|
a
|
|
276
276
|
);
|
|
277
277
|
}
|
|
278
278
|
}
|
|
279
|
-
return
|
|
279
|
+
return o;
|
|
280
280
|
}
|
|
281
281
|
function Q(t, e) {
|
|
282
282
|
return t == null ? e.margin : typeof t == "number" ? { top: t, right: t, bottom: t, left: t } : {
|
|
@@ -286,40 +286,40 @@ function Q(t, e) {
|
|
|
286
286
|
left: t.left ?? e.margin.left
|
|
287
287
|
};
|
|
288
288
|
}
|
|
289
|
-
function Z(t, e, a,
|
|
289
|
+
function Z(t, e, a, o, i, n, s) {
|
|
290
290
|
const {
|
|
291
291
|
text: r,
|
|
292
292
|
color: l = "#000000",
|
|
293
|
-
fontSize:
|
|
293
|
+
fontSize: h = 2.5,
|
|
294
294
|
fontFamily: c = "Arial, sans-serif"
|
|
295
|
-
} = e, g =
|
|
295
|
+
} = e, g = h * a, f = (e.gap ?? h * 0.5) * a;
|
|
296
296
|
t.save(), t.fillStyle = l, t.font = `${g}px ${c}`, t.textBaseline = "middle";
|
|
297
|
-
const
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
t.restore(), t.restore();
|
|
297
|
+
const d = t.measureText(r).width, m = d + f, w = g * 0.2, C = (p, u, y) => {
|
|
298
|
+
for (let H = p; H < u; H += m)
|
|
299
|
+
if (H + d <= u)
|
|
300
|
+
y(H, r);
|
|
301
|
+
else
|
|
302
|
+
for (let b = r.length - 1; b >= 1; b--) {
|
|
303
|
+
const W = r.substring(0, b);
|
|
304
|
+
if (H + t.measureText(W).width <= u) {
|
|
305
|
+
y(H, W);
|
|
306
|
+
break;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}, x = o + w, v = o + n - w;
|
|
310
|
+
C(x, v, (p, u) => t.fillText(u, p, i)), C(x, v, (p, u) => t.fillText(u, p, i + s)), t.save(), t.translate(o, i + s), t.rotate(-Math.PI / 2), C(w, s - w, (p, u) => t.fillText(u, p, 0)), t.restore(), t.save(), t.translate(o + n, i), t.rotate(Math.PI / 2), C(w, s - w, (p, u) => t.fillText(u, p, 0)), t.restore(), t.restore();
|
|
311
311
|
}
|
|
312
|
-
function
|
|
312
|
+
function k(t, e) {
|
|
313
313
|
return Q(t.margin, e);
|
|
314
314
|
}
|
|
315
|
-
async function
|
|
316
|
-
for (const l of
|
|
317
|
-
const
|
|
318
|
-
if (!
|
|
319
|
-
const c =
|
|
315
|
+
async function F(t, e, a, o, i, n, s, r) {
|
|
316
|
+
for (const l of G) {
|
|
317
|
+
const h = e[l];
|
|
318
|
+
if (!h) continue;
|
|
319
|
+
const c = I(l, o);
|
|
320
320
|
let g;
|
|
321
|
-
typeof
|
|
322
|
-
|
|
321
|
+
typeof h == "function" ? g = await L(
|
|
322
|
+
h(n, s),
|
|
323
323
|
c.width,
|
|
324
324
|
c.height,
|
|
325
325
|
r
|
|
@@ -336,145 +336,145 @@ async function G(t, e, a, n, i, o, s, r) {
|
|
|
336
336
|
);
|
|
337
337
|
}
|
|
338
338
|
if (e.contentBorder) {
|
|
339
|
-
const { color: l = "#000000", width:
|
|
340
|
-
t.strokeStyle = l, t.lineWidth =
|
|
339
|
+
const { color: l = "#000000", width: h = 0.3 } = e.contentBorder, c = k(e.contentBorder, o);
|
|
340
|
+
t.strokeStyle = l, t.lineWidth = h * i, t.strokeRect(
|
|
341
341
|
Math.round(c.left * i),
|
|
342
342
|
Math.round(c.top * i),
|
|
343
|
-
Math.round((
|
|
344
|
-
Math.round((
|
|
343
|
+
Math.round((o.pageWidth - c.left - c.right) * i),
|
|
344
|
+
Math.round((o.pageHeight - c.top - c.bottom) * i)
|
|
345
345
|
);
|
|
346
346
|
}
|
|
347
347
|
if (e.textBorder) {
|
|
348
|
-
const l =
|
|
348
|
+
const l = k(e.textBorder, o);
|
|
349
349
|
Z(
|
|
350
350
|
t,
|
|
351
351
|
e.textBorder,
|
|
352
352
|
i,
|
|
353
353
|
Math.round(l.left * i),
|
|
354
354
|
Math.round(l.top * i),
|
|
355
|
-
Math.round((
|
|
356
|
-
Math.round((
|
|
355
|
+
Math.round((o.pageWidth - l.left - l.right) * i),
|
|
356
|
+
Math.round((o.pageHeight - l.top - l.bottom) * i)
|
|
357
357
|
);
|
|
358
358
|
}
|
|
359
359
|
}
|
|
360
360
|
async function X(t, e = {}) {
|
|
361
|
-
const { imageFormat: a = "JPEG", imageQuality:
|
|
362
|
-
r.style.opacity = "1", r.style.left = "-99999px",
|
|
363
|
-
const l =
|
|
364
|
-
|
|
361
|
+
const { imageFormat: a = "JPEG", imageQuality: o = 1, scale: i = 2 } = e, n = S(e), s = N(), r = E(t, n.pageWidth);
|
|
362
|
+
r.style.opacity = "1", r.style.left = "-99999px", T(r);
|
|
363
|
+
const l = B(r, n);
|
|
364
|
+
R(r, l.pageContentPx), j(r, l.pageContentPx), O(r, l.pageContentPx);
|
|
365
365
|
try {
|
|
366
|
-
const
|
|
366
|
+
const h = await P(r, {
|
|
367
367
|
scale: i,
|
|
368
368
|
backgroundColor: "#ffffff"
|
|
369
|
-
}), { jsPDF: c } = await import("jspdf"), g =
|
|
370
|
-
orientation:
|
|
369
|
+
}), { jsPDF: c } = await import("jspdf"), g = n.pageWidth - n.margin.left - n.margin.right, f = n.pageHeight - n.margin.top - n.margin.bottom, d = h.width, m = f / g * d, w = Math.ceil(h.height / m), C = n.pageWidth > n.pageHeight ? "l" : "p", x = new c({
|
|
370
|
+
orientation: C,
|
|
371
371
|
unit: "mm",
|
|
372
|
-
format: [
|
|
372
|
+
format: [n.pageWidth, n.pageHeight]
|
|
373
373
|
});
|
|
374
|
-
for (let
|
|
374
|
+
for (let v = 0; v < w; v++) {
|
|
375
375
|
const p = Math.min(
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
),
|
|
379
|
-
|
|
380
|
-
const
|
|
381
|
-
if (!
|
|
382
|
-
|
|
383
|
-
d,
|
|
384
|
-
0,
|
|
385
|
-
y * f,
|
|
376
|
+
m,
|
|
377
|
+
h.height - v * m
|
|
378
|
+
), u = document.createElement("canvas");
|
|
379
|
+
u.width = d, u.height = p;
|
|
380
|
+
const y = u.getContext("2d");
|
|
381
|
+
if (!y) throw new Error("Could not get canvas context");
|
|
382
|
+
y.fillStyle = "#ffffff", y.fillRect(0, 0, d, p), y.drawImage(
|
|
386
383
|
h,
|
|
384
|
+
0,
|
|
385
|
+
v * m,
|
|
386
|
+
d,
|
|
387
387
|
p,
|
|
388
388
|
0,
|
|
389
389
|
0,
|
|
390
|
-
|
|
390
|
+
d,
|
|
391
391
|
p
|
|
392
392
|
);
|
|
393
|
-
const
|
|
393
|
+
const H = u.toDataURL(
|
|
394
394
|
`image/${a.toLowerCase()}`,
|
|
395
|
-
|
|
395
|
+
o
|
|
396
396
|
);
|
|
397
|
-
|
|
398
|
-
const b = p /
|
|
399
|
-
|
|
400
|
-
|
|
397
|
+
v > 0 && x.addPage([n.pageWidth, n.pageHeight], C);
|
|
398
|
+
const b = p / d * g;
|
|
399
|
+
x.addImage(
|
|
400
|
+
H,
|
|
401
401
|
a,
|
|
402
|
-
|
|
403
|
-
|
|
402
|
+
n.margin.left,
|
|
403
|
+
n.margin.top,
|
|
404
404
|
g,
|
|
405
405
|
b,
|
|
406
406
|
void 0,
|
|
407
407
|
"FAST"
|
|
408
408
|
);
|
|
409
409
|
}
|
|
410
|
-
return e.marginContent && await z(
|
|
410
|
+
return e.marginContent && await z(x, e.marginContent, e), x;
|
|
411
411
|
} finally {
|
|
412
412
|
r.remove(), s();
|
|
413
413
|
}
|
|
414
414
|
}
|
|
415
415
|
async function K(t, e = {}) {
|
|
416
|
-
const { imageFormat: a = "PNG", imageQuality:
|
|
417
|
-
r.style.opacity = "1", r.style.left = "-99999px",
|
|
418
|
-
const l =
|
|
419
|
-
|
|
416
|
+
const { imageFormat: a = "PNG", imageQuality: o = 1, scale: i = 2 } = e, n = S(e), s = N(), r = E(t, n.pageWidth);
|
|
417
|
+
r.style.opacity = "1", r.style.left = "-99999px", T(r);
|
|
418
|
+
const l = B(r, n);
|
|
419
|
+
R(r, l.pageContentPx), j(r, l.pageContentPx), O(r, l.pageContentPx);
|
|
420
420
|
try {
|
|
421
|
-
const
|
|
421
|
+
const h = await P(r, {
|
|
422
422
|
scale: i,
|
|
423
423
|
backgroundColor: "#ffffff"
|
|
424
|
-
}), c =
|
|
424
|
+
}), c = n.pageWidth - n.margin.left - n.margin.right, g = n.pageHeight - n.margin.top - n.margin.bottom, f = h.width, d = g / c * f, m = f / c, w = Math.round(n.pageWidth * m), C = Math.round(n.pageHeight * m), x = Math.round(n.margin.top * m), v = Math.round(n.margin.left * m), p = Math.ceil(h.height / d), u = [], { marginContent: y } = e, H = y ? await D(y, n, i) : {};
|
|
425
425
|
for (let b = 0; b < p; b++) {
|
|
426
|
-
const
|
|
427
|
-
h,
|
|
428
|
-
d.height - b * h
|
|
429
|
-
), S = document.createElement("canvas");
|
|
430
|
-
S.width = P, S.height = v;
|
|
431
|
-
const H = S.getContext("2d");
|
|
432
|
-
if (!H) throw new Error("Could not get canvas context");
|
|
433
|
-
H.fillStyle = "#ffffff", H.fillRect(0, 0, P, v), H.drawImage(
|
|
426
|
+
const W = Math.min(
|
|
434
427
|
d,
|
|
428
|
+
h.height - b * d
|
|
429
|
+
), A = document.createElement("canvas");
|
|
430
|
+
A.width = w, A.height = C;
|
|
431
|
+
const M = A.getContext("2d");
|
|
432
|
+
if (!M) throw new Error("Could not get canvas context");
|
|
433
|
+
M.fillStyle = "#ffffff", M.fillRect(0, 0, w, C), M.drawImage(
|
|
434
|
+
h,
|
|
435
435
|
0,
|
|
436
|
-
b *
|
|
437
|
-
|
|
438
|
-
|
|
436
|
+
b * d,
|
|
437
|
+
f,
|
|
438
|
+
W,
|
|
439
|
+
v,
|
|
440
|
+
x,
|
|
441
|
+
f,
|
|
442
|
+
W
|
|
443
|
+
), y && await F(
|
|
444
|
+
M,
|
|
439
445
|
y,
|
|
440
|
-
C,
|
|
441
|
-
m,
|
|
442
|
-
O
|
|
443
|
-
), u && await G(
|
|
444
446
|
H,
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
o,
|
|
448
|
-
f,
|
|
447
|
+
n,
|
|
448
|
+
m,
|
|
449
449
|
b + 1,
|
|
450
450
|
p,
|
|
451
451
|
i
|
|
452
|
-
),
|
|
453
|
-
|
|
452
|
+
), u.push(
|
|
453
|
+
A.toDataURL(
|
|
454
454
|
`image/${a.toLowerCase()}`,
|
|
455
|
-
|
|
455
|
+
o
|
|
456
456
|
)
|
|
457
457
|
);
|
|
458
458
|
}
|
|
459
|
-
return
|
|
459
|
+
return u;
|
|
460
460
|
} finally {
|
|
461
461
|
r.remove(), s();
|
|
462
462
|
}
|
|
463
463
|
}
|
|
464
464
|
async function tt(t, e, a = {}) {
|
|
465
|
-
const
|
|
465
|
+
const o = S(a), i = await K(t, a);
|
|
466
466
|
e.innerHTML = "", Object.assign(e.style, {
|
|
467
467
|
direction: "ltr",
|
|
468
468
|
width: "fit-content",
|
|
469
|
-
height:
|
|
469
|
+
height: o.pageHeight + "mm",
|
|
470
470
|
maxHeight: "100vh",
|
|
471
471
|
overflowY: "auto",
|
|
472
472
|
background: "#e0e0e0"
|
|
473
473
|
});
|
|
474
|
-
for (let
|
|
474
|
+
for (let n = 0; n < i.length; n++) {
|
|
475
475
|
const s = document.createElement("img");
|
|
476
|
-
s.src = i[
|
|
477
|
-
width:
|
|
476
|
+
s.src = i[n], s.alt = `Page ${n + 1}`, Object.assign(s.style, {
|
|
477
|
+
width: o.pageWidth + "mm",
|
|
478
478
|
maxWidth: "100%",
|
|
479
479
|
height: "auto",
|
|
480
480
|
boxSizing: "border-box",
|
|
@@ -486,28 +486,28 @@ async function tt(t, e, a = {}) {
|
|
|
486
486
|
}
|
|
487
487
|
}
|
|
488
488
|
async function z(t, e, a = {}) {
|
|
489
|
-
const
|
|
489
|
+
const o = S(a), i = t.getNumberOfPages(), n = 2, s = n * (96 / 25.4), r = Math.round(o.pageWidth * s), l = Math.round(o.pageHeight * s), h = await D(e, o, n);
|
|
490
490
|
for (let c = 1; c <= i; c++) {
|
|
491
491
|
t.setPage(c);
|
|
492
492
|
const g = document.createElement("canvas");
|
|
493
493
|
g.width = r, g.height = l;
|
|
494
|
-
const
|
|
495
|
-
|
|
496
|
-
|
|
494
|
+
const f = g.getContext("2d");
|
|
495
|
+
f && (await F(
|
|
496
|
+
f,
|
|
497
497
|
e,
|
|
498
|
-
|
|
499
|
-
|
|
498
|
+
h,
|
|
499
|
+
o,
|
|
500
500
|
s,
|
|
501
501
|
c,
|
|
502
502
|
i,
|
|
503
|
-
|
|
503
|
+
n
|
|
504
504
|
), t.addImage(
|
|
505
505
|
g.toDataURL("image/png"),
|
|
506
506
|
"PNG",
|
|
507
507
|
0,
|
|
508
508
|
0,
|
|
509
|
-
|
|
510
|
-
|
|
509
|
+
o.pageWidth,
|
|
510
|
+
o.pageHeight
|
|
511
511
|
));
|
|
512
512
|
}
|
|
513
513
|
return t;
|
|
@@ -516,15 +516,15 @@ export {
|
|
|
516
516
|
$ as PAGE_MARGINS,
|
|
517
517
|
q as PAGE_SIZES,
|
|
518
518
|
z as addMarginContent,
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
519
|
+
B as computeLayout,
|
|
520
|
+
E as createPrintClone,
|
|
521
|
+
O as insertPageBreakSpacers,
|
|
522
|
+
T as normalizeTableAttributes,
|
|
523
523
|
J as prepare,
|
|
524
524
|
tt as previewPageImages,
|
|
525
525
|
Y as renderHTML,
|
|
526
526
|
X as renderImagePDF,
|
|
527
527
|
K as renderPageImages,
|
|
528
|
-
|
|
529
|
-
|
|
528
|
+
R as splitOversizedTables,
|
|
529
|
+
j as splitOversizedText
|
|
530
530
|
};
|
package/package.json
CHANGED