Skip to content

Commit 6a8760f

Browse files
committed
feat: switch to firefox and emulate media type
1 parent 5540f1a commit 6a8760f

File tree

1 file changed

+35
-1
lines changed

1 file changed

+35
-1
lines changed

decktape.js

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,11 +257,45 @@ process.on('unhandledRejection', error => {
257257
// dumpio : true,
258258
executablePath : options.chromePath,
259259
args : options.chromeArgs,
260+
browser : "firefox",
260261
});
261262
const page = await browser.newPage();
262263
if (options.headers)
263264
page.setExtraHTTPHeaders(options.headers)
264-
await page.emulateMediaType('screen');
265+
// Replacement for `emulateMediaType('screen')`
266+
await page.evaluateOnNewDocument(() => {
267+
function adjustMediaQueries() {
268+
const styleSheets = Array.from(document.styleSheets);
269+
270+
styleSheets.forEach(sheet => {
271+
try {
272+
const rules = Array.from(sheet.cssRules || sheet.rules || []);
273+
274+
rules.forEach((rule, index) => {
275+
if (rule.media) {
276+
const mediaText = rule.media.mediaText.toLowerCase();
277+
if (mediaText.includes('print')) {
278+
sheet.deleteRule(index);
279+
} else if (mediaText.includes('screen')) {
280+
const newRule = rule.cssText.replace(/screen/g, 'print');
281+
sheet.deleteRule(index);
282+
sheet.insertRule(newRule, index);
283+
}
284+
}
285+
});
286+
} catch (e) {
287+
// Handle cross-origin stylesheet errors silently
288+
}
289+
});
290+
}
291+
292+
// Run on load and after dynamic style changes
293+
window.addEventListener('load', adjustMediaQueries);
294+
new MutationObserver(adjustMediaQueries).observe(
295+
document.documentElement,
296+
{ childList: true, subtree: true }
297+
);
298+
});
265299
const pdf = await PDFDocument.create();
266300
pdf.setCreator('Decktape');
267301
if (options.metaAuthor)

0 commit comments

Comments
 (0)