>  기사  >  백엔드 개발  >  PHP로 PDF 문서 생성기를 작성하는 방법

PHP로 PDF 문서 생성기를 작성하는 방법

WBOY
WBOY원래의
2016-08-08 09:33:32954검색

PHP로 PDF 문서 생성기를 작성하는 방법

PHP의 가장 큰 장점 중 하나는 새로운 기술을 지원하기가 매우 쉽다는 점입니다. 이 언어의 확장성은 개발자가 쉽게 새로운 모듈을 추가할 수 있게 하며, 전 세계 기술 그룹의 지원과 많은 확장 모듈의 지원으로 인해 PHP가 가장 완벽한 기능을 갖춘 웹 프로그래밍 언어 중 하나가 되었습니다. 현재 사용 가능한 확장 모듈을 사용하면 개발자는 IMAP 및 POP3 작업을 수행하고, 이미지 및 Shockwave Flash 애니메이션을 동적으로 생성하고, 신용 카드 확인을 수행하고, 중요한 데이터를 암호화 및 해독하고, xml 형식으로 데이터를 구문 분석할 수 있습니다. 하지만 이것이 전부는 아닙니다. 이제 PHP에 바인딩할 수 있는 새로운 모듈, 즉 개발자가 PDF(Adobe Portable Document Format) 형식으로 파일을 동적으로 생성할 수 있도록 하는 PDFLib 확장 모듈을 살펴보겠습니다. 먼저 PHP에서 이 모듈을 사용하는 방법을 살펴보세요.

PHP가 PDF 형식 문서를 작동할 수 있도록 하려면 먼저 시스템에 PDFLib 확장 라이브러리를 설치해야 합니다. Lunix 시스템을 사용하는 경우 http://www.pdflib.com/pdflib/index에서 다운로드할 수 있습니다. Windows 시스템을 사용하는 경우에는 컴파일된 PDFLib 라이브러리를 다운로드한 다음 PHP 구성 파일에서 해당 줄의 주석을 제거하기만 하면 됩니다.


확장자=php_pdf.dll


동적 로딩인 경우 다음 명령을 참조할 수도 있습니다.


dl("php_pdf.dll");


또한 PDF 형식을 보려면 Adobe Acrobat PDF 리더가 있어야 합니다. 없는 경우 http://www.adobe.com/에서 무료로 다운로드할 수 있습니다.

사전 준비가 완료되면 PDF 파일을 만들 수 있습니다. 다음은 간단한 예입니다.


//새 PDF 문서 핸들 생성

$pdf = PDF_new();


//파일 열기

PDF_open_file($pdf, "PDFTest.pdf");


// 새 페이지 시작(A4)

PDF_begin_page($pdf, 595, 842);


// 글꼴 개체를 가져와 사용합니다.

$arial = PDF_findfont($pdf, "Arial", "호스트", 1);

PDF_setfont($pdf, $arial, 10);


//텍스트 출력

PDF_show_xy($pdf, "이것은 PDF 문서에 대한 시험입니다. 좋은 Lib입니다.",50, 750);

PDF_show_xy($pdf, "원하신다면 직접 시도해 보세요!", 50, 730);


//끝 페이지

PDF_end_page($pdf);


// 파일을 닫고 저장합니다.

PDF_close($pdf);

?>

그런 다음 이를 PHP 파일로 저장하고 브라우저에서 찾아보세요. PHP는 위 코드를 실행하여 새 PDF 파일을 생성하고 지정된 위치에 저장합니다.

이제 코드를 분석해 보겠습니다. PHP를 사용하여 PDF 파일을 만드는 방법은 다음과 같습니다. 1. 문서 핸들을 만듭니다. 2. 문서의 글꼴과 색상을 등록합니다. 3. PDFLib에서 제공하는 기능을 사용하여 텍스트를 작성합니다. 4. 문서를 저장합니다.

먼저 다음 구문을 사용하여 PDF 문서 핸들을 만듭니다.


$pdf = PDF_new();


이 작업은 모든 후속 작업에서 사용되는 PDF 문서에 대한 핸들을 반환하는 PDF_new() 함수에 의해 완료됩니다.

