Entwickler-Ecke

Datenbanken - pdf-Dateien aus dem Delphi Programm anschauen


Hänsel - Do 24.04.14 09:31
Titel: pdf-Dateien aus dem Delphi Programm anschauen
Ich habe mehrere .pdf Dateien welche einen eindeutigen Namen haben. Wie kann ich mit Hilfe eines Button diese mir auf dem Bildschirm anschauen? Ich habe Windows 7 und Delphi X2.


baumina - Do 24.04.14 09:55

Du kannst entweder mit ShellExecute das Standard-Anzeigeprogramm für pdf-Dateien starten, oder Du zeigst das pdf-Dokument in einem TWebBrowser an.

Beides setzt voraus, dass ein PDF-Anzeigeprogramm auf dem Rechner installiert ist.


Delete - Do 24.04.14 10:38

Es gibt noch eine dritte Möglichkeit, die voraussetzt, das der Adobe-Reader installiert ist: Erzeuge und verwende die Unit AcroPDFLib_TLB. Erzeugt man ein Package, verfügt man gar über eine Anzeige-Komponente, die zur Laufzeit wie der leibhaftige Adobe-Reader bedient werden kann.


Narses - Do 24.04.14 11:22

Moin!

Der Vollständigkeit halber: es gibt sogar native Komponenten (die dann auch die Bearbeitung erlauben), z.B. das hier: http://www.gnostice.com/pdftoolkit_vcl.asp

cu
Narses


Delete - Do 24.04.14 14:19

Guckst Du hier:
http://www.delphipraxis.net/1245493-post8.html

Es gibt mehrere Möglichkeiten, ein PDF zu öffnen:

Mit der Übergabe des Parameters open wird die Anwendung gestartet,
die unter shell/open/command bzw. shell/read/command steht.

Beispiel:

Quelltext
1:
2:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pdf\UserChoice]
"ProgId"="FoxitReader.Document"

Mit nil wird die Standardanwendung gestartet.
http://msdn.microsoft.com/de-de/library/aa559675.aspx
Diese können identisch sein.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
procedure TForm1.Button3Click(Sender: TObject);
var fn : String;
begin
fn:=ExtractFilePath(ParamStr(0)) +'test-1.pdf';
ShellExecute(0,nil,PChar(fn),NIL,NIL,SW_SHOWNORMAL);
end;

procedure TForm1.Button4Click(Sender: TObject);
var fn : String;
begin
fn:=ExtractFilePath(ParamStr(0)) +'test-1.pdf';
ShellExecute(0,PChar('OPEN'),PChar(fn),NIL,NIL,SW_SHOWNORMAL);
end;

procedure TForm1.Button5Click(Sender: TObject);
var fn : String;
begin
fn:=ExtractFilePath(ParamStr(0)) +'test-1.pdf';
webbrowser1.Navigate(fn);
end;

procedure TForm1.Button6Click(Sender: TObject);
var fn : String;
begin
fn:=ExtractFilePath(ParamStr(0)) +'test-1.pdf';
ShellExecute(0,PChar('Foxit Reader.exe'),PChar(fn),NIL,NIL,SW_SHOWNORMAL);
end;
//AcroRd32.exe
procedure TForm1.Button7Click(Sender: TObject);
var fn : String;
begin
fn:=ExtractFilePath(ParamStr(0)) +'test-1.pdf';
ShellExecute(0'open','acrord32', PChar(fn),NIL,SW_SHOWNORMAL);
end;

procedure TForm1.Button9Click(Sender: TObject); //PRINT
var fn : String;
begin
fn:=ExtractFilePath(ParamStr(0)) +'test-1.pdf';
ShellExecute(0'open','acrord32', PChar('/p /h ' + fn), nil, SW_HIDE);
end;


PARAMETER [http://www.adobe.com/devnet/acrobat/pdfs/pdf_open_parameters.pdf]
Open a PDF file: AcroRd32.exe PdfFile
Open a PDF file in a new instance of Adobe Reader: AcroRd32.exe /N PdfFile
Open a PDF file at page 7: AcroRd32.exe /A "page=7=OpenActions" PdfFile
Open a PDF file with navigation pane active, zoom out to 50%, and search for and highlight the word "batch":
AcroRd32.exe /A "zoom=50&navpanes=1=OpenActions&search=batch" PdfFile
Print a PDF file with dialog: AcroRd32.exe /P PdfFile
Print a PDF file silently: AcroRd32.exe /N /T PdfFile PrinterName [ PrinterDriver [ PrinterPort ] ]

Moderiert von user profile iconTh69: Code-Tags hinzugefügt
Moderiert von user profile iconTh69: URL-Tag korrigiert


UGrohne - Do 24.04.14 21:36

user profile iconPerlsau hat folgendes geschrieben Zum zitierten Posting springen:
Es gibt noch eine dritte Möglichkeit, die voraussetzt, das der Adobe-Reader installiert ist: Erzeuge und verwende die Unit AcroPDFLib_TLB. Erzeugt man ein Package, verfügt man gar über eine Anzeige-Komponente, die zur Laufzeit wie der leibhaftige Adobe-Reader bedient werden kann.

Wobei man aber vorsichtig sein muss, mit dieser Variante. Ich weiß nicht, wie das aktuell Adobe handhabt, aber von der 5er auf die 6er-Version hat Adobe die Schnittstelle komplett umgekrempelt, sodass sie nicht mehr kompatibel war. Deswegen bin ich damals dann auch auf TWebBrowser umgestiegen, da es das Ganze dem IE überlässt. Oder eben wie gesagt, native Komponenten.


hydemarie - So 23.06.19 23:56

Aus aktuellem Anlass hole ich das mal hoch: 2019 können doch die meisten Webbrowser (über PDF.js oder PDFium) PDF-Dateien anzeigen. Sollte Firemonkeys TWebBrowser das daher nicht auch unterstützen? Die Embarcaderowebsite gibt dazu keine Informationen her.