Puppeteer - PDF生成的不同结果(本地[windows] vs live [centos])?

时间:2018-05-16 08:03:26

标签: node.js pdf centos puppeteer

我正在使用puppeteer生成pdf,具有以下开发环境:

本地环境:

  • Puppeteer版本:1.3.0平台/操作系统
  • 版本:Windows 10 Node.js
  • 版本:v8.11.11

服务器环境:

  • Puppeteer版本:1.3.0
  • 平台/操作系统版本:CentOS Linux版本7.4.1708(核心)
  • Node.js版本:v8.11.11

我面临的问题是,从服务器生成的PDf大小很大,而且字体也不会加载。 结果如下PDF。

本地:fromlocal.pdf

服务器:fromserver.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。

1 个答案:

答案 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