다음 단계는 PDF_open_file() 함수에 의해 PDF 파일에 이름을 지정하는 것입니다. 이 작업에는 이전에 생성된 파일 핸들과 사용자 정의 파일 이름이 매개변수로 필요합니다.


PDF_open_file($pdf, "PDFTest.pdf");


문서를 생성한 후에는 PDF_begin_page() 함수를 사용하여 새 페이지를 삽입할 수 있습니다.


PDF_begin_page($pdf, 595, 842);


그런 다음 PDF_end_page()로 페이지를 종료합니다.

PDF_begin_page() 함수에는 각각 페이지 크기의 너비와 높이를 나타내는 두 가지 매개변수가 있습니다. 단위는 포인트입니다(포인트, 1포인트는 1/72인치와 같습니다). 여기서의 장점은 PHP가 A4 등과 같은 대부분의 표준 페이지 크기도 제공한다는 것입니다. 위의 예에서는 A4 크기를 사용합니다.

PDF_begin_page() 함수와 PDF_end_page() 함수 호출 사이의 코드는 PDF 문서에 내용을 기록합니다. 내용은 텍스트, 이미지, 기하학적 도형 등이 될 수 있습니다. 예제에서는 텍스트 한 줄을 쓰고 먼저 글꼴을 가져온 다음 텍스트를 문서에 씁니다. PDF_findfont() 및 PDF_setfont() 함수를 통해 글꼴을 선택하고 등록하는 것이 매우 편리합니다. PDF_findfont() 함수는 문서에 사용할 글꼴을 준비합니다. 필수 매개변수에는 글꼴 이름, 사용된 인코딩 및 글꼴을 PDF 파일에 포함해야 하는지 여부입니다. PDF_findfont() 함수는 PDF_setfont() 함수에서 사용될 글꼴 객체를 반환합니다.


$arial = PDF_findfont($pdf, "Arial", "호스트", 1);

PDF_setfont($pdf,$arial, 10);


글꼴을 설정한 후에는 PDF_show_xy() 함수를 사용하여 페이지의 지정된 위치에 문자열을 쓸 수 있습니다.


PDF_show_xy($pdf, "이것은 PDF 문서에 대한 시험입니다. 좋은 Lib입니다.",50, 750);

PDF_show_xy($pdf, "원하신다면 직접 시도해 보세요!", 50, 730);


PDF_show_xy() 함수는 페이지에 내용을 쓰는 데 사용됩니다. 마지막 두 매개변수는 쓰여질 문자열의 좌표 위치입니다. 좌표의 원점(0, 0)은 문서의 왼쪽 하단에 있습니다. . 텍스트가 완성되면 PDF_end_page()로 페이지를 닫을 수 있으며, 물론 더 많은 페이지를 작성할 수도 있습니다. 모든 페이지를 작성한 후 PDF_close() 함수를 사용하여 문서를 닫습니다. 이때 PDF_open_file() 함수 호출 시 지정한 파일명과 경로에 문서가 저장되며 문서 핸들은 파기됩니다.

PDFLib 라이브러리는 그 이상을 수행할 수 있습니다. 이전 파일을 예로 들어 다음 명령문은 이미지 추가 기능을 구현합니다.


$image = PDF_open_image_file($pdf, "jpeg", "PDFImageTest.jpg");

PDF_place_image($pdf, $image, 50, 650, 0.25);


아주 간단하지 않나요? PDF_open_image_file() 함수는 그래픽 파일을 엽니다. 허용되는 이미지 유형은 GIF, JPEG, TIFF 및 PNG입니다. 이 함수는 이미지 핸들을 사용하여 PDF 문서에 이미지를 삽입합니다. . 여기서 좌표 위치는 이미지의 왼쪽 하단을 나타냅니다. 마지막 매개변수는 이미지가 표시될 때의 배율입니다. 1은 실제 크기로 표시되고, 0.5는 원래 크기의 절반으로 표시됨을 의미합니다. .

PDF 모듈은 PDF 문서에 기존 이미지를 그리는 것 외에도 기하학적 도형을 그릴 수 있는 많은 기능을 제공합니다. 예: 직선, 원, 직사각형 등과 같은 기하학적 패턴. 직선을 그리는 방법은 다음과 같습니다.


$pdf = PDF_new();

