PHP를 이용한 PDF 문서 생성

PHP기반의 웹사이트에서 증명서 발급, 영수증 발급, 견적서 발급 등 자동으로 PDF를 생성할일이 많은편이다.
추가적인 라이브러리 설치와 셋업과정 없이 기본적인 PHP 디폴트 설치 상태에서도 잘 동작하는 두가지 대표적인 오픈소스 프로젝트를 소개해 보려 한다.

R&OS

홈페이지: http://sourceforge.net/projects/pdf-php/

트루타입 폰트(TTF)를 지원하지만 유니코드 폰트(예: 맑은고딕, 나눔고딕 등) 지원이 제대로 안되서 한글이 포함된 PDF 문서를 생성하기가 쉽지 않다. 라이브러리에서 유니코드 트루타입폰트를 로딩하면 예외가 발생해서 사용이 불가능하다.

유니코드가 아닌 트루타입 폰트를 사용할경우 한글이 지원되지만(예: 아리따글꼴 등) 해당 폰트를 생성된 PDF문서에 포함(embed) 시켜야만 한다 (포함시키지 않을경우 문서가 깨짐). 그러다보니 한글 폰트가 포함되어 문서용량이 커지고 로딩이 길어지는 것을 감수해야 한다.

사용법이나 메뉴얼은 TCPDF에 비해 편리하게 잘 구성이 되어 있어서 훨씬 간편하니 영문으로만 된 PDF문서 생성시에는 더 손쉽게 사용 가능하다. 특히 마크다운을 사용하듯이 간단한 문법으로 구조화된 텍스트를 만드는 기능이 내장되어있어서 개발 문서 등을 만들때 편리하다.

TCPDF

홈페이지: http://www.tcpdf.org/

한글, 일본어, 중국어등 유니코드 계열 언어 지원이 잘되고 SVG(Scalable Vector Graphic) 이미지도 지원하는 등 훨씬 다양한 기능을 가진 방대한 라이브러리이다.

일단 PHP환경에서 한국어 PDF를 생성하는 오픈소스 프로젝트라면 TCPDF가 정답인듯 싶다. 위에서 소개한 R&OS와는 달리 한글 폰트를 임베드 하지않아도 시스템 기본 폰트로 설정되어 출력되기 때문에 문서용량이 매우 컴팩트하고 좋다. 일반적으로 한글이 들어있는 PDF를 사용할때는 용량문제로 커스텀 폰트를 사용하지 않는것이 일반적이기 때문에 임베딩기능은 사용해보지 않았다.

  • ucc44uc9c0

    uc548ub155ud558uc138uc694. nuc81cuac00 uc0acuc6a9ud558ub294uc11cubc84uac00 php4 ubc84uc804uc774uc5ecuc11c uc544ub798 ub9c1ud06cuc5d0uc11c ub2e4uc6b4 ud55cud6c4 nhttp://sourceforge.net/projects/pdf-php/files/0.11/nnud55cuae00 uc785ub825 ud14cuc2a4ud2b8ub97c ud574ubcf4uc558ub294ub370 uc548ub418ub294ub370;; ud639uc2dc ubc29ubc95 uc544uc2dcub098uc694?…

    • http://www.letmecompile.com/ YoungJae Kwon

      uc800ub3c4 php4uc5d0uc11cub294 ud14cuc2a4ud2b8ud574ubcf4uc9c0uc54auc544uc11c uc798 ubaa8ub974uaca0uc2b5ub2c8ub2e4. http://pdf-php.sourceforge.net/ uac00ubcf4ub2c8 php 4.3 uc774uc0c1 uc9c0uc6d0ud558ub294ubc84uc804uc774uc788ub124uc694~ ud55cubc88ud655uc778ud574ubcf4uc2ecuc774 uc88buc744ub4efud569ub2c8ub2e4. uadf8ub9acuace0 R&OSuc758 uacbduc6b0 ub530ub85c PDFuc5d0 ud55cuae00uc774ud3ecud568ub41c uc720ub2c8ucf54ub4dc ud3f0ud2b8ub97c embed uc2dcucf1cuc918uc57c uc81cub300ub85c ubb38uc11cuac00 ub9ccub4e4uc5b4uc9d1ub2c8ub2e4. uc720ub2c8ucf54ub4dcud3f0ud2b8ub97c uc784ubca0ub4dcub97c ud558uc9c0 uc54auc544ub3c4ub418ub294 TCPDFub97c ud55cubc88 uc0acuc6a9ud574ubcf4uae38 ucd94ucc9cud569ub2c8ub2e4.

      • ucc44uc9c0

        ub2f5ubcc0 uac10uc0acud569ub2c8ub2e4. nnuc81cuac00 PHP4 ubc84uc804uc744 uc0acuc6a9ud558ub294ub370uc694, TCPDFub294 PHP5 ubc84uc804 ubd80ud130 uc9c0uc6d0ud558ub354ub77cuad6cuc694;;nnuc800 uc9c8ubb38uc774 uc788ub294ub370uc694. uc544ub9acub530uc6c0 ud3f0ud2b8ub97c uc11cubc84uc5d0 uc62cub9acuace0 nuc544ub798uc640 uac19uc774 ucf54ub4dcub97c uc37bub354ub2c8 uc624ub958uac00 ub098uc11cuc694… ud639uc2dc uc544uc2dcub294uc9c0uc694?nn(‘../src/fonts/uc544ub9acub530-ub3cbuc6c0(TTF)-Medium.ttf’);n(“uac00ub098ub2e4::”);nnnnuac10uc0acud569ub2c8ub2e4.

        • http://www.letmecompile.com/ YoungJae Kwon

          ud3f0ud2b8 ud30cuc77c uacbdub85cuac12uc774 uc11cubc84uc0c1uc758 uc808ub300/uc0c1ub300uacbdub85cuac00 ub9deub294uc9c0 ud655uc778ud574ubcf4uc2dcuae38 ubc14ub78dub2c8ub2e4. ud55cuae00ud30cuc77c uc774ub984uc790uccb4ub3c4 ub418ub3c4ub85d uc4f0uc9c0 uc54aub294uac8c ub9deuad6cuc694.