Browsershot으로 Laravel에서 스크린샷을 만드는 방법

3812 단어 phplaravelbackend

소개



Browsershot은 헤드리스 Chrome 인스턴스를 활용하여 웹 페이지를 이미지 또는 PDF로 변환하는 Spatie의 소프트웨어입니다. 이 게시물에서는 Laravel 애플리케이션에 설치하고 사용하는 방법을 배웁니다.

전제 조건


  • Debian 11 가상 시스템이 작동 및 실행 중입니다
  • .
  • Laravel 8 애플리케이션이 실행 중입니다
  • .
  • PHP 7.3 설치됨

  • 설치



    설치는 매우 간단합니다. Laravel 루트 디렉토리로 이동하여 다음 명령을 입력하십시오.

    composer require spatie/browsershot
    


    그러면 composer.json 파일의 종속성 목록이 업데이트되고 공급업체 디렉토리에 browsershot이 설치됩니다.

    Puppeteer라는 소프트웨어가 하나 더 필요합니다.

    npm install puppeteer --global
    


    나중에 설치/사용에 오류가 발생하는 경우 Spatie의 공식 문서에서 이webpage를 참조하십시오.

    용법



    Browsershot을 사용하려면 먼저 컨트롤러를 만들어야 합니다.

    php artisan make:controller BrowsershotController
    


    처음에는 컨트롤러가 다음과 같이 보일 것입니다.

    <?php
    
    namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    
    class BrowsershotController extends Controller
    {
        //
    }
    
    


    그리고 여기서 가장 먼저 browsershot을 참조해야 합니다. 6행에 다음 행을 포함하여 이 작업을 수행해 보겠습니다.

    use Spatie\Browsershot\Browsershot;
    


    이제 Browsershot을 참조했으므로 사용할 준비가 되었습니다! Google의 스크린샷을 생성하고 저장소 디렉터리에 저장하는 함수를 만들어 봅시다.

    function screenshotGoogle() {
        Browsershot::url('https://google.com')
                ->setOption('landscape', true)
                ->windowSize(3840, 2160)
                ->waitUntilNetworkIdle()
                ->save("storage/" . 'googlescreenshot.jpg');
    }
    


    각 줄이 무엇을 하는지 설명하겠습니다.

    Browsershot::url('https://google.com')
    


    이 줄은 스크린샷을 찍을 URL을 설정합니다.

    ->setOption('landscape', true)
    


    이 선으로 방향을 가로로 설정합니다.

    ->windowSize(3840, 2160)
    


    이 줄로 창 크기(너비, 높이)를 설정합니다.

    ->waitUntilNetworkIdle()
    


    이 줄을 사용하여 네트워크가 유휴 상태인 경우에만 스크린샷을 찍도록 명령을 설정합니다. 이는 페이지가 완전히 로드되었음을 의미합니다.

    ->save("storage/" . 'googlescreenshot.jpg');
    


    이 줄을 사용하여 스크린샷이 저장되는 경로를 설정합니다.

    최종 결과



    이제 함수가 준비되었으므로 함수를 실행할 수 있도록 web.php 파일에 경로를 생성해 보겠습니다. web.php 파일을 열고 맨 위에서 컨트롤러를 참조하는지 확인하십시오.

    use App\Http\Controllers\BrowsershotController;
    


    Laravel 8 구문을 따르는 항목을 포함합니다.

    Route::get('/test-screenshot', [BrowsershotController::class, 'screenshotGoogle']);
    
    


    이제 브라우저에 URL( http://your-website.com/test-screenshot )을 입력하면 로드 몇 초 후 흰색 화면이 표시됩니다. 이는 스크린샷이 성공적으로 촬영되었음을 의미합니다. storage/app/public 디렉토리로 이동하면 다음과 같은 googlescreenshot이라는 jpg 항목이 표시됩니다.



    결론



    이 게시물에서는 Browsershot을 사용하여 Laravel 애플리케이션에서 웹사이트의 스크린샷을 만드는 방법을 배웠습니다. 이와 같은 더 많은 튜토리얼, 생각, 내 기술 세계의 일반적인 내용을 보려면 여기 또는에서 나를 팔로우하십시오!

    좋은 웹페이지 즐겨찾기