AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

PDF als Hilfe

Ein Thema von Sidi61 · begonnen am 1. Mai 2017 · letzter Beitrag vom 1. Mai 2017
Antwort Antwort
Seite 1 von 2  1 2      
Sidi61

Registriert seit: 13. Jun 2006
97 Beiträge
 
Delphi XE5 Professional
 
#1

PDF als Hilfe

  Alt 1. Mai 2017, 00:04
Hallo zusammen,

suche eine Möglichkeit ein PDF über ShellExecute zu öffnen und eine bestimmte Seite anzeigen zu lassen. Hier im Forum wurde das Thema schon bearbeitet, ich kontne jedoch keinen funktionierenden Aufruf für mich ableiten.

Habe mehrere Versuche durchgeführt, unter anderem sieht mein code wie folgt aus:

Delphi-Quellcode:
if ShellExecute(Application.Handle,
                 'open',
                 PChar('D:\Eigene Dateien\Delphi XE5 Projekte\Eigene Programme\KSVerleih_sql\Handbuch\KS-Verleih_Manager SQL.pdf'),
                 PChar('/A "page=2"') , nil, SW_NORMAL) <= 32 then
    ShowMessage('Es ist ein Fehler aufgetreten');
Das PDF wird zwar geöffnet, aber immer auf Seite 1. Kann hier bitte jemand ein Beispiel ableiten welches funktioniert?

Liebe Grüße
Sidi61
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#2

AW: PDF als Hilfe

  Alt 1. Mai 2017, 07:20
Moin...
Die Reihenfolge der Parameter ist wichtig.

Geht nicht:
acroRd32 "PDFFile" /A "page=3"
Geht: acroRd32 /A "page=3" "PDFFile"

Die Dokumentation sagt das auch...
http://www.adobe.com/content/dam/Ado...parameters.pdf
Delphi-Quellcode:
.
Error := ShellExecute(0, 'open', PChar('C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32'), PChar('/A "page=4" ' + '"' + PDFFile + '"'), nil, SW_SHOWNORMAL);
...es sieht danach aus das das Öffnen der speziellen Seite nur mit dem expliziten Aufruf des Readers erfolgt. Über die PDF Vernüpfung geht das nicht.
Da muß du dir den Pfad des verwendeten Readers selbst aus der Registry auslesen. Die Parameter eines anderen Readers können anders sein...
http://www.entwickler-ecke.de/topic_...t_54916,0.html


Geändert von haentschman ( 1. Mai 2017 um 07:53 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#3

AW: PDF als Hilfe

  Alt 1. Mai 2017, 13:15
Ich würde es ungefähr so versuchen (wenn es nicht der AdobeReader ist, sollte das zugeordnete Programm zumindest parameter-kompatibel sein):
Delphi-Quellcode:
uses ShellAPI;

function OpenPDFAtPage(const PDFFile: string; PageNumber: Cardinal; out ErrorCode: Cardinal): Boolean;
const
  MAX_SHELL_ERROR = 32;
var
  ReaderProg: string;
  Params: string;
begin
  Result := false;
  SetLength(ReaderProg, MAX_PATH);
  ErrorCode := FindExecutable(PChar(PDFFile), nil, PChar(ReaderProg));
  if ErrorCode > MAX_SHELL_ERROR then
    begin
      SetLength(ReaderProg, StrLen(PChar(ReaderProg)));
      Params := Format('/A "page=%d" "%s"', [PageNumber, PDFFile]);
      ErrorCode := ShellExecute(0, 'open', PChar(ReaderProg), PChar(Params), nil,
        SW_SHOW);
      if ErrorCode > MAX_SHELL_ERROR then
        begin
          ErrorCode := 0;
          Result := true;
        end;
    end;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: PDF als Hilfe

  Alt 1. Mai 2017, 13:23
PDF als Hilfe? Vor 10 Jahren hätte ich gesagt: Ja, kann man machen.

In 2017 sehe ich diese Lösung PDF + Adobe Reader als Sackgasse an. Mit Windows 10 ist die Notwendigkeit eine PDF-Betrachter zu installieren nicht mehr gegeben.
Wenn man schon nicht mehr das Windows-Standardformat CHM nutzen will, sollte man (direkt) HTML (+JS/CSS) verwenden.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Sidi61

Registriert seit: 13. Jun 2006
97 Beiträge
 
Delphi XE5 Professional
 
#5

AW: PDF als Hilfe

  Alt 1. Mai 2017, 13:54
Hallo Haentschmann,

dein Tip war Goldrichtig, habe es so umgesetzt und es funktioniert, das PDF wird mit der angegebenen Seite geöffnet.

Schön wäre es nun, wenn ich direkt auf ein Kapitel springen könnte. Was ich so gefunden habe war die Angabe /A "Chapter1" nur leider funktioniert das nicht.

Ich habe in Word ein Verzeichnis erstellt und eine automatische Nummerierung eingefügt und die Datei dann als PDF gespeichert. Klicke ich im PDF auf das Kapitel dann wird dieses direkt angesprungen. Ein direktes anspringen des Kapitels beim öffnen des PDF gelingt mir allerdings nicht. Weißt du wie ich hier den Parameter ändern muß?

Gruß
Sidi61
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

AW: PDF als Hilfe

  Alt 1. Mai 2017, 14:00
http://www.adobe.com/content/dam/Ado...parameters.pdf
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: PDF als Hilfe

  Alt 1. Mai 2017, 14:01
Ich habe in Word ein Verzeichnis erstellt und eine automatische Nummerierung eingefügt und die Datei dann als PDF gespeichert. Klicke ich im PDF auf das Kapitel dann wird dieses direkt angesprungen. Ein direktes anspringen des Kapitels beim öffnen des PDF gelingt mir allerdings nicht. Weißt du wie ich hier den Parameter ändern muß?
Adobe hat das Anspringen an ein Kapitel (Bookmark) in ihrer Api nicht vorgesehen. Du müsstest also ein Mapping "Kapitel/Bookmark = Seite" aufbauen und dann beim start die Seite mitgeben.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.633 Beiträge
 
Delphi 12 Athens
 
#8

AW: PDF als Hilfe

  Alt 1. Mai 2017, 14:22
Adobe hat das Anspringen an ein Kapitel (Bookmark) in ihrer Api nicht vorgesehen. Du müsstest also ein Mapping "Kapitel/Bookmark = Seite" aufbauen und dann beim start die Seite mitgeben.
Man könnte das aber auch mit Targets machen. Dazu müssen diese aber in der PDF Datei angelegt werden.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
741 Beiträge
 
#9

AW: PDF als Hilfe

  Alt 1. Mai 2017, 14:24
Es gibt auch named destinations
  Mit Zitat antworten Zitat
Sidi61

Registriert seit: 13. Jun 2006
97 Beiträge
 
Delphi XE5 Professional
 
#10

AW: PDF als Hilfe

  Alt 1. Mai 2017, 19:16
Hallo zusammen,

das mit den 'named destinations' habe ich mal aufgegriffen. In Word gibt es die Möglichkeit bei 'Speichern unter' die Optionen anzuklicken und dort die Option 'Textmarken erstellen mithilfe von:' einzustellen auf 'Überschriften'.

Ein so erzeugtes PDF kann nun über Bookmarks gesteuert werden, das funktioniert ganz gut - im PDF - nicht jedoch beim aufrufen des PDF.

Wenn ich nun ein Kapitel habe: '1 Kassenbuch' - gehe ich davon aus dass das Bookmark auch '1 Kassenbuch' heißt,
verwende ich nun aber '/A "nameddest=1 Kassenbuch"' dann springt er eben nicht auf den Marker.

Entweder meine Schreibweise ist falsch oder Bookmarks und named destinations sind zwei verschiedene Paar Stiefel.

Weiß hier jemand Rat??

Liebe Grüße
Sidi61
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz