Данные Jimp и Buffer не работают должным образом для генерации PDF с кукловодом - PullRequest
3 голосов
/ 28 января 2020

Я использую Jimp , puppeteer-full-page-screenshot-скриншот & puppeteer для создания полного скриншота страницы, но данные BUFFER, которые я получаю от Jimp и puppeteer-full-page -screenshot не работает в моем случае (буферные данные, которые я получаю от кукловода, т.е. png2 im мой код работает нормально, но png генерирует ошибку.)

    const browser = await puppeteer.launch({ headless: true, timeout: 100000, 
            ignoreHTTPSErrors: true, args: ['--no-sandbox', '--disable-setuid-sandbox']});
    const page = await browser.newPage();
    await page.setViewport({ width: 1780, height: 2180 });
    await page.goto(current.url, { waitUntil: 'networkidle2' });
    await page.waitFor(7000);

    const png = await fullPageScreenshot(page);
    console.log(png);
    req.current.image = image.bitmap.data;

    // const png2 = await page.screenshot({ fullpage: true });
    // console.log(png2);
    // req.current.image = png2;

и для создания PDF у меня есть следующие

      doc.image(req.current.image, {
                fit: [595.28, 841.89],
                align: 'center',
                valign: 'center'
            })
            .fillColor('blue')
            .text('Date Created: ' + dt, 100, 30)
            .underline(100, 22, 300, 27, { color: '#0000FF' });
            doc.addPage();
        }

Console.log из png

Jimp {
   _background: 0,
   bitmap:
   { data:
      <Buffer ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
            ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ... 
            63816510 more bytes>,
      width: 1780,
      height: 8963 } }

Консоль .log из png2

      <Buffer 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 06 f4 00 00 08 84 08 06 00 00 00 7c 57 82 1b 00 00 00 01 73 52 47 42 00 ae ce 1c e9 00 00 20 00 ... 1457642 more bytes>

если я использую png2 , он работает нормально, но с png я получу ошибку с следующее: -

  Error handler:  Error: Unknown image format.
    at Function.open(/media/root/EC783AF8783AC15E/node_modules/pdfkit/js/pdfkit.js:3820:13)
    at PDFDocument.openImage 
            (/media/root/EC783AF8783AC15E/node_modules/pdfkit/js/pdfkit.js:3936:24)
    at PDFDocument.image 
            (/media/root/EC783AF8783AC15E/node_modules/pdfkit/js/pdfkit.js:3852:22)

1 Ответ

0 голосов
/ 30 января 2020

Puppeteer не генерирует полный скриншот страницы, даже когда я использовал fullPage: true

      await page.screenshot({ fullPage: true});

мы можем создать полный скриншот страницы, используя puppeteer-full-page-screenshot-screenshot и Jimp и в моем случае буферизованные данные, которые мы получаем от Jimp, не работали, что я исправил с помощью: -

      png.getBuffer('image/png', (err, Buff) => {
           req.current.image = Buffer;
        });
...