1. 2007.12.05 FPDF를 이용한 PHP로 PDF 만들기
  2. 2007.11.27 register_globals on 과 off 의 차이점

FPDF를 이용한 PHP로 PDF 만들기

간단한 예제를 살펴보자.
<?php
define('FPDF_FONTPATH', 'font/');
require('fpdf.php');

$pdf = new FPDF();
$pdf->p;AddPage();
$pdf->SetFont('Arial', 'B', 16);
$pdf->Cell(40, 10, 'Hello World!');
$pdf->Output();
?>
[데모보기]
첫번째 줄은 글꼴이 있는 위치를 현재 위치에 대한 상대적인 위치로 지정한 것입니다. 그 후에, fpdf 라이브러리를 포함한 후, FPDF 클래스의 인스턴스를 생성합니다. 여기에서 FPDF() 생성자는 파라미터를 기본값으로 설정합니다: 용지를 A4 세로방향으로, 측정단위를 밀리미터로. 이는 다음과 같이 표현할 수도 있습니다. 몰론, 실행결과는 같습니다.
$pdf = new FPDF('P', 'mm', 'A4');
P 대신 L을 쓰면 가로방향(landscape)으로 용지를 설정하며, 다른 용지크기(Letter 혹은 Legal)나 측정단위(pt, cm, in)를 설정할 수도 있습니다.

현재까지는 아직 페이지가 없는 상태입니다. 따라서 AddPage() 로 새 페이지를 추가해야 합니다. 좌표의 기준은 대게가 그렇듯이 왼쪽 상단을 기준으로 하고 기본값은 상단과 왼쪽에 1cm 씩 여백이 있습니다. 여백은 SetMargins() 로 변경할 수 있습니다.

글자를 출력하기 전에 반드시 SetFont() 로 글꼴을 정해줘야 합니다. 그렇지 않으면 문서가 제대로 생성되지 않습니다. 여기서는 Arial bold 16 을 값으로 줍니다.
$pdf->SetFont('Arial', 'B', 16);
이탤릭을 주려면, 'I', 밑줄을 주려면 'U' 를 주거나 그냥 공백을 넘겨서 보통 모양으로 지정할 수 있습니다. 폰트 크기의 기준은 포인트입니다. 다른 폰트로는 Times, Courier, Symbol 등을 사용할 수 있습니다.

이제 Cell() 명령으로 셀을 출력합니다. 셀이라는 것은 사각형 모양의 영역으로 텍스트를 포함할 수 있습니다. 크기나 텍스트를 지정하는 것은 물론, 경계선을 그릴 것인지 셀 다음의 현재 위치는 어떻게 정해줄 것인지(오른쪽, 아래 혹은 다음줄 맨앞) 등을 설정해줄 수 있습니다. 셀로 (경계선이 있는) 프레임을 출력하려면 다음과 같이 합니다.
$pdf->Cell(40, 10, 'Hello World !', 1);
중간정렬하는 새로운 셀을 추가하고 다음 위치를 다음줄로 옮기려면 다음과 같이 합니다.
$pdf->Cell(60, 10, 'Powered by FPDF.', 0, 1, 'C');
추가 : 줄바꿈은 Ln() 으로도 할 수 있습니다. 이 메소드는 줄바꿈의 크기도 정해줄 수 있습니다.

끝으로, Output() 으로 문서를 브라우저로 출력합니다. 파일명과 해당값을 전달하면, 파일로 저장할 수도 있습니다.

경고: PDF 문서를 출력하기 전이나 후에 다른 어떠한 출력도 있어서는 안됩니다. 만약에 PDF 문서를 출력하기 전에 다른 출력이 먼저 있었다면 다음과 같은 에러가 발생합니다. "Some data has already been output to browser, can't send PDF file" PDF 문서를 출력한 이후에 다른 출력이 있었다면, 아마도 브라우저는 빈 페이지만 표시하게 될 것입니다.


'WebDevelop > PHP' 카테고리의 다른 글

재사용성을 높인 PHP 프레임워크  (0) 2007.12.17
register_globals on 과 off 의 차이점  (0) 2007.11.27
$_FILES의 활용..  (0) 2007.11.23

register_globals on 과 off 의 차이점

register_globals = on
가능 -> $_POST['user_name'];
가능 -> $user_name;

register_globals = off
가능 -> $_POST['user_name'];
불가능 -> $user_name // 다만 extract()로 처리하면 가능
#############################################

일일이 처리하기는 사실상 굉장히 번거롭습니다.
헤더등을 담당하는 부분에서,
// php.ini 의 register_globals=off 일 경우  (php >= 4.1.0)
@extract($_GET);
@extract($_POST);
@extract($_SERVER);
위와같이 처리해주면 기존대로 사용할 수 있습니다.

'WebDevelop > PHP' 카테고리의 다른 글

FPDF를 이용한 PHP로 PDF 만들기  (0) 2007.12.05
$_FILES의 활용..  (0) 2007.11.23
정규식  (0) 2007.11.22
Return top