علی
8 ماه پیش توسط علی مطرح شد
0 پاسخ

اسکرین شات از صفحه وب با Puppetee و laravel و html2canva

سلام خسته نباشید بعد از برسی های مختلف برای اسکرین شات از صفحه با html2canva مواجه شدم که به طور کامل css ها رو اعمال نمی کرد و خیلی بد بود.
دوباره برسی کردم و با پکیج puppeteer آشنا شدم که مربوط به nodejs هست اون رو نصب کردم کد های خودم رو به شرح زیر نوشتم:

import puppeteer from 'puppeteer';
import path from 'path';

(async () => {
    console.log('1');
    console.log(process.argv[1]);
    const path = new URL('.', import.meta.url).pathname;
    const browser = await puppeteer.launch({
        ignoreDefaultArgs: ['--disable-extensions'],
    });

    console.log('2');
    const page = await browser.newPage();

    await page.goto('http://127.0.0.1:8000/tracking/' + process.argv[2] + '?purchase=true',{ timeout: 60000 }); // آدرس صفحه HTML
    await page.waitForSelector('html'); // انتظار برای بارگذاری دیو

    const element = await page.$('html');

    await element.screenshot({path: 'screenshot.png'}); // اسکرین‌شات گرفته شده را ذخیره می‌کند
    console.log('Screenshot taken');

    await browser.close();
})();

خوب در نهایت با استفاده از دستور node app.js پروژه کاملا درست کار می کرد.


خوب حالا باید میرفتم توی laravel که از app.js استفاده کنم ضمناً من از lumen استفاده می کنم.

$cwd = 'G:\software\nodejs';
        $process = new Process(['node', $js, $id], $cwd, input: 'OK');
        $process->start();

        foreach ($process as $type => $data) {
            if ($process::OUT === $type) {
                echo "\nRead from stdout: " . $data . "<br>";
            } else { // $process::ERR === $type
                echo "\nRead from stderr: " . $data . '<br>';
            }
        }

کد مربوطه رو نوشتم و رفتم خروجی رو ببینم ارور های متنوعی خوردم و آخرین اروری که خوردم و برطرف نشد ارور :

Read from stderr: node:internal/process/promises:289 triggerUncaughtException(err, true /* fromPromise */); ^ [Error: ENOENT: no such file or directory, mkdtemp 'undefined\temp\puppeteer_dev_chrome_profile-XXXXXX'] { errno: -4058, code: 'ENOENT', syscall: 'mkdtemp', path: 'undefined\\temp\\puppeteer_dev_chrome_profile-XXXXXX' } Node.js v20.11.1

دلیلش رو اگر کسی محبت کنه بگه که چطوری برطرفش کنم ممنون میشم.
@hesammousavi


ثبت پرسش جدید

به همدیگه کمک کنیم

به علی کمک کنید تا مشکل خودش را حل کند؛ این‌طور می‌توانیم با هم پیشرفت کنیم.

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام