Windows 환경에서 Phpspreadsheet, mPDF를 사용해 PDF 문서를 생성, 저장하는 방법에 대해 정리해보았습니다

ToC on/off

개요

여기서는 Windows 환경에서 PHP Composer를 이용해 Phpspreadsheet와 mPDF를 설치하고, PDF 문서를 생성, 저장하는 방법에 대해 정리해보겠습니다. (Phpspreadsheet는 PHPExcel의 업그레이드 버전입니다.)

Windows 환경에서 Phpspreadsheet를 사용해 PDF 문서로 저장하는 방법

composer.json 생성

Composer로 Phpspreadsheet와 mPDF를 설치하기 위한 설정 파일인 composer.json 파일을 아래와 같이 생성합니다.

{
    "require": {
        "phpoffice/phpspreadsheet": "^1.28",
        "mpdf/mpdf": "^8.1.1"
    },
    "config": {
        "platform": {
            "php": "8.0"
        }
    }
}
Windows 환경에서 Phpspreadsheet를 사용해 PDF 문서로 저장하는 방법

설치

아래 명령어를 사용해 Phpspreadsheet와 mPDF 패키지를 설치합니다.

> composer install

오류 상황 - 1

설치를 시도하면 아래와 같이 오류가 발생하는 경우가 있습니다.

Windows 환경에서 Phpspreadsheet를 사용해 PDF 문서로 저장하는 방법
  • [php.ini]를 열어서 아래와 같이 [extension=gd] 항목의 주석을 해제하고 저장합니다.
extension=gd
Windows 환경에서 Phpspreadsheet를 사용해 PDF 문서로 저장하는 방법

오류 상황 - 2

위 문제를 해결하고 다시 설치를 시도하면 아래와 같이 다시 오류가 발생하는 경우가 있습니다.

Windows 환경에서 Phpspreadsheet를 사용해 PDF 문서로 저장하는 방법
  • [php.ini]를 열어서 아래와 같이 [extension=zip] 항목의 주석을 해제하고 저장합니다.
extension=zip
Windows 환경에서 Phpspreadsheet를 사용해 PDF 문서로 저장하는 방법

설치 완료

문제를 모두 해결하면 아래와 같이 [Phpspreadsheet]와 [mPDF] 그리고 각각의 패키지와 연관된 패키지까지 함께 설치됩니다.

- Installing setasign/fpdi (v2.6.0): Extracting archive
- Installing psr/log (3.0.0): Extracting archive
- Installing psr/http-message (1.1): Extracting archive
- Installing paragonie/random_compat (v9.99.100): Extracting archive
- Installing myclabs/deep-copy (1.11.1): Extracting archive
- Installing mpdf/psr-log-aware-trait (v3.0.0): Extracting archive
- Installing mpdf/psr-http-message-shim (1.0.0): Extracting archive
- Installing mpdf/mpdf (v8.2.2): Extracting archive
- Installing myclabs/php-enum (1.8.4): Extracting archive
- Installing psr/simple-cache (3.0.0): Extracting archive
- Installing psr/http-factory (1.0.2): Extracting archive
- Installing psr/http-client (1.0.3): Extracting archive
- Installing markbaker/matrix (3.0.1): Extracting archive
- Installing markbaker/complex (3.0.2): Extracting archive
- Installing maennchen/zipstream-php (2.4.0): Extracting archive
- Installing ezyang/htmlpurifier (v4.17.0): Extracting archive
- Installing phpoffice/phpspreadsheet (1.29.0): Extracting archive
Windows 환경에서 Phpspreadsheet를 사용해 PDF 문서로 저장하는 방법

PDF 저장 설정

패키지가 모두 설치되었으면 아래와 같은 샘플 코드를 작성하고 페이지를 호출합니다.

<?php

    require 'vendor/autoload.php';

    use PhpOffice\PhpSpreadsheet\Spreadsheet;
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

    $spreadsheet = new Spreadsheet();
    $spreadsheet->getProperties()->setTitle("PhpSpreadsheet Test");

    $activeWorksheet = $spreadsheet->getActiveSheet();
    $activeWorksheet->setCellValue('A1', 'PhpSpreadsheet Test');
    $activeWorksheet->getColumnDimension("A")->setWidth(25); 
    $activeWorksheet->setPrintGridlines(true);

    $out_put_file_name = "PhpSpreadsheet-Test.pdf";

    header('Content-Type: application/pdf; charset=utf-8' );
    header('Content-Disposition: attachment;filename="'.$out_put_file_name.'"');
    header('Cache-Control: max-age=0');

    $writer = new \PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf($spreadsheet);
    $writer->save('php://output');
    exit;

?>
Windows 환경에서 Phpspreadsheet를 사용해 PDF 문서로 저장하는 방법

PDF 파일 확인

아래와 같이 PDF 파일이 다운로드되는 것을 확인할 수 있습니다.

Windows 환경에서 Phpspreadsheet를 사용해 PDF 문서로 저장하는 방법

참고 URL

  1. Phpspreadsheet 공식 가이드
  2. Composer 공식 홈페이지
  3. Composer 한글 메뉴얼
Tags: php windows