Ich bau mir für solche Zwecke immer ein Formular mit der TWebBrowser-Komponente, dass ich modal anzeige. Sobald das Formular geschlossen wird, lösche ich die temporäre Datei wieder. Der Parameter aUrl im Konstruktor enthält Dateinamen inkl. Pfadangabe der temporären PDF-Datei.
Die Formular-Implementation sieht dann so aus:
Delphi-Quellcode:
type
TfrmBrowser = class(TForm)
webBrowser: TWebBrowser;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private-Deklarationen }
FUrl : string;
public
{ Public-Deklarationen }
constructor Create (aOwner: TComponent; const aUrl: string);
end;
var
frmBrowser: TfrmBrowser;
implementation
{$R *.dfm}
{ TfrmBrowser }
constructor TfrmBrowser.Create(aOwner: TComponent; const aUrl: string);
begin
inherited Create (aOwner);
FUrl := aUrl;
end;
procedure TfrmBrowser.FormClose(Sender: TObject; var Action: TCloseAction);
begin
// Hier wird der Browser vom PDF-Dokument getrennt!!! Ansonsten kann die
// Webbrowser-Komponente ggf. hängen.
Hide;
webBrowser.Navigate('about:blank');
while webBrowser.Busy do
Application.ProcessMessages;
end;
procedure TfrmBrowser.FormShow(Sender: TObject);
begin
webBrowser.Navigate (FUrl);
end;