TCPDF에서 한글 사용하기

wkpark의 이미지

TCPDF라는 훌륭한 php용 pdf 클래스가 있습니다.

관련 문서를 찾아보니 거의 없어서 오랜만에 포스팅해봅니다.

이와 더불어 TCPDF를 모니위키 CVS버전에 적용하여 이제는 html문서를 pdf도 즉석에서 출력이 가능하게 되었으며,
더 잘 활용한다면 이제 PDF의 막강함을 이용할 수도 있게 될것입니다.

== 사이트 ==
http://tcpdf.sf.net
== 예제 ==
다양한 예제와 소스
* http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf_examples
== 다운받기 ==
현재 2008년 12월5일자로 버전 4.3_009까지 나왔습니다. PHP4와 PHP5용 버전이 따로 준비되어 있습니다.

== 설치 ==
압축을 풀고, 유닉스 환경에서는 퍼미션을 조절해야 하고,
examples/ 밑의 파일들을 열어봅니다. 제대로 설치되었다면 예제가 제대로 실행되어야 합니다.
* http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf_installation 참조
== 한글 글꼴 설치 ==
한글 글꼴을 설치하기 위해서는
1. 한글 트루타입 글꼴이 필요 (대부분의 글꼴은 유니코드 트루타입 글꼴입니다. 맑은고딕 등등)
2. 바탕체 류의 글꼴은 ttc파일이므로 이 파일을 쪼개어서 ttf파일을 얻어내야 합니다. (생략)
3. ttf2pt1 소스 컴파일하면 ttf2pt1 실행파일이 얻어집니다. ==> 이것은 트루타입 글꼴로 부터 글꼴 메트릭 (afm,ufm) 파일을 얻기 위함 입니다.
4. ttf2pt1 (ttf2ufm)을 사용해서 ufm 파일을 추출 (ttf2pt1 -a -F undotum.ttf) => undotum.ufm 얻음
5. 얻어낸 ufm 파일을 이용해서 TCPDF에서 사용할 수 있는 압축된 글꼴 파일 및 php 글꼴 파일정보 생성
* php makefont undotum.ttf undotum.ufm 실행
6. 얻어진 undotum.php와 압축된 undotum.z undotum.ctg.z 파일을 TCPDF가 설치된 디렉토리의 fonts/ 디렉토리로 복사.
7. $pdf->SetFont('undotum');을 example 소스의 적절한 위치에 집어넣으면 글꼴이 임베딩 된 pdf파일을 얻으실 수 있습니다.
8. 글꼴이 임베딩 되지 않은 PDF파일을 얻으려면 1) cidfont0 형태로 글꼴 php파일을 변경시켜 주거나, 2) undotum.php파일에서 $file 라인을 지워줍니다.
* cidfont0( CID Type0)를 쓰지 않는 두번째 방법을 쓰는 경우는 주의해야 합니다. 서버에 설치된 파일과 사용자 PC에 있는 글꼴이 완전히 일치해야 정상적으로 보입니다. (글꼴이 변형되어 글꼴 gid가 바뀌는 경우에는 제대로 문서를 보여주지 못합니다.)
* 글꼴을 임베딩하는 경우에는 글꼴이 모두 임베딩 되므로, 출력 pdf파일 사이즈가 꽤 큽니다. (고급 pdf파일 라이브러리/프로그램의 경우는 필요한 글꼴만 임베딩시키므로 pdf사이즈가 훨씬 작을 수 있습니다. (dvipdfmx 등등)
== 주의 ==
현재 TCPDF에 내장된 writeHTML() 함수는 한글 유니코드 글꼴과 영문 글꼴(type1 혹은 유니코드 트루타입)을 섞어서 쓸 수 없습니다. 한글이 섞여있는 경우는 무조건 한글 유니코드 글꼴을 사용해야 한글이 정상 출력됩니다.

영문 type1 글꼴 + 한글 유니코드 트루타입 글꼴을 쓰는 경우는 TCPDF를 패치하면 영문 글꼴을 사용하면서 한글도 출력할 수 있습니다.
다음의 패치를 사용해보세요.

http://kldp.org/files/tcpdf_4_3_009_081206.diff_.txt

----
글꼴이 임베딩되지 않은 경우는 ghostscript에서 제대로 보실 수 없으며 adobe reader로만 볼 수 있습니다.

== 모니위키 CVS 에 적용된 스크린샷 ==
프린트 아이콘을 누르면 프린트 되었던 방식처럼 PDF아이콘을 누르면 PDF로 바로 출력되게 됩니다.

File attachments: 
첨부파일 크기
Image icon tcpdf.png28.71 KB
Plain text icon tcpdf_4_3_009_081206.diff_.txt7.15 KB

댓글

gurugio의 이미지


마침 저희 사이트에서 필요하던 솔루션인것 같습니다.

근데 웹을 잘 모르는 제가 쓰기에는 좀 복잡한것 같습니다.

좀더 단순하게 쓸 수 있는게 없을까요?

예를 들어 인쇄할 때 PDF writer를 고르는 것 같이 간단한 방법까지는 아니더라도
그렇게 직관적인 방법이 있으면 좋겠습니다.

----
세상을 바꾸는 것은 단 한 사람. 오직 하나님의 사람뿐이다.
개인 홈페이지가 생겼습니다 http://caoskernel.org
어셈러브를 개편중입니다 http://www.asmlove.co.kr

wkpark의 이미지

서버 관리자가 설정을 해야 할 부분을 말씀하시는 것인가요?
일반 게시판 등등에도 쉽게 적용하실 수 있습니다.

모니위키 CVS에 적용된 경우에는 단순히 PDF 아이콘만 누르면 PDF로 변환되게 됩니다. 프린트 버튼 누르면 프린트 되게끔.

혹시 웹상에서 프린트 버튼을 누르면 마진 설정하고 프리뷰 보고.. 그런 인터페이스를 원하시는 것인가요?
직접 만드신다면 어느정도 가능은 하겠습니다만 그런 자잘한 기능을 지원하는 HTML TO PDF변환기를 본적은 없네요.

온갖 참된 삶은 만남이다 --Martin Buber

monovision의 이미지

예전에 reporting 플젝에 사용을 하고자 건들여봤던 프로젝트였었는데 한글 문제 때문에 GG 쳤었는데
버전업이 되면서 많이 고쳐졌나보네요.
좋은 정보 감사합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.