Jak zobrazit a manipulovat s PDF dokumenty v Delphi aplikacích? To je dnešní téma a ukážeme si jednu z nejjednodušších metod.
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.