PHP

Kurz PHP (23.)

Úvodem  |  Kurz PHP |  Odkazy  |  Aplikace  |  Otázky a odpovědi

 

Generování PDF pomocí PHP

V dnešním díle si povíme o generovaní PDF dokumentů pomocí PHP. Pomocí PDF můžeme generovat jak jednoduché dokumenty, tak složité dokumenty jako například ceníky, faktury apod. Ty můžeme následně zasílat našim uživatelům, společníkům i zákazníkům. Existuje mnoho způsobů, jak generovat PDF dokumenty. My si v dnešním díle ukážeme, jak generovat tyto dokumenty pomocí knihovny FPDF, která je k dispozici narozdíl od jiných zdarma.

Instalaci provedeme rozbalením zip archivu (naleznete jej v sekci download) do určitého adresáře. V adresáři font nalezneme několik již připravených fontů, které můžeme využívat v PDF dokumentech. Pokud by nám tyto fonty nevyhovovaly, můžeme využít další TTF fonty.

My nyní začneme jednoduchým příkladem, ve kterém si vysvětlíme jednotlivé postupy při práci s touto PDF knihovnou.


<?
define('FPDF_FONTPATH','./font/');
require('./fpdf.php');

$pdf=new FPDF();
$pdf->Open();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output();
?>

Jako první si musíme nadefinovat konstantu FPDF_FONTPATH, která slouží k uložení cesty k již zmíněným fontům. Po vložení souboru obsahujícího PDF třídu můžeme vytvořit její instanci. K tomu slouží následující konstruktor:

FPDF([string orientace [, string jednotka [, mixed formát]]])

  • orientace - umožňuje nastavit orientaci stránky. Mezi hodnoty, které můžeme dosadit patří:
    • P - klasické uspořádání na výšku.
    • P - uspořádání na šířku.
  • jednotka - jedná se o jednotku míry v dokumentu. Dosadit můžeme:
    • pt - bod
    • mm - milimetr
    • cm - centimetr
    • in - palec
  • formát - formát stránky. Dosadit opět můžeme hodnoty:
    • A3
    • A4
    • A5
    • Letter
    • Legal

Příklad:


// Vytvoříme nový A4 dokument postavený na výšku s jednotkou milimetr.
$pdf=new FPDF('P', 'mm', 'A4');

Nyní již můžeme přidávat jednotlivé stránky. K tomuto úkonu slouží metoda AddPage, která má jeden nepovinný parametr - orientaci stránky. Dosadit opět můžeme hodnoty "P" nebo "L". Výchozí hodnotou je ta, která je nastavena v konstruktoru třídy.

Příklad:


// Přidáme do PDF dokumentu novou stránku.
$pdf->AddPage();

Okraje dané stránky můžeme nastavit pomocí metody SetMargins:

SetMargins(float levý, float horní [, float pravý])

Jako výchozí hodnota je 1 cm.

Příklad:


// Nastavíme okraje stránky.
$pdf->SetMargins(2, 3, 2);

Předtím, než budeme něco zapisovat do dokumentu, musíme nastavit font, který budeme používat.

SetFont(string font [, string styl [, float velikost]])

  • font - jedná se o druh fontu. Dosadit můžeme ty fonty, které máme k dispozici v nadefinovaném adresáři s fonty. Mezi ty nejhlavnější patří například:
    • Courier
    • Arial nebo Helvetica
    • Times
  • styl - umožňuje nastavit styl písma. Můžeme dosadit:
    • B - tučné písmo.
    • U - podtržené písmo.
    • I - kurzíva.
    • Různé další kombinace ("BUI", apod.).
  • velikost - nastavuje velikost zvoleného písma.

Příklad:


// Nastavíme font na Arial, velikost 16, tučný a kurzíva.
$pdf->SetFont("Arial", "BI", 16);

Jakmile budeme mít nastaven druh fontu, musíme vytvořit oblast, do které vepíšeme náš text pomocí metody Cell:

