title

FPDF - PHP로 PDF 만들기 3

한글화&번역 | 2005.04.19 19:38

목차

3. 줄바꿈과 색상

양쪽 정렬된 문단을 출력하는 다음 예제를 보자. 이 예제는 색상의 사용법도 같이 다루고 있다.

  1  <?php
  2  require('fpdf.php');
  3    
  4  class PDF extends FPDF
  5  {
  6      function Header()
  7      {
  8          global $title;
  9          //Arial bold 15
 10          $this->SetFont('Arial','B',15);
 11          //제목의 너비와 위치 계산
 12          $w=$this->GetStringWidth($title)+6;
 13          $this->SetX((210-$w)/2);
 14          //프레임과 배경색, 글꼴 색상 지정
 15          $this->SetDrawColor(0,80,180);
 16          $this->SetFillColor(230,230,0);
 17          $this->SetTextColor(220,50,50);
 18          //프레임의 두께 지정 (1 mm)
 19          $this->SetLineWidth(1);
 20          //제목
 21          $this->Cell($w,9,$title,1,1,'C',1);
 22          //줄바꿈
 23          $this->Ln(10);
 24      }
 25      function Footer()
 26      {
 27          //하단에서 1.5 cm 지점
 28          $this->SetY(-15);
 29          //Arial italic 8
 30          $this->SetFont('Arial','I',8);
 31          //회색으로 글꼴 색상 지정
 32          $this->SetTextColor(128);
 33          //페이지 번호
 34          $this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C');
 35      }
 36      function ChapterTitle($num,$label)
 37      {
 38          //Arial 12
 39          $this->SetFont('Arial','',12);
 40          //배경색
 41          $this->SetFillColor(200,220,255);
 42          //제목
 43          $this->Cell(0,6,"Chapter $num : $label",0,1,'L',1);
 44          //줄바꿈
 45          $this->Ln(4);
 46      }
 47      function ChapterBody($file)
 48      {
 49          //텍스트를 읽어들임
 50          $f=fopen($file,'r');
 51          $txt=fread($f,filesize($file));
 52          fclose($f);
 53          //Times 12
 54          $this->SetFont('Times','',12);
 55          //양쪽정렬된 문단 출력
 56          $this->MultiCell(0,5,$txt);
 57          //줄바꿈
 58          $this->Ln();
 59          //이탤릭
 60          $this->SetFont('','I');
 61          $this->Cell(0,5,'(end of excerpt)');
 62      }
 63      function PrintChapter($num,$title,$file)
 64      {
 65          $this->AddPage();
 66          $this->ChapterTitle($num,$title);
 67          $this->ChapterBody($file);
 68      }
 69  }
 70  $pdf=new PDF();
 71  $title='20000 Leagues Under the Seas';
 72  $pdf->SetTitle($title);
 73  $pdf->SetAuthor('Jules Verne');
 74  $pdf->PrintChapter(1,'A RUNAWAY REEF','20k_c1.txt');
 75  $pdf->PrintChapter(2,'THE PROS AND CONS','20k_c2.txt');
 76  $pdf->Output();
 77  ?>

[데모보기]

GetStringWidth() 메소드를 이용하면 현재 폰트에서의 문자열의 길이를 얻을 수 있다. 이 길이는 제목 주변에 그릴 프레임의 너비와 위치 등을 구하는데 사용할 수 있다. SetDrawColor(), SetFillColor(), SetTextColor() 등을 이용해서 색상을 설정했으며, SetLineWidth() 메소드를 이용해서 선의 굵기를 1mm로 정해주었다(기본값은 2mm이다).마지막이 되어서야 cell을 출력해주었는데, 가장 마지막 파라미터가 1로 설정되면 색상이 채워진 cell을 그린다.각 문단을 출력하는데는 MultiCell() 메소드가 사용되었는데, 이 메소드를 사용하면 문자가 각 라인의 끝에 도달하면 자동으로 줄바꿈을 하고 현재의 cell아래에 새로운 cell을 생성한다. 글자는 기본적으로 양쪽 정렬(justified)된다.위를 보면 두 가지의 문서속성(혹은 문서정보) - 제목(SetTitle())과 작성자(SetAuthor()) - 이 정의되어있다.문서속성은 두가지 방법으로 볼 수 있는데, 하나는 Acrobat Reader에서 메인메뉴의 파일(File) -> 문서 속성(Document info) -> 설명(General)으로 가서 보는 것이고, 다른 하나는 플러그인 에서도 가능한 방법으로 세로 스크롤바 상단(화면상에선 우측 상단)의 화살표를 클릭해서 문서 속성(Document info)을 선택하는 것이다.

답글이 없습니다

트랙백 주소 : http://mygony.com/archives/105/trackback/

Leave a comment