Živě.cz o počítačích a internetu

Tipy a triky v Delphi, díl 128. – Práce s PDF

Jan Šindelář - 3.3.2004

Delphi nám celkem pochopitelně nenabízejí žádné vhodné komponenty pro práci s PDF soubory, takže si musíme poradit sami. Máme na vybranou ze dvou variant. První možností je použít nějakou cizí komponentu (cizí v tom smyslu, že nemá nic společného s Adobe) nebo si případně vytvořit vlastní, které se pokusí formát PDF načíst pomocí vlastních algoritmů a technik. Toto řešení může být poměrně pracné (pokud ho budeme vytvářet sami) a navíc výsledek nemusí být za každých okolností úplně ideální. Výhodou je naopak to, že náš program bude zcela nezávislý na ostatních programech, které jsou v počítači uživatele nainstalovány. Druhé řešení totiž počítá s tím, že uživatel má nainstalovánu některou aplikaci od Adobe, která s PDF umí pracovat (stačí pochopitelně i běžný Acrobat Reader). Do Delphi si importujeme příslušnou ActiveX knihovnu a následné použití pak už bude velmi snadné. Výhodou je 100% kompatibilita (protože využijeme přímo zdroj od Adobe), ale uživatel musí mít na svém počítači nainstalován Acrobat Reader. To zase není takový problém, když je dnes formát PDF jedním z nejběžnějších multiplatformních formátů a prohlížeč Acrobat Reader je ke stažení zdarma.

Postup bude tedy následující. V hlavním menu Delphi zvolíme položku Component a zde Import ActiveX Control. V seznamu najdeme položku Acrobat Control for ActiveX a stiskneme tlačítko Install. Dále se postup podobá běžné instalaci komponent. Určíme ještě, kam se má knihovna nainstalovat a je hotovo. Na záložce ActiveX (pokud jsme během instalace nezvolili jinou) pak najdeme novou komponentu Pdf.

Na prázdný formulář tuto novou komponentu umístíme a můžeme upravit některé její parametry počínaje rozměrem komponenty, protože komponenta je samozřejmě vizuální. A to je v podstatě vše. Ještě přidáme na formulář tlačítko, které se postará o načtení souboru. Můžete pochopitelně použít i OpenDialog, který jsme zde pro jednoduchost vynechali. Bližším zkoumáním dalších parametrů a metod této komponenty zjistíte, že ovládat lze prakticky vše od samotné navigace po dokumentu, jeho zvětšení, tisk a podobně. Ovlivnit se dá i vzhled zobrazeného dokumentu. Viditelná plocha totiž neobsahuje jen samotný text, ale i ovládací prvky známé z Acrobat Readeru. V Delphi pak můžeme jednotlivé prvky (jako je např. toolbar) vypnout, což je naznačeno ve zdrojovém kódu.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, PdfLib_TLB, StdCtrls;

type
  TForm1 = class(TForm)
    Pdf1: TPdf;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Pdf1.LoadFile(`test.pdf`);
  Pdf1.setShowToolbar(false);
  Pdf1.setShowScrollbars(false);
end;

end.

Tímto způsobem tak můžeme snadno do našich aplikací implementovat podporu PDF formátu. Malá vada na kráse je bohužel to, že při aktivaci tlačítka pro načtení souboru a inicializaci ActiveX knihovny dojde k zobrazení startovací obrazovky Acrobat Readeru, ale to je jen drobný detail.