티스토리 뷰

Old

PHP PDF 라이브러리

Bravo(브라보) 2010. 12. 23. 03:34

PDF 문서를 만들어서 메일에 첨부해야하는데 돌아가는 서버 환경에 PHP PDF 관련 라이브러리가 빠져 있어서, 부득이 하게 독립 PDF 라이브러리를 선택해야 했다. FPDF 라든지 TCPDF 등 몇가지 무료 라이브러리들이 있어서 사용했지만 한글 사용에 문제가 생겼다. 한글만 사용하는 경우 영문만 사용하는 경우는 별문제가 없지만 혼용된 곳에서 영문 자간이 망가지는 현상이 나타난다.

결국 FPDF 내 변형 스크립트를 이용해서 사용하게 되었다.

 http://fpdf.org/

사이트에서 scripts 아래부분에 보면 tFPDF 라는 스크립트를 사용하게 되었다. 스크립트를 보면 fpdf에  extend 된 형태가 아니라 fpdf를 골격으로 새로 만든 클래스다. ttf 파일을 읽어 들여서 사용하게 되고 utf-8을 사용하게 된다. euc-kr 코드를 iconv로 변환해 사용하는것으로 해결됬고, 폰트는 일반적인 윈도우 폰트나 공개된 무료 폰트 ttf를 사용하면 된다. 물론 한글 폰트 이야기이다. ttc 포맷인경우 breakttc 등과 같은 유틸로 쪼개서 필요한 글꼴을 선택해서 쓰면 된다.

덧붙여서 table 태그로 이루어진 서식을 pdf 로 나타내야 하는거라 table 관련된 스크립트도 같이 구해서 사용하게 되었다.

http://www.vanxuan.net/tool/pdftable/

rowspan, colspan 도 되야 하는 상황이라서 이런 라이브러리가 필요했다. 거기에 덧붙여서, PHP4에서는 문제가 있어서 개조를 했다. 일단 클래스에 private 붙는 부분, 그리고 call-by-value 관련된 루프문에도 문제가 있어서 수정했다. 그리고 테이블 보더에 관련된 부분을 top, right, bottom, left 이런식으로 각각 굵기를 조절 할 수 있도록 수정했다.

작업된 부분은 fpdf.inc.php 는 tfpdf로 대체, pdftable.inc.php 는 php5용 pdftable.inc.php4 php4용 파일이다.
샘플코드를 보면

require_once("..../pdftable.inc.php");

$pdf = new PDFTable();
// font00.ttf 는 라이브러리 font폴더 아래 unifont에 위치해야 한다. 쓰기퍼미션도 필요
$pdf->AddFont('default','','font00.ttf',true); 
$pdf->SetFont('default','',24);
// 나머지 사용 방법은 fpdf와 유사
$pdf->htmltable(iconv('euc-kr','utf-8',$table_content));

$pdf->Output();

변형된 테이블 코드 예는 다음과 같다.

<table border=1 width=180>
	<tr bgcolor=#cccccc>
		<td align=center border='.5,.1,.1,.5'>규격</td>
		<td align=center border='.5,.1,.1,.1'>항목</td>
		<td align=center border='.5,.1,.1,.1'>단가</td>
		<td align=center border='.5,.1,.1,.1'>수량</td>
		<td align=center border='.5,.1,.1,.1'>합계</td>
		<td align=center border='.5,.5,.1,.1'>비고</td>
	</tr>
</table>

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
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
글 보관함