DOMPDF ( WEB 페이지 -> PDF 파일 ) 프로그램 추가 for PHP
해당 프로그램 이전에 TCPDF , FPDF 를 서버에 설치해서 한글 과 이미지 웹페이지를
PDF 로 만들어 봤지만 두가지모두 최근의 CSS 가 적용된 페이지를
깨끗하게 PDF 파일로 만들지 못하는것을 확인하였다.
이에 이리저리 찾다 dompdf 를 발견하여 서버에 적용 해보니 매우 web page 에
표시 되는 만큼은 PDF 가 만들어 지는것을 알게 되어 개발시 적용한 경험을
아래와 같이 남긴다. ( 사설이 길군 ㅋ )
1. 다운로드
https://github.com/dompdf/dompdf/releases
해당 페이지에서 버젼을 0.6.2 를 선택해서 다운로드 ( 한글 지원이 원활한 버젼이라고 함 )
( https://github.com/dompdf/dompdf/releases/download/v0.6.2/dompdf-0.6.2.zip )
2. 해당 프로그램 설치전 PHP 에 아래의 extension 설치 되어 있는지 확인 해본다.
MBString extension
GD extension
DOM extension
( 확인방법 phpinfo(); 이용 )
3. 다운받은 dompdf 서버에 적당한 위치에 압축을 푼다.
4. dompdf/lib 폴더안에 필요한 프로그램 php-font-lib 관련이 없으므로
https://github.com/PhenX/php-font-lib/releases 해당 경로에서 0.2.2버전을 다운로드 해서
압축을 풀고 dompdf/lib 안에 넣어 준다.
5. dompdf 폴더에 원하는 이름의 파일명을( 예: example.php ) 만들고 아래의 소스가 실행되는지 브라우져에서 확인한다.
<?php
include_once('dompdf/dompdf_config.inc.php');
$error_level = error_reporting();
error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING);
$name = "by hongtting "; // 변수 지정가능
$html = "<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
<style>
body { font-family:'NanumGothic', '나눔고딕', 'dotum', '돋움'; font-size: 11px; max-width: 750px !important;}
</style>
</head>
<body>
<div id='pdf_content_wrap'>
PDF 변환 테스트 입니다. $name
</div>
</body>
</html>";
//dompdf 버전 문제로 인한 html 소스 공백 제거
$html = preg_replace('/\r\n|\r|\n/','',$html);
//html 코드를 pdf로 변환 (변경하면 안됨)
$dompdf = new \DOMPDF();
$dompdf->load_html($html);
$dompdf->set_paper("a4"); // A4 용지에 맞게 작성됨.
$dompdf->render();
$dompdf->stream("tempfile.pdf"); // 바로 다운로드 됨
// $dompdf->stream($filename . ".pdf", array("Attachment" => 0)); // 브라우져에서 열리게 됨.
error_reporting($error_level);
?>
6. PDF 가 만들어 진것을 확인 할수 있지만 한글이 깨져 있을것이다.
위 소스와 같이 한글 NanumGothic 폰트가 해당 프로그램에 설치 되지 않아서 깨지는것이니 인터넷에서
해당 Font 를 찾아 다운 받아 dompdf 폴더안에 있는 파일 명 load_font.php 을 이용해서 아래와 같이 서버의 shell 에서 실행한다.
6-1.다운로드 한글 ttf 파일 : NanumGothic.ttf
6-2.load_font.php 파일의 chmod 777 변경 후 실행
#> ./load_font.php 'NanumGothic' ./NanumGothic.ttf ./NanumGothic.ttf
7. 브라우져에서 example.php 실행 하면 정상적으로 나오는것을 확인 할 수 있다.
## 우분투에 php extention 설치지 아래 참조
service apache2 restart
sudo apt-get install php7.0-mbstring
sudo apt-get install libapache2-mod-php7.0
sudo apt-get install php7.0-gd