通过puppeteer生成的PDF内容丢失

时间:2020-08-26 18:22:09

标签: pdf puppeteer chromium

我正在尝试通过将URL发送给puppeteer来生成PDF。我将具体的高度和宽度作为page.pdf方法的选项。我能够获得PDF的确切高度,但最后缺少一些内容。而且只有高度更高的PDF才会发生这种情况。

下面是我的代码:

  let pdf = {};
        const puppeteerArguments = [];
        
        puppeteerArguments.push('--disable-web-security', '--allow-running-insecure-content', '--no-sandbox',
            '--disable-setuid-sandbox',
            '--disable-gpu',
            '--no-first-run',
            '--hide-scrollbars',
            '--disable-dev-shm-usage',
            '--allow-cross-origin-auth-prompt',
            '--enable-hardware-overlays',
            '--start-fullscreen'
            );


        const browser = await puppeteer.launch({headless: true, args: puppeteerArguments, sloMo: 0});

        const page = await browser.newPage();

        const {url} = payload;

        await page.setViewport({
            width: 1024,
            height: 7500,
            deviceScaleFactor: 1,
            isMobile: false
        });

        page.setExtraHTTPHeaders({
            "cookie": '******',
        });


        await page.goto(url, {waitUntil: 'networkidle0', timeout: 0}).then(() => {
            console.log('load success');
        });

        await page.emulateMedia('screen');

        await page.addStyleTag({
            content: `
                  html {
                    -webkit-print-color-adjust: exact !important;
                    -webkit-filter: opacity(1) !important;
               }`
        });

        const selector = '.widgetsRendered'
        await page.waitForFunction(selector => !!document.querySelector(selector), {polling: 600, timeout: 0}, selector);
        
        await page.waitFor(20000);

        const path = `fullPage.pdf`;

        pdf = await page.pdf({
            path,
            width: 1560 + 'px',
            height: 7500 + 'px',
            scale: 1,
            displayHeaderFooter: false,
            margin: 'none',
            printBackground: true,
        });
        return pdf;

我正在使用"puppeteer": "^2.1.1"

下面是问题的图片。

enter image description here

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

-webkit-filter: opacity(1) !important;方法的内容中删除addStyleTag解决了我的问题。

相关问题