Autor Beitrag
Miss Schlumpfine
Hält's aus hier
Beiträge: 3

WIN 2000
Delphi 6
BeitragVerfasst: Mi 09.08.06 16:21 
Halllöööchen,

ich hab ein Problem mit der Anwendung von ActiveX/AcroPDF.
Öffnen lässt sich die gewünschte PDF mit
ausblenden Delphi-Quelltext
1:
myPDF70.LoadFile('gewuenschteFile.pdf');					


Aber nun möchte ich an eine gewünschte Stelle im Dokument Springen.
Dies soll laut Doku folgendermaßen ablaufen:
Zitat:
SetNamedDest
void setNamedDest(BSTR szNamedDest);
Description
Changes the page view to the named destination in the specified string.
szNamedDest = The named destination to which the viewer will go.


Allerdings wird beim Öffnen des PDF die zuletzt angezeigte Seite geöffnet.
Sprich, die Zeile wird ausgeführt, jedoch die Anweisung wird nicht befolgt.

Hier mein Source zum Einblick (mit hoffentlich hilfreichen Kommentaren) :wink: :

ausblenden volle Höhe 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:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
 unit GoToAcro_Set; 

interface 

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

type 
  TForm1 = class(TForm) 
    procedure FormCreate(Sender: TObject); 
  private 
    { Private-Deklarationen } 
  public 
    { Public-Deklarationen } 

    aPDF_myPDF70                       : TAcroPDF; 
    b_myPDF70Created                   : boolean; 
    s_param_Document, s_param_Location : string

  end

var 
  Form1: TForm1; 

implementation 

{$R *.dfm} 

procedure TForm1.FormCreate(Sender: TObject); 
begin 
// einlesen der eingegebenen Parameter aus der Eingabeaufforderung
s_param_Document := Paramstr(1); // zu öffnendes PDF File
s_param_Location := ParamStr(2); // gewünschte, anzuzeigende Seite oder Springpunkt im Lesezeichen 

try 
   
   // erstellen der komponente TACroPDF
   aPDF_myPDF70        := TAcroPDF.Create(self); 
   // Ausrichten auf der Form
   aPDF_myPDF70.Parent := Form1; 
   aPDF_myPDF70.Align  := alclient; 
   aPDF_myPDF70.setViewScroll('Fit',10.0); 
   
   // Öffnen des gewünschten PDF Files 
   aPDF_myPDF70.LoadFile(s_param_Document); 
   
   // wenn eine Zahl, sprich gewünschte Seite angegeben wurde
   if (s_param_Location >= '0'and (s_param_Location <= '9'then 
     // dann über "setCurrentPage" auf die Seite springen
     // !! funktioniert
     aPDF_myPDF70.setCurrentPage(strtoint(s_param_Location)) 
     else 
       // wenn Springpunkt im Lesezeichen angegeben wurde, dann über "setnameddest" die Seite mit...
       // ... dem Springpunkt anzeigen
       // !!!!hier liegt das Problem. Es wird nicht ausgeführt!!! 
       aPDF_myPDF70.setNamedDest(s_param_Location); 

   b_myPDF70Created := true; 

  except 

    b_myPDF70Created := false; 
    aPDF_myPDF70.Free; 
    ShowMessage('Keine gültigen Parameter'); 

  end

end

end.


Kann mir jemand sagen woran dies liegen kann....
bin hier schon total am verzweifeln :?

LG Miss Schlumpfine :D

_________________
Die drei natürlichen Feinde des Programmierers:
Sonnenlicht, Frischluft und das unerträgliche Gebrüll der Vögel
Miss Schlumpfine Threadstarter
Hält's aus hier
Beiträge: 3

WIN 2000
Delphi 6
BeitragVerfasst: Do 10.08.06 11:49 
Ich sollte noch kurz erläutern, wie man mein Source in einem Delphi - Projekt einbinden kann. :lol:
Die .dll "AcroPDFLib_TLB" muss erst eingebunden werden, damit das Programm läuft.
Die Anleitung hierzu findet ihr unter:

www.devblog.de/index...hives/2004/12/29/15/

Vielleicht wisst ihr ja jetzt weiter, da ich mit meinem Problem noch kein Stück weiter bin... :oops:

LG
Miss Schlumpfine :D

_________________
Die drei natürlichen Feinde des Programmierers:
Sonnenlicht, Frischluft und das unerträgliche Gebrüll der Vögel
Miss Schlumpfine Threadstarter
Hält's aus hier
Beiträge: 3

WIN 2000
Delphi 6
BeitragVerfasst: Di 15.08.06 07:58 
So, hallöchen nochmal,

habe das Problem jetzt gelöst und wollte diejenigen, die evtl das selbe Poblem haben mal auf die Sprünge helfen :D

Undzwar habe ich das Problem mit ShellExecute gelöst. Habe herausgefunden, dass man im Adobe Reader eigene unsichtbare Springpunkte einfügen kann, die mit "setNamedDest" angesprochen werden können.

ShellExecute(Handle,'open', PChar('AcroRd32.exe'), PChar('/A "nameddest=''NameSpringpunkt' +'" "'+'NamePDFDokument+'"'),nil, SW_NORMAL); :wink:

LG Schatzy :D

_________________
Die drei natürlichen Feinde des Programmierers:
Sonnenlicht, Frischluft und das unerträgliche Gebrüll der Vögel