Puppeteer-PDF生成的结果不同(本地[windows]与实时[centos])?

4jb9z9bj  于 12个月前  发布在  Windows
关注(0)|答案(2)|浏览(123)

我使用puppeteer生成pdf,开发环境如下:

当地环境:

  • 人偶师版本:1.3.0平台/ OS
  • 版本:Windows 10 Node.js
  • 版本:v8.11.11
    服务器环境:
  • 人偶师版本:1.3.0
  • 平台/操作系统版本:CentOS Linux版本7.4.1708(核心)
  • Node.js版本:v8.11.11

我面临的问题是,从服务器生成的PDF文件是大的尺寸,字体也不会加载。结果如下PDF。
本地:x1c 0d1x
服务器:

请注意,下面的HTML是从我正在使用的HTML文件复制来创建PDF(作为URL)。[我正在使用page.后藤的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。

djmepvbi

djmepvbi1#

字体不包括在服务器PDF中,因为它是Linux服务器,它没有Windows字体。根据this answer,你可以安装这些字体:

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

标签:http://mscorefonts2.sourceforge.net/

ni65a41a

ni65a41a2#

尝试一次:

const config = {
  headless: 'new'
}

const browser = puppeteer.launch(config);

对我很有效

相关问题