我正在使用puppeteer生成pdf,具有以下开发环境:
本地环境:
服务器环境:
我面临的问题是,从服务器生成的PDf大小很大,而且字体也不会加载。 结果如下PDF。
请注意以下HTML正在从我的html文件中复制 用于创建PDF(作为URL)。 [我正在使用page.goto的URL来 生成PDF]。
<html>
<body>
FOOOO <span style="font-family: Impact, Charcoal">impact</span>
<span style="font-family: 'Courier New', Courier, monospace">courier</span>
</body>
</html>
代码段如下:
const config = {
headless: true,
ignoreHTTPSErrors: true,
args: [
'--no-sandbox',
'--disable-setuid-sandbox',
'--disable-dev-shm-usage'
],
};
browser = await puppeteer.launch(config);
page = await browser.newPage({ context: 'another-context' });
await page.goto(pageURL, {timeout: 50000,waitUntil: ['domcontentloaded','networkidle0']});
await page.emulateMedia('screen');
const pdfOptions = {
format,
pageRanges,
printBackground:true
}
const pdf = await page.pdf(pdfOptions);
我在环境中遗漏了什么,我是Centos的新手(如果有什么遗漏的话)。 请帮助,因为我无法找到这里缺少的东西。
预期结果是什么? 在本地和服务器上创建的PDF应该是相同的。相同代码的字体和大小相同。
会发生什么? 生成的服务器PDf大于本地,不加载PDF。
答案 0 :(得分:1)
字体不包含在服务器PDF中,因为它是一个Linux服务器而且它没有Windows字体。根据{{3}},您可以安装这些字体:
yum install curl cabextract xorg-x11-font-utils fontconfig
yum install https://downloads.sourceforge.net/project/mscorefonts2/rpms/msttcore-fonts-installer-2.6-1.noarch.rpm
另请参阅:this answer