Entwickler-Ecke

Dateizugriff - Pdf-Datei öffnen


diego - Do 25.09.03 09:19
Titel: Pdf-Datei öffnen
hi,
gibts ne möglichkeit eine pdf datei mit delphi zu öffnen ohne das der acrobat reader installiert sein muss???

mfg diego


Licki - Do 25.09.03 09:26

Von Karlsruher zu Karlsruher, dürfte gehen, jau. ;)

Anstelle von TOleContainer (wie das normal so üblich ist, sie Microsoft Word. :D)wird das OCX-Control vom Acrobat Reader eingesetzt. Damit wird der Inhalt der ausgewählten PDF-Datei im eigenen Formular angezeigt. Das Symbol des Acrobat Readers ist während der Programmlaufzeit in der Taskbar sichtbar - das OCX-Control hat keine Active-Eigenschaft, um dieses Verhalten zu ändern. Du musst also das OCX- Control in Delphi importieren. Die OCX heißt pdf41.ocx.


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:
42:
Unit AcrobatContainerFrm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleCtnrs, ComCtrls, OleCtrls, PdfLib_TLB, ExtCtrls;

type
  TForm1 = class(TForm)
    StatusBar1: TStatusBar;
    Panel1: TPanel;
    OpenDialog1: TOpenDialog;
    Panel2: TPanel;
    Pdf1: TPdf;
    BtnOpenOCX: TButton;
    BtnCloseOCX: TButton;
    procedure BtnOpenOCXClick(Sender: TObject);
    procedure BtnCloseOCXClick(Sender: TObject);
  private
    { Private-Deklarationen}
  public
    { Public-Deklarationen}
  end;  var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.BtnOpenOCXClick(Sender: TObject);
begin
  with OpenDialog1 do
    if Execute then
      Pdf1.src := Filename;
end;

procedure TForm1.BtnCloseOCXClick(Sender: TObject);
begin
  Pdf1.src := '';
end;

end.


diego - Do 25.09.03 09:42
Titel: Re: Pdf-Datei öffnen
danke mal, und wie kann als alternative die datei noch durch den acrobat reader öffne lassen???

karlsruhe rockt!


mimi - Do 25.09.03 09:45

oder du schreibst eine einge funktion um PDF dateien zu öffnen. Mit TFileStream ist das einfach *G*


Delete - Do 25.09.03 10:05

Ja mimi. Mittlerweil dürfte das halbe Forum mitbekommen haben, dass du alles per FileStream löst. :roll:


mimi - Do 25.09.03 11:27

und was ist daran schlimm ?
TFileStream ist doch ein moderner zugrieft auf dateien oder etwa nicht ?


Delete - Do 25.09.03 11:40

Und was will ich mit der PDF Datei in dem Filestream? Selber parsen oder was?


mimi - Do 25.09.03 12:31

genau. Warum nicht ?


patrick - Mi 01.10.03 12:24

also mimi ich weiß nicht wie es dir geht aber:
ich hab besseres zu tun als die gesamte pdf referenz zu zerlegen und anschließen das ganze auch noch programtechnisch umzusetzten (abgesehen davon das das schon mehr als kompliziert ist, es handelt sich dabei ja nicht grad um ne HTML-Datei).
und sobald adobe ne neue funktion integriert siehst du wieder alt aus.

da ist mehr als umständlich!


barfuesser - Mi 01.10.03 16:00

Aber das war doch Dein Wunsch! Du wolltest eine pdf-Datei verarbeiten ohne einen Reader zu benutzen. Für alle Vorschläge - mit Ausnahme der Vorschläge von mimi - benötigst Du aber einen externen Reader.

barfuesser


Delete - Mi 01.10.03 16:24

barfuesser hat folgendes geschrieben:
Aber das war doch Dein Wunsch!barfuesser

diego <> patrick. Oder ist das sein Zweitname?


barfuesser - Mi 01.10.03 16:38

patrick hat folgendes geschrieben:
ich hab besseres zu tun als die gesamte pdf referenz zu zerlegen ...

Ich habe nicht so auf die Namen geachtet und aus dem angegebenen Text geschlossen, daß er der Poster wäre. :oops: Sorry für die Verwechslung!

barfuesser


patrick - Do 02.10.03 09:21

MathiasSimmack hat folgendes geschrieben:
barfuesser hat folgendes geschrieben:
Aber das war doch Dein Wunsch!barfuesser

diego <> patrick. Oder ist das sein Zweitname?

ich hab eine gespaltene persönlichkeit :shock:

@thekenhänder ähh barfuesser :tongue:
alles vergessen und verziehen


traudl - Di 12.10.04 14:12

Hallo,

habe das Beispiel von Licki probiert habe aber das Problem, daß es nur mit installiertem Reader läuft. Ich weis nicht wie ich das Modul mit eincompilieren kann.

Kann mir jemand helfen ?? :?:


Delete - Di 12.10.04 14:37

Das Modul wird so oder so den installieren Adobe Acrobate Reader benötigen.


traudl - Di 12.10.04 15:58

Also ohne den Reader geht es nicht. Hab ich wohl missverstanden. Aber bin ich auf diese Art " Versionsfrei? ". Würde mir sehr viel Mühe sparen

Gruß Udo


:roll:


jasocul - Di 12.10.04 16:04

Ich benutze das OCX auch. Und hier im Haus ist es offensichtlich egal, welche Version vom Reader am Arbeitsplatz installiert ist. Getestet von Version 5.0 bis 6.0.


SchelmVomElm - Di 12.10.04 16:06

Wo ist denn die Datei PdfLib_TLB her??


jaenicke - Di 12.10.04 16:07

PdfLib.dll oder PdfLib.ocx (weiß ich grad nicht...) importiert. Die _TLB Datei wird automatisch erstellt.


jasocul - Di 12.10.04 16:08

Wird meines Wissens beim Einbinden des OCX in Delphi automatisch erzeugt. Bitte korrigiert mich, wenn das falsch ist.


traudl - Mo 18.10.04 20:43

Hallo Leute,
das OCX geht auch mit Reader V4, habs getestet. Nun habe ich aber das Problem, daß ich zwar die Form schliesen kann, aber wenn ich eine andere Datei öffne, zeigt er mir nix an und wenn ich das gleiche Dokument öffne nach dem dritten mal auch nicht mehr. Und wenn ich das Prog beende, bringt er mir "Exception EAccessViolation in Modul pdf.ocx ...

:roll: