"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Laravel에서 PDF 문서 생성하기

Laravel에서 PDF 문서 생성하기

2024-08-16에 게시됨
검색:992

Generating PDF documents in Laravel

Laravel 및 DomPDF: 이미지 및 CSS가 포함된 PDF 문서 생성에 대한 단계별 가이드

PDF 문서 생성은 특히 송장, 영수증, 인증서, 티켓 및 다양한 보고서 생성을 위한 웹 애플리케이션의 일반적인 요구 사항입니다. 이 포괄적인 튜토리얼에서는 Laravel과 DomPDF를 사용하여 이미지와 CSS가 포함된 PDF 문서를 생성하는 방법을 자세히 살펴보겠습니다. 구성 옵션, 디자인 고려 사항, 출력 크기, 성능 및 데이터베이스 쿼리를 다루겠습니다. 또한 페이지 나누기 처리, base64를 사용한 이미지 로드 등에 대한 팁과 요령에 대해 논의할 것입니다.

전제 조건

시작하기 전에 다음이 설치되어 있는지 확인하세요.

  • PHP >=8.2
  • 작곡가 2
  • 라라벨 10

소개

DomPDF는 HTML 콘텐츠에서 PDF 문서를 생성할 수 있는 인기 있는 PHP 라이브러리입니다. CSS 스타일, 이미지 및 다양한 구성 옵션을 지원합니다. DomPDF를 Laravel과 통합하면 블레이드 템플릿과 Laravel의 강력한 기능을 사용하여 정교한 PDF 문서를 쉽게 만들 수 있습니다.

다른 인기 있는 PDF 라이브러리로는 TCPDF, FPDF 및 Snappy가 있습니다.

그러나 DomPDF는 통합이 쉽고 강력한 기능 세트로 인해 널리 사용됩니다.

이 튜토리얼에서는 Laravel 프로젝트 설정, DomPDF 구성, PDF 생성을 처리할 컨트롤러 생성, PDF 컨텐츠용 블레이드 템플릿 설계, 경로 추가 및 성능 최적화 과정을 안내합니다. 또한 고급 구성 옵션에 대해 논의하고 고품질 PDF 문서를 생성하기 위한 팁과 요령을 제공합니다.

가정

이 튜토리얼에서는 귀하가 Laravel과 PHP에 대한 기본 지식을 가지고 있다고 가정합니다. Laravel을 처음 사용하는 경우 공식 Laravel 문서를 검토하여 프레임워크에 익숙해지는 것을 고려해 보세요. 그렇지 않으면 Laravel Bootcamp를 따라 Laravel을 시작할 수 있습니다.

1단계: Laravel 프로젝트 설정

먼저 Laravel 프로젝트가 아직 없다면 새 프로젝트를 생성하거나, 기존 프로젝트를 사용하세요. 물론 이미 Laravel 프로젝트가 있다면 이 단계를 건너뛸 수 있습니다.

composer create-project --prefer-dist laravel/laravel pdf-tutorial
cd pdf-tutorial

다음으로 DomPDF를 설치합니다:

composer require barryvdh/laravel-dompdf

구성 파일 게시:

php artisan vendor:publish --provider="Barryvdh\DomPDF\ServiceProvider"

2단계: DomPDF 구성

config/dompdf.php 파일을 엽니다. 구성 파일에는 PDF 출력을 사용자 정의하기 위한 다양한 옵션이 포함되어 있습니다. 여기서 기본 용지 크기, 방향, 글꼴 등을 포함한 다양한 옵션을 설정할 수 있습니다.

  • 용지 크기: 기본 용지 크기를 설정할 수 있습니다.
  'default_paper_size' => 'a4',
  • 방향: 기본 방향(세로 또는 가로)을 설정합니다.
  'orientation' => 'portrait',
  • 글꼴: 기본 글꼴을 지정하고 사용자 정의 글꼴을 추가할 수 있습니다.
  'default_font' => 'serif',

3단계: 컨트롤러 생성

