![]() |
PDF als Hilfe
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:
Das PDF wird zwar geöffnet, aber immer auf Seite 1. Kann hier bitte jemand ein Beispiel ableiten welches funktioniert?
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'); Liebe Grüße Sidi61 |
AW: PDF als Hilfe
Moin...:P
Die Reihenfolge der Parameter ist wichtig. :zwinker: Geht nicht: acroRd32 "PDFFile" /A "page=3" Geht: acroRd32 /A "page=3" "PDFFile" Die Dokumentation sagt das auch...:wink: ![]()
Delphi-Quellcode:
...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. :?
.
Error := ShellExecute(0, 'open', PChar('C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32'), PChar('/A "page=4" ' + '"' + PDFFile + '"'), nil, SW_SHOWNORMAL); Da muß du dir den Pfad des verwendeten Readers selbst aus der Registry auslesen. :thumb: Die Parameter eines anderen Readers können anders sein... :? ![]() :P |
AW: PDF als Hilfe
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; |
AW: PDF als Hilfe
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. |
AW: PDF als Hilfe
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 |
AW: PDF als Hilfe
|
AW: PDF als Hilfe
Zitat:
|
AW: PDF als Hilfe
Zitat:
|
AW: PDF als Hilfe
Es gibt auch
![]() |
AW: PDF als Hilfe
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 |
AW: PDF als Hilfe
Zitat:
"C:\Program Files (x86)\Adobat Reader DC\Reader\acrord32" /A "nameddest=10278" "kap7_de.pdf" Damit geht es. |
AW: PDF als Hilfe
Hallo Zeras,
wie kommst du auf 10278 :gruebel: Vergibt Word für Bookmarks Nummern?? Wie kann ich erfahren wie das jeweilige Bookmark korrekt benannt wird?? Im Moment stehe ich nich im Nebel Gruß Siei61 |
AW: PDF als Hilfe
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Die Nameddest habe ich aber nicht per Word eingebracht, sondern ein eigenes Programm geschrieben, was diese Informationen in die PDF bringt. Dazu nutze ich die Debenu Komponenten. Wenn du prüfen willst, ob es "Nameddest" gibt, kannst du Adobe Acrobat (nicht der Reader!) nutzen, wie im Anhang der Screenshot zeigt. Dort ist auch die Nummer 10278 vergeben. |
AW: PDF als Hilfe
Hallo Zeras,
ok - d.h. es ist mit Word Bordmitteln nicht zu stemmen, nameddest und Bookmarks sind verschiedene Dinge :cry: Nur zum Verständnis - in deinem Beispiel - springt er direkt auf das Kapitel oder öffnet er nur die Seite in dem sich das Kapitel befindet?? Gruß |
AW: PDF als Hilfe
Zitat:
Damit kann man dann direkt auf die Zeile springen, die man gefunden hat. Das ist ja das, was du willst. |
AW: PDF als Hilfe
Das kommt mir alles sehr umständlich vor. Was passiert, wenn sich im PDF was verschiebt, weil was eingefügt wird?
|
AW: PDF als Hilfe
Zitat:
|
AW: PDF als Hilfe
Hallo zusammen,
bin nun auf eine sehr gute und einfache Lösung gestoßen :thumb: LibreOffice Ist ein open Source Office programm (kleine Spende ist erbeten) welches die Umwandlung von Bookmarks direkt in named destinations unterstützt. Einfach das Word File laden - Export PDF wählen - auf der ersten Seite der Optionen Export Bookmarks anwählen, im Reiter 'Links' Export bookmars as named destinations auswählen und auf Export klicken. Habe es ausprobiert und es funktioniert tadellos. Mache jetzt Feierabend:hi: Gruß Sidi61 |
AW: PDF als Hilfe
Was aber wenn jemand kein PDF-Programm installiert hat?
Hilfe als PDF finde ich sehr suspekt. Würde ich niemals öffnen. Zitat:
THTMLViewer hilft. ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz