【问题标题】:Puppeteer - Different results for PDF generation (local[windows] vs live[centos])?Puppeteer - PDF 生成的不同结果(本地 [windows] 与 live [centos])?
【发布时间】:2018-10-26 04:27:55
【问题描述】:

我正在使用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。

本地:

服务器:

请注意下面的 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>

代码sn-ps如下:

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。

【问题讨论】:

  • 您的问题似乎不包含实际的 PDF,也没有显示任何代码供我们查看。 Stack Overflow 是针对编程问题的,你用的代码在哪里?

标签: node.js pdf centos puppeteer


【解决方案1】:

服务器 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/

【讨论】:

    猜你喜欢
    • 2021-06-19
    • 1970-01-01
    • 2021-06-01
    • 2020-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-09
    • 2023-03-18
    相关资源
    最近更新 更多