[PHP] TCPDF에서 TABLE 출력하기

PHP/TCPDF 2017. 9. 19. 15:50





■ TCPDF에서 TABLE 출력하기


TCPDF 에서 테이블을 출력한다면 아래와 같이 출력이 가능하다.


# 소스코드

 tcpdf_test_04-1.php

<?php

require_once "tcpdf/tcpdf_import.php";


$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, "UTF-8", false);


$pdf -> SetHeaderData(

 "wicked_logo.jpg"

, PDF_HEADER_LOGO_WIDTH

, "TCPDF 테스트 004-1"

, "현대마법의 공방 - http://wickedmagic.tistory.com/\nyinglong200@me.com"

, array(0, 64, 255)

, array(0, 64, 128)

);

$pdf -> setFooterData(array(0, 64, 0), array(0, 64, 128));


$pdf -> setHeaderFont(Array("nanumgothic", "", PDF_FONT_SIZE_MAIN));

$pdf -> setFooterFont(Array("nanumgothic", "", PDF_FONT_SIZE_DATA));


$pdf -> SetDefaultMonospacedFont("nanumgothic");


$pdf -> SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);

$pdf -> SetHeaderMargin(PDF_MARGIN_HEADER);

$pdf -> SetFooterMargin(PDF_MARGIN_FOOTER);


$pdf -> SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);


$pdf -> setImageScale(PDF_IMAGE_SCALE_RATIO);


if(@file_exists(dirname(__FILE__)."/lang/eng.php")) {

require_once(dirname(__FILE__)."/lang/eng.php");

$pdf -> setLanguageArray($l);

}


$pdf -> SetFont("nanumgothic", "", 10, "", true);


$pdf -> AddPage();


$pdf -> setTextShadow(array(

 "enabled" => true

, "depth_w" => 0.2

, "depth_h" => 0.2

, "color" => array(196, 196, 196)

, "opacity" => 1

, "blend_mode" => "Normal"

));


// -----------------------------------------------------------------------------


$html = "<h1>■ 걸그룹</h1>";

$pdf -> writeHTML($html, true, false, false, false, "");


// -----------------------------------------------------------------------------


$tbl

<<<EOD

<table width="90%" border="1" align="center">

<tr><td>트와이스</td><td>나연</td></tr>

<tr><td>트와이스</td><td>정연</td></tr>

<tr><td>트와이스</td><td>모모</td></tr>

<tr><td>트와이스</td><td>사나</td></tr>

<tr><td>트와이스</td><td>지효</td></tr>

<tr><td>트와이스</td><td>미나</td></tr>

<tr><td>트와이스</td><td>다현</td></tr>

<tr><td>트와이스</td><td>채영</td></tr>

<tr><td>트와이스</td><td>쯔위</td></tr>

<tr><td>레드벨벳</td><td>아이린</td></tr>

<tr><td>레드벨벳</td><td>슬기</td></tr>

<tr><td>레드벨벳</td><td>웬디</td></tr>

<tr><td>레드벨벳</td><td>조이</td></tr>

<tr><td>레드벨벳</td><td>예리</td></tr>

<tr><td>러블리즈</td><td>베이비소울</td></tr>

<tr><td>러블리즈</td><td>유지애</td></tr>

<tr><td>러블리즈</td><td>서지수</td></tr>

<tr><td>러블리즈</td><td>이미주</td></tr>

<tr><td>러블리즈</td><td>Kei</td></tr>

<tr><td>러블리즈</td><td>JIN</td></tr>

<tr><td>러블리즈</td><td>류수정</td></tr>

<tr><td>러블리즈</td><td>정예인</td></tr>

<tr><td>여자친구</td><td>소원</td></tr>

<tr><td>여자친구</td><td>예린</td></tr>

<tr><td>여자친구</td><td>은하</td></tr>

<tr><td>여자친구</td><td>유주</td></tr>

<tr><td>여자친구</td><td>신비</td></tr>

<tr><td>여자친구</td><td>엄지</td></tr>

<tr><td>블랙핑크</td><td>지수</td></tr>

<tr><td>블랙핑크</td><td>제니</td></tr>

<tr><td>블랙핑크</td><td>로제</td></tr>

<tr><td>블랙핑크</td><td>리사</td></tr>

</table>

EOD;


$pdf -> writeHTML($tbl, true, false, false, false, "");


// -----------------------------------------------------------------------------


$pdf -> Output(getcwd()."/example_test_04.pdf", "F");

?>





# 출력결과





그럼 위와같이 출력이 되는 모습을 확인 할 수 있다.


그렇지만 HereDoc(EOD) 같은 것을 사용한는것을 그렇게 좋아하지 않기에.


직접 변수에 값을 넣고 출력한다면



 tcpdf_test_04-2.php

<?php

require_once "tcpdf/tcpdf_import.php";


$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, "UTF-8", false);


// 상단 헤더 변경

