@@ -257,11 +257,45 @@ process.on('unhandledRejection', error => {
257
257
// dumpio : true,
258
258
executablePath : options . chromePath ,
259
259
args : options . chromeArgs ,
260
+ browser : "firefox" ,
260
261
} ) ;
261
262
const page = await browser . newPage ( ) ;
262
263
if ( options . headers )
263
264
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 ( / s c r e e n / 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
+ } ) ;
265
299
const pdf = await PDFDocument . create ( ) ;
266
300
pdf . setCreator ( 'Decktape' ) ;
267
301
if ( options . metaAuthor )
0 commit comments