PDF_open_file($pdf, "LineExam.pdf");

PDF_begin_page($pdf, 595, 842);

$arial = PDF_findfont($pdf, "Arial", "호스트", 1);

PDF_setfont($pdf, $arial, 12);


//직선의 색상을 설정합니다.

PDF_setcolor($pdf, "획", "rgb", 0, 0, 0);


//왼쪽 상단에 로고 배치

$image = PDF_open_image_file($pdf, "jpeg", "logo.jpg");

PDF_place_image($pdf, $image, 50, 785, 0.5);


//로고 아래에 직선을 그립니다.

PDF_moveto($pdf, 20, 780);

PDF_lineto($pdf, 575, 780);

PDF_스트로크($pdf);


//페이지 하단에 또 다른 직선을 그립니다.

PDF_moveto($pdf, 20,50);

PDF_lineto($pdf, 575, 50);

PDF_스트로크($pdf);


// 일부 텍스트 출력

PDF_show_xy($pdf, "멩의 회사", 200, 35);

PDF_end_page($pdf);

PDF_close($pdf);

?>

위의 예에서 볼 수 있듯이 직선을 그리려면 PDF_moveto(), PDF_lineto() 및 PDF_Stroke()의 세 가지 함수만 필요합니다. 위의 예는 먼저 PDF_moveto($pdf, 20, 780) 함수를 사용하여 커서를 좌표(20, 780)로 이동한 다음 PDF_lineto($pdf, 575, 780) 함수를 사용하여 좌표를 정의하는 것입니다. 직선(575, 780)의 또 다른 점을 지정하고 마지막으로 PDF_Stroke($pdf)를 사용하여 선을 그립니다. 색상을 설정하는 함수 PDF_setcolor($pdf, "Stroke", "rgb", 0, 0, 0)에는 여러 매개변수가 있습니다. 색상 채우기 모드에는 획, 채우기 및 둘 다의 세 가지 옵션이 있습니다. CMYK. 색 구성표의 색상 값입니다. PDF_setcolor() 함수에 사용되는 값은 색상의 밝기인 색상의 백분율이라는 점에 유의할 필요가 있습니다. 예를 들어 빨간색(RGB: 255, 0, 0)으로 설정하려는 경우 다음과 같이 쓸 수 있습니다: PDF_setcolor($pdf, "Stroke", "rgb", 1, 0, 0), 노란색으로 설정하려면 다음과 같이 할 수 있습니다: PDF_setcolor($pdf, "Stroke", "rgb" , 1, 1, 0).


채워진 직사각형과 원을 그리려면 다음 방법을 사용하십시오.


//채우기 색상 설정

PDF_setcolor($pdf, "채우기", "rgb", 1, 1, 0);


//테두리선 색상 설정

PDF_setcolor($pdf, "획", "rgb", 0, 0, 0);


//사각형을 그립니다. 다음 4개의 매개변수는 왼쪽 하단 모서리의 X, Y 좌표, 너비 및 높이입니다.

PDF_ect($pdf, 50, 500, 200, 300);

PDF_fill_Stroke($pdf);

PDF_setcolor($pdf, "채우기", "rgb", 0, 1, 0);

PDF_setcolor($pdf, "획", "rgb", 0, 0, 1);


//원을 그립니다. 매개변수는 중심 좌표와 원의 반경입니다.


PDF_circle($pdf, 400, 600, 100)


또한 PDFLib은 문서 요약 정보를 작성하는 기능도 제공합니다. 이 기능에는 문서 작성자, 제목, 내용, 제목 등이 포함될 수 있습니다. 다음은 일반적으로 사용되는 몇 가지 기능입니다.


PDF_set_info_author($pdf, "net_lover");

PDF_set_info_creator($pdf, "맹선회");

PDF_set_info_title($pdf, "PHP 시험");

PDF_set_info_subject($pdf, "PHP");

PDF_set_info_keyWords($pdf, "PHP PDF PDFLib");


이러한 문서를 Acrobat Reader로 열면 "파일" - "문서 속성" - "요약" 메뉴에서 위에 쓰여진 정보를 볼 수 있습니다.