Cell(float šírka [, float výška [, string text [, mixed ohraničení [, int ln [, string zarovnání [, int výplň [, mixed link]]]]]]])

  • šířka - šířka textového objektu.
  • výška - výška textového objektu.
  • text - text, který bude vepsán do tohoto textového objektu.
  • ohraničení - umožňuje nastavit ohraničení. Dosadit můžeme:
    • 0 - žádné ohraničení
    • 1 - ohraničení rámem.
  • ln - určuje, kde bude pozice pro další vkládání objektu:
    • 0 - umístění vpravo.
    • 1 - umístění na začátek další řádky.
    • 2 - umístění pod tento objekt.
  • zarovnání - umožňuje vycentrování nebo zarovnání textu. Dosadit můžeme:
    • L - zarovnání vlevo (výchozí hodnota).
    • C - umístění na střed.
    • R - zarovnání vpravo.
  • výplň - určuje, zda má použít (hodnota 1) nebo nemá použít (hodnota 0) barvu pozadí.
  • link - představuje URL nebo identifikátor vrácený metodou AddLink (o ní si povíme později).

Příklad:


// Vytvoříme textové pole se zadanými parametry.
$pdf->Cell(20,10,'Testovací text',1,1,'C'); 

Nyní, když máme vytvořenou "základní" strukturu našeho PDF dokumentu, můžeme jej zpracovat a zobrazit výsledek. Výsledkem může být text, soubor vytvořený na disku nebo soubor odeslaný ke stažení prohlížeči. K tomuto všemu slouží metoda:

Output([string jméno [, string cíl]])

  • jméno - jméno souboru, který bude vytvořen.
  • cíl - označuje cíl, kam bude soubor odeslán:
    • I - odeslání přímo do prohlížeče. Objeví se dialog "Uložit jako...".
    • D - odeslání přímo do prohlížeče k otevření pod zvoleným názvem.
    • F - uložení do aktuálního adresáře (adresář musí mít práva zápisu).
    • S - vrátí dokument jako text.

Příklad:


// Odešleme soubor prohlížeči k otevření.
$pdf->Output("MojePDF.pdf", "D"); 

Mezi další možnosti patří také vytvoření záhlaví, zápatí a vkládání obrázků. Záhlaví a zápatí můžeme vytvořit tak, že si vytvoříme novou třídu, která zdědí metody a proměnné třídy FPDF. Tuto novou třídu doplníme o metody Header a Footer.


<?php
define('FPDF_FONTPATH','font/');
require('fpdf.php');

// Vytvoříme naši novou třídu
class PDF extends FPDF
{
	function Header()
	{
	    // Obsah záhlaví
	}
	function Footer()
	{
	    // Obsah zápatí
	}
}

// Instance naší nové třídy
$pdf=new PDF();
$pdf->AddPage();
.....
$pdf->Output();
?>

Pro vkládání obrázků slouží metoda Image:

Image(string soubor, float x, float y [, float w [, float h [, string typ [, mixed link]]]])

  • soubor - určuje jméno (cestu) k souboru, který chceme vložit do dokumentu.
  • x - x-ová souřadnice levého horního rohu.
  • y - y-ová souřadnice levého horního rohu.
  • w - šířka obrázku (nemusí být zadána, je automaticky vypočtena).
  • h - výška obrázku (nemusí být zadána, je automaticky vypočtena).
  • typ - typ obrázku (JPG, JPEG, atd.). Je automaticky zjištěn pomocí koncovky souboru.
  • link - představuje URL nebo identifikátor vrácený metodou AddLink (o ní si povíme později).

Příklad:


// Odešleme soubor prohlížeči k otevření.
$pdf->Image("logo.jpg", 10, 10); 

Pro tento díl to bude vše. V příštím díle budeme dále pokračovat v pokročilém generování PDF dokumentů.

 

Petr Rympler