반응형

TCPDF를 이용하여 HTML 태그를 PHP로 PDF 파일 생성하여 다운로드 받기 처리하는 방법입니다.

 

TCPDF 검색, 다운로드, 설치

- 검색 사이트에서 "tcpdf download"로 검색을 한 후 github에서 클론으로 다운을 받습니다.
- 서버에 압축을 푼 파일을 "tcpdf" 폴더를 생성하여 업로드를 합니다.

TCPDF 검색 화면

TCPDF 한글 설치

- TCPDF는 한글을 작성 시 한글이 깨져서 나옵니다.
- 한글 폰트를 설치하게 되면 정상적으로는 나오게 됩니다.
- [document root]/tcpdf/fonts/폴더에 첨부된 파일을 업로드 합니다.

TCPDF 한글 설치

tcpdf_nanum_fonts.zip
2.76MB

 

TCPDF 사용 방법

1) $pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, "UTF-8", false);
    - MYPDF 헤더 영역을 제어하기 위해 TCPDF 클래스를 재정하여 사용했습니다.
    - 일반적으로 사용법입니다.
      new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, "UTF-8", false);
2) $pdf->SetFont('nanumbarungothicyethangul', '', 12);
    - 한글이 깨지지 않게 하기 위해 업로드한 한글 폰트를 셋팅합니다.
3) $pdf->writeHTMLCell(0, 0, "", "", $html, 0, 1, 0, true, "", true);
   - 일반적인 HTML 태그를 통해 PDF로 출력할 때 사용합니다.
4) $pdf -> writeHTML($pdfData, true, false, false, false, '');
   - 테이블 태그를 이용하여 PDF를 출력할 때 사용합니다.
5) $pdfData .= "고객 정보";
   - 태그에 속성값을 넣을 때는 colspan=4 가 아니라 colspan="4" 형태로 하여야 정확히 적용이 됩니다.
6) $pdf->Output(getcwd()."/example_test_01.pdf", "FI");
    - getcwd() : 프로그램이 위치한 폴더에 파일을 생성합니다.
    - 속성값은 FD 또는 FI로 하시면 됩니다.
    - I : send the file inline to the browser (default). The plug-in is used if available. The name given by name is used when one selects the "Save as" option on the link generating the PDF.
    - D : send to the browser and force a file download with the name given by name.
    - F : save to a local server file with the name given by name.
    - S : return the document as a string (name is ignored).
    - FI : equivalent to F + I option
    - FD : equivalent to F + D option
    - E : return the document as base64 mime multi-part email attachment (RFC 2045)

$_incDocRoot = $_SERVER['DOCUMENT_ROOT'];
include_once($_incDocRoot.'/tcpdf/tcpdf.php');

$html = "<h1>한글</h1>";
$html .= "<i>This is the first example of TCPDF library.</i>";
$html .= "<p style='color:#CC0000;'>End of document</p>";

/**
 * 헤더 변경을 위한 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);


$name = '홍길동';
$tel  = '010-2112-1234';
$yyyy = '2019';
$mm   = '12';
$dd   = '24';

$pdfData .= "<div align=\"center\">";
$pdfData .= "<h1>테이블 예시</h1>";
$pdfData .= "<table border=\"1\" cellpadding=\"5\" cellspacing=\"0\">";
$pdfData .= "<thead>";
$pdfData .= "<tr><th colspan=\"4\" bgcolor=\"#ddd\" align=\"center\">고객 정보</th></tr>";
$pdfData .= "</thead>";
$pdfData .= "<tbody>";
$pdfData .= "<tr>";
$pdfData .= "<th>성명</th>";
$pdfData .= "<td>" . $name . "</td>";
$pdfData .= "<th>연락처</th>";
$pdfData .= "<td>". $tel . "</td>";
$pdfData .= "</tr>";
$pdfData .= "<tr>";
$pdfData .= "<th>일정</th>";
$pdfData .= "<td colspan=\"3\">";
$pdfData .= $yyyy.'년 '.$mm.'월 '.$dd.'일';
$pdfData .= "</td>";
$pdfData .= "</tr>";
$pdfData .= "</table>";
$pdfData .= "</div>";

// 테이블을 출력할 때 사용하는 방법
$pdf -> writeHTML($pdfData, true, false, false, false, '');

$pdf->Output(getcwd()."/example_test_01.pdf", "FI");

 

PHP로 HTML 태그를 사용하여 PDF 파일 생성 및 다운로드 받기 처리

 

반응형

+ Recent posts