前期提要:导出pdf的时候,会用pupprteer启动一个浏览器实例,再打开指定页面进行打印,页面写成什么样,导出的pdf内容就是什么样,听起来很正常。
但是遇到了调试的时候页面显示很正常,而导出的内容css样式有问题的情况,经大佬指点,发现是我开发的时候,用的新版谷歌浏览器,而pupprteer对应的chrome版本比较旧,有些样式没兼容好。
于是专门下载了pupprteer对应的Chromium进行调试,才解决问题。
1 找到pupprteer对应chrome版本
1.1 最简单的办法,去官网查。
知道pupprteer的版本,可以去官网查看对应chrome版本
可能有些版本信息缺失,不过可以看看临近版本对应的chrome
1.2 调用browser().version()
搞到代码的话,可以调用page对象的browser().version()查看
// 启动浏览器实例,launch参数不写了,说实话我不熟悉
const browser = await pupprteer.launch()
// 创建page
const page = await browser.newPage();
const version = await page.browser().version();
// 输出version就能看到Chromium版本信息了
1.3 直接打开浏览器查看
都搞到代码了,还运行了,直接开浏览器更方便。
// 启动浏览器实例,launch其他参数不写了,说实话我不熟悉
const browser = await pupprteer.launch({
headless: false, // false时会打开浏览器
...
})
headless: 是否以 无头模式 运行浏览器。默认是 true。
我理解的无头模式就是不打开浏览器,把headless设置为false,运行的时候时候就会打开一个浏览器,查看【关于 Chromium】就能看到浏览器版本信息。
(代码里的browser.close()需要注释掉,不然浏览器才打开,又被关掉了,只能看个寂寞)
2 打开pupprteer对应chrome版本
一开始调试的时候,只知道chrome版本,需要专门去下载chrome历史版本,但是经常遇上网站打不开,打开了下载不了,太难了。
比如这个网站,我就下载不了,这应该是官网,我打不开
然后大佬给我了项目地址,我拉到项目后发现,可以直接让项目启动一个浏览器供我调试,详见上面的1.3,瞬间圆满了。