Phpspreadsheet, mPDF를 사용해 PDF 문서 저장하기 | Windows
개요
여기서는 Windows 환경에서 PHP Composer를 이용해 Phpspreadsheet와 mPDF를 설치하고, PDF 문서를 생성, 저장하는 방법에 대해 정리해보겠습니다. (Phpspreadsheet는 PHPExcel의 업그레이드 버전입니다.)
![Windows 환경에서 Phpspreadsheet를 사용해 PDF 문서로 저장하는 방법](/images/programming/php/php-phpspreadsheet-save-pdf-file-01.png)
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 문서로 저장하는 방법](/images/programming/php/php-phpspreadsheet-save-pdf-file-02.png)
설치
아래 명령어를 사용해 Phpspreadsheet와 mPDF 패키지를 설치합니다.
> composer install
오류 상황 - 1
설치를 시도하면 아래와 같이 오류가 발생하는 경우가 있습니다.
Problem 1: require ext-gd * -> it is missing from your system. Install or enable PHP’s gd extension.
![Windows 환경에서 Phpspreadsheet를 사용해 PDF 문서로 저장하는 방법](/images/programming/php/php-phpspreadsheet-save-pdf-file-03.png)
- [php.ini]를 열어서 아래와 같이 [extension=gd] 항목의 주석을 해제하고 저장합니다.
extension=gd
![Windows 환경에서 Phpspreadsheet를 사용해 PDF 문서로 저장하는 방법](/images/programming/php/php-phpspreadsheet-save-pdf-file-04.png)
오류 상황 - 2
위 문제를 해결하고 다시 설치를 시도하면 아래와 같이 다시 오류가 발생하는 경우가 있습니다.
Problem 1: require ext-zip * -> it is missing from your system. Install or enable PHP’s zip extension.
![Windows 환경에서 Phpspreadsheet를 사용해 PDF 문서로 저장하는 방법](/images/programming/php/php-phpspreadsheet-save-pdf-file-05.png)
- [php.ini]를 열어서 아래와 같이 [extension=zip] 항목의 주석을 해제하고 저장합니다.
extension=zip
![Windows 환경에서 Phpspreadsheet를 사용해 PDF 문서로 저장하는 방법](/images/programming/php/php-phpspreadsheet-save-pdf-file-06.png)
설치 완료
문제를 모두 해결하면 아래와 같이 [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 문서로 저장하는 방법](/images/programming/php/php-phpspreadsheet-save-pdf-file-07.png)
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 문서로 저장하는 방법](/images/programming/php/php-phpspreadsheet-save-pdf-file-08.png)
PDF 파일 확인
아래와 같이 PDF 파일이 다운로드되는 것을 확인할 수 있습니다.
![Windows 환경에서 Phpspreadsheet를 사용해 PDF 문서로 저장하는 방법](/images/programming/php/php-phpspreadsheet-save-pdf-file-09.png)
참고 URL
-
Phpspreadsheet 공식 가이드
https://phpspreadsheet.readthedocs.io/ -
Composer 공식 홈페이지
https://getcomposer.org/ -
Composer 한글 메뉴얼
https://xpressengine.github.io/Composer-korean-docs/
문서 업데이트 내역
날짜 | 내용 |
---|---|
2023-12-21 | 문서 최초 생성 |