php 에서 작업을 하다 보면 예전에는 엑셀 다운로드가 많았지만 요즘에는 pdf 로 다운 받기를 원한다. tcpdf 사이트에서 무료로 다은 받을 수 있지만 한글이 깨지는 오류가 있다. 한글 폰트가 있어야지만 한글이 깨지지 않기 때문에 nanumbarungothicyethangul.php 파일과 폰트를 다운로드 해서 설정해주고 아래와 같이 코딩해주면 html 코드 그대로 pdf 파일로 다운로드가 가능하다.
단 css 파일에 정의된 스타일은 사용이 되지 않고 태그 자체에 style 을 하드코딩으로 해주어야 한다. 그래서 테이블 코딩으로 하는것이 레이아웃이 깨지거나 하지 않아서 해당 출력물은 테이블 코딩을 별도로 진행하는 것이 좋다.
<?php
require_once "./tcpdf/tcpdf_import.php";
/**
* 헤더 변경을 위한 class 상속 후 재 정의
*/
class MYPDF extends TCPDF {
//Page header
public function Header() {
// Logo
$image_file = K_PATH_IMAGES.'logo_example.jpg';
$this->Image($image_file, 10, 10, 15, '', 'PNG', '', 'T', false, 300, '', false, false, 0, false, false, false);
// Set font
$this->SetFont('helvetica', 'B', 15);
// Title
//$this->Cell(0, 15, 'www.example.com', 0, false, 'C', 0, '', 0, false, 'M', 'M');
}
}
$pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, "UTF-8", false);
$pdf->SetCreator(PDF_CREATOR);
// set default header data
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING);
// set header and footer fonts
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
// set default monospaced font
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
// set margins
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
// set auto page breaks
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
// set image scale factor
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
$pdf->SetFont('nanumbarungothicyethangul', '', 12);
$pdf->AddPage();
//$pdf->writeHTMLCell(0, 0, "", "", $html, 0, 1, 0, true, "", true);
include $_SERVER["DOCUMENT_ROOT"]."/include/dbopen.php";
$sql = " select * from dual";
ob_start();
?>
<!doctype html>
<html><head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>PDF 다운로드 예제</title>
</head>
<body>
<style type="text/css">
.table th, .table td {
padding: 10px 16px;
font-size: 15px;
border: 1px solid #cccccc;
}
</style>
<p style="text-align:center; margin-bottom:50px; font-size:30px;">견적서</p>
<table class="table">
<colgroup><col width="10%"><col width="10%"><col width="50%"><col></colgroup>
<tr>
<th style="padding: 10px 16px; font-size: 15px; border: 1px solid #cccccc;"rowspan="2">확인란</th>
<td rowspan="2">
<img src="도메인경로부터/img/img_confirm.png" style="width:80px;">
</td>
<td>데이터 내용 </td>
</tr>
</table>
</div>
</body>
</html>
<?php
$pdfData = ob_get_contents();
ob_end_clean();
// 테이블을 출력할 때 사용하는 방법
$pdf -> writeHTML($pdfData, true, false, false, false, '');
$pdf->Output(getcwd()."/example_test_01.pdf", "FI");
?>