Skip to content

Commit 8dd38e4

Browse files
committed
Fix - PDF - Add warm up for Safari
1 parent f3dd20c commit 8dd38e4

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

src/pdf.js

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1-
import { domToPng } from "./dom-to-png";
1+
import { domToPng } from "./dom-to-png";
22

33
export default async function pdf({ domElement, fileName, scale = 2, options = {} }) {
44
if (!domElement) return Promise.reject("No domElement provided");
55

6+
const isSafari = typeof navigator !== 'undefined' &&
7+
/^((?!chrome|android).)*safari/i.test(navigator.userAgent);
8+
69
let JsPDF;
710

811
try {
@@ -16,6 +19,18 @@ export default async function pdf({ domElement, fileName, scale = 2, options = {
1619
height: 841.89,
1720
};
1821

22+
if (isSafari) {
23+
// Warming up in Safari, because it never works on the first try
24+
try {
25+
await domToPng({ container: domElement, scale });
26+
await domToPng({ container: domElement, scale });
27+
await domToPng({ container: domElement, scale });
28+
await domToPng({ container: domElement, scale });
29+
} catch (_) {
30+
// ignore any errors during warm‑up
31+
}
32+
}
33+
1934
const imgData = await domToPng({ container: domElement, scale });
2035
return await new Promise((resolve, reject) => {
2136
const img = new window.Image();

0 commit comments

Comments
 (0)