$pdf -> SetHeaderData(

 "wicked_logo.jpg"

, PDF_HEADER_LOGO_WIDTH

, "TCPDF 테스트 004-2"

, "현대마법의 공방 - http://wickedmagic.tistory.com/\nyinglong200@me.com"

, array(0, 64, 255)

, array(0, 64, 128)

);

$pdf -> setFooterData(array(0, 64, 0), array(0, 64, 128));


// 헤더, 푸터 폰트 한글로 변경

$pdf -> setHeaderFont(Array("nanumgothic", "", PDF_FONT_SIZE_MAIN));

$pdf -> setFooterFont(Array("nanumgothic", "", PDF_FONT_SIZE_DATA));


$pdf -> SetDefaultMonospacedFont("nanumgothic");


$pdf -> SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);

$pdf -> SetHeaderMargin(PDF_MARGIN_HEADER);

$pdf -> SetFooterMargin(PDF_MARGIN_FOOTER);


$pdf -> SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);


$pdf -> setImageScale(PDF_IMAGE_SCALE_RATIO);


if(@file_exists(dirname(__FILE__)."/lang/eng.php")) {

require_once(dirname(__FILE__)."/lang/eng.php");

$pdf -> setLanguageArray($l);

}


$pdf -> SetFont("nanumgothic", "", 10, "", true);


$pdf -> AddPage();


$pdf -> setTextShadow(array(

 "enabled" => true

, "depth_w" => 0.2

, "depth_h" => 0.2

, "color" => array(196, 196, 196)

, "opacity" => 1

, "blend_mode" => "Normal"

));


$html = "<h1>■ 걸그룹</h1>";

$html .= "<table width=\"90%\" border=\"1\" align=\"center\">";

$html .= "<tr><td>트와이스</td><td>나연</td></tr>";

$html .= "<tr><td>트와이스</td><td>정연</td></tr>";

$html .= "<tr><td>트와이스</td><td>모모</td></tr>";

$html .= "<tr><td>트와이스</td><td>사나</td></tr>";

$html .= "<tr><td>트와이스</td><td>지효</td></tr>";

$html .= "<tr><td>트와이스</td><td>미나</td></tr>";

$html .= "<tr><td>트와이스</td><td>다현</td></tr>";

$html .= "<tr><td>트와이스</td><td>채영</td></tr>";

$html .= "<tr><td>트와이스</td><td>쯔위</td></tr>";

$html .= "<tr><td>레드벨벳</td><td>아이린</td></tr>";

$html .= "<tr><td>레드벨벳</td><td>슬기</td></tr>";

$html .= "<tr><td>레드벨벳</td><td>웬디</td></tr>";

$html .= "<tr><td>레드벨벳</td><td>조이</td></tr>";

$html .= "<tr><td>레드벨벳</td><td>예리</td></tr>";

$html .= "<tr><td>러블리즈</td><td>베이비소울</td></tr>";

$html .= "<tr><td>러블리즈</td><td>유지애</td></tr>";

$html .= "<tr><td>러블리즈</td><td>서지수</td></tr>";

$html .= "<tr><td>러블리즈</td><td>이미주</td></tr>";

$html .= "<tr><td>러블리즈</td><td>Kei</td></tr>";

$html .= "<tr><td>러블리즈</td><td>JIN</td></tr>";

$html .= "<tr><td>러블리즈</td><td>류수정</td></tr>";

$html .= "<tr><td>러블리즈</td><td>정예인</td></tr>";

$html .= "<tr><td>여자친구</td><td>소원</td></tr>";

$html .= "<tr><td>여자친구</td><td>예린</td></tr>";

$html .= "<tr><td>여자친구</td><td>은하</td></tr>";

$html .= "<tr><td>여자친구</td><td>유주</td></tr>";

$html .= "<tr><td>여자친구</td><td>신비</td></tr>";

$html .= "<tr><td>여자친구</td><td>엄지</td></tr>";

$html .= "<tr><td>블랙핑크</td><td>지수</td></tr>";

$html .= "<tr><td>블랙핑크</td><td>제니</td></tr>";

$html .= "<tr><td>블랙핑크</td><td>로제</td></tr>";

$html .= "<tr><td>블랙핑크</td><td>리사</td></tr>";

$html .= "</table>";


$pdf -> writeHTML($html, true, false, false, false, "");


$pdf -> Output(getcwd()."/example_test_45.pdf", "F");

?>



위와같은 형식으로 변경해 주면 되는데.


한가지 주의사항은 따옴표로 감싸는 것이다.







필자는 기본적으로 1번과 같이 큰 따옴표 안에 작은 따옴표를 넣는 방식으로 코딩을 많이 하는데


위와 같이 큰 따옴표안에 작은 따옴표를 넣는 방식은 에러가 발생하게 되어 결국 3번과 같은 형태로 코딩을 하게 되었다.


HereDoc(EOD ~ )와 같은 방식을 좋아하지 않는 유저라면  처음부터 작은 따옴표 안에 큰 따온를 먼저 쓸것이다.