Puppeteer 不生成 .pdf 文件

问题描述 投票:0回答:1

我想使用

puppeteer
通过访问我的网站来生成 pdf 文件。问题是,虽然
screenshot
方法工作正常,但我无法生成
pdf
文件。这是我的代码:


  async generatePdfByWisitingWebsite(user: UserEntity, data: InputGetPdfDto) {
    const browser = await puppeteer.launch({ headless: true, protocolTimeout: 500000 });
    const page = await browser.newPage();
    await page.goto('http://localhost:3000/login', { waitUntil: 'networkidle2' });
    await page.type('#email', '...');
    await page.type('#password', '...');
    await page.click('#loginButton');

    await page.waitForNavigation({ waitUntil: 'networkidle2' });
    await page.goto('http://localhost:3000/app/account', { waitUntil: 'networkidle2' });

    await new Promise(function (resolve) {
      setTimeout(resolve, 2000);
    });

    const content = await page.evaluate(() => document.body.innerHTML);
    console.log(content);

    await page.screenshot({ path: 'output/build1.png' });


    await page.pdf({
      path: 'output/test.pdf',
      format: 'A4',
      printBackground: true,
      margin: {
        top: '10mm',
        right: '10mm',
        bottom: '10mm',
        left: '10mm',
      },
      timeout: 0,
    });

    await browser.close();
  }

我等了几分钟,仍然没有回应。我尝试使用

headless: false
并且页面加载正确,所以不确定我做错了什么。有什么想法吗?

javascript puppeteer nest
1个回答
0
投票

在 Windows 上也有类似的问题。目前 Puppeteer 上正在跟踪一个关于 PDF 在 Windows 上挂起的 GitHub 问题

他们说这是 Puppeteer 目前无法控制的下载 Chrome 文件的权限相关问题。 GitHub 问题链接到 puppeter devs 的网站 作为解决方法。

就个人而言,这种解决方法是有效的。需要注意的是:我必须使用

icacls %USERPROFILE%/.cache/puppeteer/chrome /grant "ALL APPLICATION PACKAGES:(OI)(CI)(RX)"
而不是 $HOME。

© www.soinside.com 2019 - 2024. All rights reserved.