PDF 생성을 처리하는 컨트롤러 만들기:

php artisan make:controller PDFController

app/Http/Controllers/PDFController.php에 다음 코드를 추가하세요:

 'Laravel PDF Example',
            'date' => date('m/d/Y'),
        ];

        $pdf = PDF::loadView('myPDF', $data);

        return $pdf->download('document.pdf');
    }
}

4단계: 블레이드 템플릿 생성

PDF 콘텐츠에 대한 블레이드 템플릿을 만듭니다.

touch resources/views/myPDF.blade.php

myPDF.blade.php에 다음 콘텐츠를 추가합니다:



    Laravel PDF Example

{{ $title }}

Date: {{ $date }}

This is an example of a PDF document generated using Laravel and DomPDF.

5단계: 경로 추가

routes/web.php에서 PDF 생성을 처리할 경로를 추가합니다:

use App\Http\Controllers\PDFController;

Route::get('generate-pdf', [PDFController::class, 'generatePDF']);

6단계: 이미지 추가

이미지를 base64로 인코딩된 문자열로 포함하거나 URL을 사용하여 PDF에 추가할 수 있습니다.

base64 인코딩을 사용하여 이미지를 블레이드 템플릿에 직접 삽입할 수 있습니다. 예를 들어, 공개/이미지의 이미지를 삽입하려면 다음과 같이 할 수 있습니다:

Logo

또는 URL에서 직접:

Logo

7단계: 성능 최적화

데이터베이스 쿼리

대규모 데이터 세트(예: 레코드 1,000개)를 처리할 때 페이지 매김이나 청크를 사용하여 메모리 사용량을 관리하세요.

$data = DB::table('users')->paginate(50);

$pdf = PDF::loadView('myPDF', ['data' => $data]);

출력 크기

출력 크기를 줄이려면 무거운 이미지의 사용을 최소화하고 가능하면 벡터 그래픽을 선택하세요. 또한 효율적인 CSS를 사용하세요.

페이지 나누기

페이지 나누기에 맞게 콘텐츠가 잘 구성되어 있는지 확인하세요. CSS를 사용하여 페이지 나누기 처리:

.page-break {
    page-break-after: always;
}

그리고 블레이드 템플릿에서:

8단계: 고급 구성

고급 구성에 대해서는 DomPDF 문서를 참조하세요. 여백부터 글꼴 로드 방식까지 거의 모든 것을 사용자 정의할 수 있습니다.

사용자 정의 글꼴 사용

사용자 정의 글꼴을 사용하려면 먼저 해당 글꼴을 프로젝트에 추가하고 해당 글꼴을 사용하도록 DomPDF를 구성하세요.

'custom_font_dir' => base_path('resources/fonts/'),
'custom_font_data' => [
    'custom-font' => [
        'R' => 'CustomFont-Regular.ttf',
        'B' => 'CustomFont-Bold.ttf',
    ]
],

블레이드 템플릿에서:

결론

이 단계별 가이드를 따르면 이미지와 CSS 스타일이 포함된 Laravel 및 DomPDF를 사용하여 정교한 PDF 문서를 생성할 수 있습니다. 이 튜토리얼에서는 필수 구성 옵션, 설계 고려 사항, 성능 최적화를 다루었습니다. 이 기반을 확장하여 Laravel 애플리케이션을 위한 강력한 문서 생성 시스템을 구축할 수 있습니다.

잠재적인 시리즈 및 저장소

이 튜토리얼은 Laravel을 사용한 PDF 생성 시리즈의 일부입니다. 다양한 문서 템플릿(송장, 영수증, 인증서, 티켓 등)이 포함된 전체 저장소를 여기에서 찾을 수 있습니다. 자유롭게 기여하고 컬렉션을 확장하세요.

즐거운 코딩하세요!

릴리스 선언문 이 기사는 https://dev.to/alphaolomi/geneating-pdf-documents-in-laravel-n07?1에서 복제됩니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3