Dockerized Puppeteer是一个基于Docker容器的Puppeteer库,它提供了在容器环境中运行Puppeteer的功能。然而,Dockerized Puppeteer在默认设置下不支持下载字体。
字体在Puppeteer中是用于渲染网页中文本的重要组成部分。在默认设置下,Dockerized Puppeteer没有内置的字体支持,这可能导致在生成的PDF或图片中出现缺失字体或乱码的问题。
解决这个问题的方法是在Docker容器中安装并配置所需的字体。以下是解决方案的步骤:
FROM zenika/alpine-chrome:with-puppeteer
RUN apk add --update ttf-dejavu ttf-droid ttf-freefont ttf-liberation ttf-ubuntu-font-family
docker build -t my-puppeteer .
其中,my-puppeteer
是你给镜像起的名称,可以根据自己的需要进行调整。
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
executablePath: 'google-chrome-stable',
args: ['--no-sandbox', '--disable-setuid-sandbox'],
defaultViewport: null,
headless: true,
});
const page = await browser.newPage();
// 此处是挂载字体文件到容器中的示例,路径可以根据实际情况进行调整
await page.emulateMediaFeatures([{ name: 'prefers-color-scheme', value: 'dark' }]);
await page.goto('https://example.com');
await page.screenshot({ path: 'example.png' });
await browser.close();
})();
在上述示例中,executablePath
指定了使用自定义的镜像中的Chrome浏览器,args
中的参数用于安全运行容器中的Chrome,page.emulateMediaFeatures
用于模拟暗黑模式,page.goto
用于访问目标网页,page.screenshot
用于生成截图。
这样,使用自定义的Docker镜像运行Puppeteer代码时,就会包含所需的字体支持,解决了默认设置下不支持下载字体的问题。
腾讯云相关产品中,您可以考虑使用腾讯云容器服务(Tencent Kubernetes Engine,TKE)来部署和管理这个自定义的Docker镜像。TKE是一种高度可扩展的容器服务,可以帮助您快速构建和管理容器化的应用程序。您可以通过以下链接了解更多关于腾讯云容器服务的信息:腾讯云容器服务
领取专属 10元无门槛券
手把手带您无忧上云