이렇게 말하면서 나는 모든 사람이 PDFLib을 사용하여 PDF 문서를 만드는 방법에 대한 기본적인 이해를 가지고 있다고 믿습니다. 아래에서는 실제적인 예를 들어 이것이 우리 작업에 어떻게 도움이 되는지 살펴보겠습니다. 이 예제는 제공된 데이터를 기반으로 파이 차트를 생성하는 것입니다. 먼저 데이터 입력 폼을 생성하고 파이 차트에 각 조각의 크기를 입력합니다. 파일은 다음과 같습니다:


<머리>

PHP를 사용하여 PDF 문서(원형 차트) 만들기

<본문>

원형 차트 생성기


다음은 Pie.php 파일의 코드입니다.


//라이브러리 수락

$data = $_POST['데이터'];

$슬라이스 = 폭발(",", $data);


//변수 초기화

$합계 = 0;

$도 = 배열();

$직경 = 200;

$반경 = $직경/2;


//각 파이 차트의 색상을 설정하고 배열에 저장합니다.

$색상 = 배열(배열(0,0,0),배열(0,0,1),배열(0,1,0),

배열(1,0,0), 배열(0,1,1), 배열(1,1,0),

배열(1,0,1));


// 총 가치를 계산합니다.

$sum = array_sum($slices);


// 각 조각을 해당 백분율로 변환합니다(360도 원).

for ($y=0; $y

$degrees[$y] = ($slices[$y]/$sum) * 360;

}


// PDF 문서 생성 시작

$pdf = PDF_new();

PDF_open_file($pdf, "차트.pdf");

PDF_begin_page($pdf, 500, 500);

PDF_setcolor($pdf, "획", "rgb", 1, 1, 0);

PDF_moveto($pdf, 250, 250);

PDF_lineto($pdf, 350, 250);

PDF_스트로크($pdf);


for ($z=0; $z

{

//채우기 색상 설정

PDF_setcolor($pdf, "채우기", "rgb", $colours[$z][0],

$colours[$z][1], $colours[$z][2]);


// 각 호의 끝점 좌표를 계산합니다.

$end_x = round(250 + ($radius * cos($last_angle*pi()/180)));

$end_y = round(250 + ($radius * sin($last_angle*pi()/180)));


// 각 호를 직선으로 분할합니다.

PDF_moveto($pdf, 250, 250);

PDF_lineto($pdf, $end_x, $end_y);


// 호를 계산하고 그립니다.

PDF_arc($pdf, 250, 250, $radius, $last_angle,($last_angle+$degrees[$z]));


//마지막 각도 저장

$last_angle = $last_angle+$degrees[$z];


// 색상 채우기

PDF_fill_Stroke($pdf);

}


//바깥쪽 원 윤곽선을 다시 그립니다.

PDF_circle($pdf, 250, 250, 100);

PDF_스트로크($pdf);


PDF_end_page($pdf);

PDF_close($pdf);


//클라이언트에 직접 출력하고 싶다면 다음 코드를 추가하세요.

$buf = PDF_get_buffer($p);

$len = strlen($buf);

header("콘텐츠 유형: 애플리케이션/pdf");

header("콘텐츠 길이: $len");

header("콘텐츠 처리: 인라인; 파일 이름=Pie_php.pdf");

PRint $buf;

PDF_delete($p);

?>

위 프로그램을 실행하고 다른 값을 입력하면 다른 원형 차트가 표시됩니다.

PDFLib은 PHP로 작성할 수 있을 뿐만 아니라 java, C#, VB.NET, VB5/6(ActiveX/COM), asp(VBScript/Jscript), Borland Delphi, Windows Script를 사용할 수 있는 모듈입니다. Host , ColdFusion4.5+, C/C++, Python, Perl, RPG; 지원되는 플랫폼은 Windows뿐만 아니라 Unix/linux, Mac OS, IBM eServer iSeries 400 및 zSeries S/390 등입니다. 특정 운영 환경에 대해 문의하십시오. 최신 정보를 보려면 해당 웹사이트를 방문하십시오.

위 내용은 관련 측면을 포함하여 PHP를 사용하여 PDF 문서 생성기를 작성하는 방법을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
원형 차트에 각 조각의 데이터 값을 (,)로 구분하여 입력하세요.
<입력 유형=텍스트 이름=데이터>