2016-04-27 1 views
-2

Also versuche ich einen Weg zu finden, wenn Benutzer eine PDF-Datei von einer Website öffnen, dann eine Delphi-Anwendung ausführen und die PDF anzeigen lassen. Ist es möglich, den URL-Speicherort, von dem die Datei stammt, irgendwie zu kopieren und beim Erstellen des Formulars an eine Zeichenfolge zu übergeben.Erhalten Sie den PDF-Dateipfad von einer Website, nachdem Sie von einer Delphi-Anwendung ausgeführt wurden?

+1

Wenn die URL im Browser verfügbar ist, bedeutet dies, dass der Browser * bereits * das PDF anzeigt. Warum würde Ihr Programm in diesem Fall laufen? Es scheint, dass Sie wirklich wollen, dass der Browser das PDF herunterlädt und es nicht anzeigt, sondern Ihr Programm benutzt, um die heruntergeladene Datei zu öffnen, möglicherweise mit Acrobat Reader. Ihr Problem ist also nicht, wie Sie die PDF-URL des Browsers erkennen, sondern wie Sie einem unterstützten Browser mitteilen können, dass er Ihr Programm für PDFs aufrufen soll, anstatt sie intern anzuzeigen. –

+0

Remy weiß, was ich zu erreichen versuche. Ich möchte nur den URL-Pfad. – Deleted

Antwort

3

Ein Browser lädt die PDF-Datei in eine temporäre Datei herunter, bevor eine externe Anwendung gestartet wird, um diese temporäre Datei anzuzeigen (wenn sie nicht im Browser selbst angezeigt wird). Wenn es sich bei dieser Anwendung um Ihre Delphi-App handelt, wird nur über die Befehlszeile die temporäre Datei angezeigt, nicht die URL, von der die PDF ursprünglich stammt.

Je nachdem, welchen Browser Sie verwenden und welche APIs verfügbar sind, können Sie in der Lage sein, den Cache-Ordner des Browsers nach der URL abzufragen, die der temporären Datei zugeordnet ist.

Zum Beispiel verwendet Internet Explorer intern WinInet, und WinInet macht eine Caching API für die Arbeit mit IE Cache-Daten verfügbar. Sie können FindFirstUrlCacheEntry() und FindNextUrlCacheEntry() verwenden, um den Inhalt des Cache aufzulisten, wobei die INTERNET_CACHE_ENTRY_INFO Struktur ein Feld für die URL und ein lpszLocalFileName Feld für den lokalen Dateinamen im Cache hat. Sie können SHGetFolderPath(CSIDL_INTERNET_CACHE) oder SHGetKnownFolderPath(FOLDERID_InternetCache) verwenden, um den Pfad des Cache selbst abzurufen.

+0

Sie sollten auch erwähnen, dass dies nur funktionieren würde, wenn der Server das PDF als Datei über das HTTP-Protokoll bereitstellt (URL zur Datei ist verfügbar). Aber es wird nicht funktionieren, wenn PDF mit dem Datenstrom übertragen wird. In diesem Fall ist keine URL verfügbar. – SilverWarior