Closed TTsdzb closed 1 year ago
测了下用 file://
不行的诶,图片加载不了,原因是 pptr 开的 url 是 about:blank
,被 Chrome 禁止访问本地资源了。
https://stackoverflow.com/questions/55078896/how-to-point-puppeteer-to-local-images-fonts
我写的另外两个插件 long 和 maifriend-image 没出这个问题,但它们是使用 Puppeteer 提供的内置组件渲染网页,而不是直接调用 render
。
我刚刚看了一下,Puppeteer 在渲染内置组件的时候使用了一个本地 URL:
// ...
} else {
await page.goto('file:///' + resolve(__dirname, '../index.html'))
// ...
await page.setContent(`<html${lang}>
<head>${head.join('')}</head>
<body style="${bodyStyle}">${content}</body>
</html>`)
}
// ...
所以不会出现上述问题。
那么要改这个地方的话,要么把页面整个改成内置组件,要么让上游的 Puppeteer 插件来修这个问题……
改内置组件不好改,没法用 Githubissues.
简化了 HTML 中用于计算字体大小的代码。换行其实只用
<br/>
就可以实现,这样可以把所有的文字放在一个 div 里,也就不需要在计算字体大小时使用 forEach 了。使用 URI 加载图片,这样可以使插件不需要把图片读进来就能传递给浏览器。由于反斜杠
\
在 CSS 中有转义作用,这里将其替换,避免在 Windows 平台上找不到图片。