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

标签 node.js pdf centos puppeteer

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

本地环境:

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

服务器环境:

  • puppeteer 版本:1.3.0
  • 平台/操作系统版本:CentOS Linux release 7.4.1708 (Core)
  • Node.js 版本:v8.11.11

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

本地:fromlocal.pdf

服务器:fromserver.pdf

Please note the below HTML is being copied form the html file i am being using to create PDF (as URL). [I am using URL for page.goto to generate 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。

最佳答案

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

关于node.js - Puppeteer - PDF 生成的不同结果(本地 [windows] 与 live [centos])?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50365425/

相关文章:

node.js - 如何在 meteor 上创建自动增量字段?

node.js - 使用 GraphQL 和 NodeJS 插入后的 PostgreSQL "syntax error at end of input"

python - 如何在 Python 中将图像添加到 PDF 文件?

perl - 无法在@INC 中找到 XML/XPath.pm

mysqldump使用ftp命令备份到远程服务器

node.js - 如何在 node.js 中的模块之间共享连接池?

node.js - 微软机器人框架: Saving the chat history

pdf - 将内部维基页面转换为 PDF

python - 在 Python 中生成和合并 PDF 文件

PHP取消链接大量文件