일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 라이렌
- Database
- 코드이그나이터
- 그누보드
- html
- 영카트
- rairen
- CodeIgniter
- 옵션표
- 헬퍼
- mysql
- function
- 설정
- jquery
- jw player
- php
- config
- 안드로이드
- ajax
- CI3
- FCM
- APK
- 웹 프로그래밍
- 후크
- API
- MSsql
- codeigniter3
- phpDocumentor
- 함수
- javascript
- Today
- Total
프로그램 개발서
[PHP][TCPDF] HTML화면을 PDF로 보기 본문
이번 글은 TCPDF에 대해서 알아봅시다.
TCPDF를 사용하기 위해 넣은 코드만 보여드리도록 하겠습니다.
// curl이 설치 되었는지 확인
if (function_exists('curl_init')) {
// curl 리소스를 초기화
$ch = curl_init();
// url을 설정
curl_setopt($ch, CURLOPT_URL, '주소');
// 헤더는 제외하고 content 만 받음
//curl_setopt($ch, CURLOPT_HEADER, 0);
// 응답 값을 브라우저에 표시하지 말고 값을 리턴
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 브라우저처럼 보이기 위해 user agent 사용
//curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //원격 서버의 인증서가 유효한지 검사 안함
curl_setopt($ch, CURLOPT_POSTFIELDS, '데이터'); //POST data
curl_setopt($ch, CURLOPT_POST, true); //true시 post 전송
$content = curl_exec($ch);
// 리소스 해제를 위해 세션 연결 닫음
curl_close($ch);
} else {
// curl 라이브러리가 설치 되지 않음. 다른 방법 알아볼 것
}
$content = file_get_contents('주소', false);
위 코드는 웹 페이지 호면을 읽어오기 위해 사용하는 방법 중 2가지를 표시한 것입니다.
우선 첫 번째는 curl을 사용한 것은 데이터를 넘겨서 페이지 내용을 채워야 할 경우 사용하시면 됩니다.
curl로 보낼 때 get으로 보내면 파라미터에 값이 보이다 보니 저 같은 경우 post로 보내었습니다.
ssl이 없으니 그다지 차이가 없을 것 같지만 ㅎㅎ
두 번째는 file_get_contents함수를 이용해서 파일을 읽어오는 것입니다.
두번째는 한두 번씩은 써보신 분들이 많을 테니 넘어가고,
위에서 PDF 내용에 넣을 데이터를 가지고 왔다면 이제
TCPDF를 불러옵니다.
// Include the main TCPDF library (search for installation path).
require_once('/TCPDF/config/tcpdf_config.php');
require_once('/TCPDF/tcpdf_autoconfig.php');
require_once('/TCPDF/tcpdf.php');
TCPDF 공식 홈페이지(https://tcpdf.org)에서 라이브러리를 다운로드하고 서버에 업로드했다면, 위 코드대로 3개의 파일을 포함합니다.
config 폴더의 tcpdf_config.php 파일은 말 그대로 tcpdf의 설정 파일입니다.
설정을 전부다 커스텀할 것이라면 tcpdf_autoconfig.php 파일은 안 불러와도 됩니다.
다만 귀찮다 보니 일부 설정이 되어있는 파일을 로딩을 하는 것이죠.
define정의가 되어있는지 체크해서 정의가 안되어 있으면 자동 설정 파일에서 정의가 되는 것이므로
커스텀 설정을 하지 않으려면 tcpdf_config.php내용에서 설정들을 주석 처리하시면 됩니다.
그리고 설정 파일을 불어왔다면 tcpdf.php 파일을 불어와서 클래스 사용할 준비를 합니다.
// create new PDF document
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->SetCreator(PDF_CREATOR);
$pdf->AddPage();
// set some language-dependent strings (optional)
if (@file_exists(G5_LIB_PATH . '/TCPDF/examples/lang/kor.php')) {
require_once(G5_LIB_PATH . '/TCPDF/examples/lang/kor.php');
$pdf->setLanguageArray($l);
}
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
$pdf->SetFont('nanumbarungothicyethangul', '', 12);
$pdf->writeHTML($content, true, true, false, true, '');
//$pdf->writeHTMLCell(0, 0, "", "", $content, 0, 1, 0, true, "", true);
//$pdf->Write(5, $content, '', 0, '', false, 0, false, false, 0);
// ---------------------------------------------------------
//Close and output PDF document
$pdf->Output('파일명.pdf', 'I');
//============================================================+
// END OF FILE
//============================================================+
위 코드는 클래스 개체를 만들어서 PDF내용을 채워 출력하는 과정을 보여줍니다.
위 코드 내용 중에 언어 관련된 부분으로 보이는 곳이 있을 겁니다.
// set some language-dependent strings (optional)
if (@file_exists(G5_LIB_PATH . '/TCPDF/examples/lang/kor.php')) {
require_once(G5_LIB_PATH . '/TCPDF/examples/lang/kor.php');
$pdf->setLanguageArray($l);
}
이 코드는 언어별 페이지 메타 설정 관련 파일이라고 보시면 됩니다.
정작 PDF로 출력할 때 한글이 안 깨지려면
첨부된 폰트를 라이브러리에 포함한 다음
$pdf->SetFont('nanumbarungothicyethangul', '', 12);
폰트 설정을 해줘야 합니다.
전부 다는 안 해보았으나, 대부분 한글이 깨지는 것 같으니 주의하시길 바랍니다.
내용을 첨가하는 것은 여러 함수가 있으나 제가 사용한 것은 HTML을 읽어와서 보여줘야 하므로
writeHTML로 내용을 추가했습니다.
나머지는 아마도 코드를 보시면 이해하실 수 있으리라 생각됩니다.
TCPDF 문서 : https://tcpdf.org/docs/
Docs · TCPDF
tcpdf.org
TCPDF 예제 : https://tcpdf.org/examples/
Examples · TCPDF
tcpdf.org
TCPDF GIT : https://github.com/tecnickcom/tcpdf
tecnickcom/TCPDF
Official clone of PHP library to generate PDF documents and barcodes - tecnickcom/TCPDF
github.com
'PHP' 카테고리의 다른 글
[코드이그나이터3] korean/core_lang.php 0.3 (0) | 2020.11.03 |
---|---|
[코드이그나이터] config/pagination.php (0) | 2020.05.20 |
[PHP][코드이그나이터] 훅, 후크, 후킹 (0) | 2019.11.01 |
[PHP][코드이그나이터] 환경설정(config.php) (0) | 2019.11.01 |
[PHP] 푸시 토큰 관리 (0) | 2019.09.23 |