Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   TWebBrowser zeigt PDF nicht an sondern DownloadDlg (https://www.delphipraxis.net/213134-twebbrowser-zeigt-pdf-nicht-sondern-downloaddlg.html)

BlueStarHH 2. Jun 2023 13:59

TWebBrowser zeigt PDF nicht an sondern DownloadDlg
 
Moin,

ich habe ein TWebbrowser und lade so eine PDF-Datei:

Code:
webbrowser1.navigate('C:\meinpdf.pdf')
Klappt auf vielen System. Bei einem Kunden wird die PDF-Datei jedoch nicht im TWebbrowser dargestellt, sondern es erscheint gleich ein Download-Dialog vom Browser. Das verwirrt den Kunden und ist auch nicht hilfreich, da ich die PDF-Datei öfter als Druckvorschau neu lade.

Wie kann ich dem TWebbrowser sagen, dass er NIE den Download-Dialog zeigen soll?

Der schöne Günther 2. Jun 2023 14:54

AW: TWebBrowser zeigt PDF nicht an sondern DownloadDlg
 
Stell den TWebBrowser auf Edge-Modus. Ansonsten läuft der im uralten Internet Explorer-Modus, und der kann von sich aus überhaupt keine PDFs anzeigen. Es sei denn, der Benutzer hat aus alten Zeiten noch ein PDF-Plugin (wie z.B. Adobe Acrobat) installiert.

himitsu 2. Jun 2023 15:23

AW: TWebBrowser zeigt PDF nicht an sondern DownloadDlg
 
WebBrowser.SelectedEngine = EdgeOnly oder EdgeIfAvailable


oder direkt TEdgeBrowser verwenden (TWebBrowser verwendet den auch intern, wenn Engine=Edge)

Bernhard Geyer 5. Jun 2023 10:49

AW: TWebBrowser zeigt PDF nicht an sondern DownloadDlg
 
Ergänzung.

Der IE kann keine PDF anzeigen.
Er "kann" es nur wenn ein PDF-Viewer sich im IE als Plugin registriert hat.
Und diese Technik/Lösung wird in kürze bei keinen mehr funktionieren, da jede IT aus Sicherheitsgründen den IE mehr und mehr lahm legen wird.

BlueStarHH 5. Jun 2023 11:11

AW: TWebBrowser zeigt PDF nicht an sondern DownloadDlg
 
OK, danke. Habe es auf Edge geändert.

BlueStarHH 6. Jun 2023 10:43

AW: TWebBrowser zeigt PDF nicht an sondern DownloadDlg
 
Ich habe es nun beim Kunden getestet. Er hat Edge installiert. TWebBrowser steht auf "EdgeOnly". Wenn ich nun das PDF in den TWebBrowser laden möchte, flackert die Sanduhr kurz auf und der Browser bleibt komplett weiß. Mehr wird nicht angezeigt. Woran liegt das?

Wenn ich den Edge ganz normal als Programm starte und dort die PDF-Datei öffne wird sie normal angezeigt.

Klaus01 6. Jun 2023 11:11

AW: TWebBrowser zeigt PDF nicht an sondern DownloadDlg
 
.. kannst Du mal schauen, ob das Verzeichnis von TEdgeBrowser.UserDataFolder auf ein beschreibbares Verzeichnis zeigt?

Grüße
Klaus

jaenicke 6. Jun 2023 11:13

AW: TWebBrowser zeigt PDF nicht an sondern DownloadDlg
 
Fehlt vielleicht die WebView2Loader.dll?

himitsu 6. Jun 2023 11:21

AW: TWebBrowser zeigt PDF nicht an sondern DownloadDlg
 
Edge ist seit mehreren Windows-Versionen/HalbjahresUpdates quasi überall automatisch installiert.

Wie schon beim alten IE/TWebBrowser, kann auch der EmbeddedEdge/TEdgeBrowser im Funktionsumfang/Plugins eingeschränkt sein, gegenüber dem großen Browser.



Vielleicht mal auf Fehler prüfen?
* Rückgabe-Werte des .Navigate und dann .LastErrorCode (beim TEdgeBrowser)
* Ereignisse ala OnNavigateError, OnThirdPartyUrlBlocked, OnShowScriptError
* oder direkt TEdgeBrowser verwenden und da OnProcessFailed, OnPermissionRequested
* beim EdgeBrowser mal ausgeben, was z.B. BrowserVersionInfo, BrowserProcessID oder ScriptEnabled sagen
* ...

jaenicke 6. Jun 2023 12:53

AW: TWebBrowser zeigt PDF nicht an sondern DownloadDlg
 
Zitat:

Zitat von himitsu (Beitrag 1523113)
Edge ist seit mehreren Windows-Versionen/HalbjahresUpdates quasi überall automatisch installiert.

Das hilft aber nichts, wenn die DLL zur Verbindung damit nicht da ist. Auf einem sauberen System mit allen Updates ist diese bei mir unter Windows 11 nicht im Pfad vorhanden. (Die liegt bei mir an diversen Stellen auf dem System, unter anderem auch bei den neuen Powertoys für die Previewfunktion und Visual Studio.)

BlueStarHH 6. Jun 2023 13:03

AW: TWebBrowser zeigt PDF nicht an sondern DownloadDlg
 
Wie kann ich herausfinden, welche DLL-Version ich brauche? Einfach die neueste DLL nehmen obwohl mein Delphi-Projekt mit Delphi 11.0 kompiliert ist?

jaenicke 6. Jun 2023 13:19

AW: TWebBrowser zeigt PDF nicht an sondern DownloadDlg
 
Wenn du das EdgeView2 SDK über GetIt installiert hast, sollte die passende DLL bei den Reditributionsdaten zu finden sein:
Code:
C:\Program Files (x86)\Embarcadero\Studio\22.0\Redist

mytbo 6. Jun 2023 13:48

AW: TWebBrowser zeigt PDF nicht an sondern DownloadDlg
 
Zitat:

Zitat von BlueStarHH (Beitrag 1523116)
Wie kann ich herausfinden, welche DLL-Version ich brauche?

Lade dir von hier das Microsoft.Web.WebView2 NuGet Package (ist eine ZIP-Datei) runter. Im Verzeichnis Runtimes findest du die DLLs.

Bis bald...
Thomas

BlueStarHH 9. Jun 2023 13:14

AW: TWebBrowser zeigt PDF nicht an sondern DownloadDlg
 
Die richtige WebView2Loader.dll ist nun im Programmordner und EdgeOnly ist gesetzt. In einer Test-VM funktioniert es. Beim Kunden bleibt der TWebBrowser einfach weiß. Da komme ich auf die Idee mal zu schauen, ob er überhaupt den Edge installiert hat. Der Kunde sagt dann: "Mein IT-Techniker als den Edge deinstalliert, da ich ihn nicht mag."

Dann fällt der TWebBrowser anscheinend wieder auf den IE zurück. Und durch EdgeOnly zeigt er dann gar nichts an. Was kann ich in so einem Fall machen, um verlässlich ein PDF in meiner Anwendung anzuzeigen? Chrome mitzuliefern würde die ganze Anwendung um 100+ MB aufblasen. Das wäre zu viel. Warum kann man den Edge überhaupt reselos entfernen? Geht doch mit dem IE auch nicht. So kann ich nie darauf vertrauen, dass es einen bestimmten Browser gibt, den ich einbinden kann.

himitsu 9. Jun 2023 13:47

AW: TWebBrowser zeigt PDF nicht an sondern DownloadDlg
 
Den Edge wieder installieren lassen (ihn als Mindestanforderung definieren).
Es ist ja damit zu rechnen, dass der IE irgendwann rausfliegt und durch den Edge ersetzt wird ... nur "noch" nicht passiert, da er "leider" zu tief im System verankert ist. (selbst Explorer und Desktop nutzen ihn)



Das perverse Acrobat einbinden, oder halbwegs kompatible Alternativen ala Foxit.

Direkt das Bei Google suchenjsPDF-Framework (siehe Github) mitbringen und im TWebBrowser laden (einige Browser verwenden/verwendeten das auch).

Oder FremdKomponenten, welche PDF rendern können, als ActiveX, Waraper mit vorkompilierter C++-Komponente oder direkt als Delphi-Komponente.
z.B. von DevExpress (TdxPDFDocument/TdxPDFViewer), Synopse (SynPDF) usw.

mytbo 9. Jun 2023 13:59

AW: TWebBrowser zeigt PDF nicht an sondern DownloadDlg
 
Zitat:

Zitat von BlueStarHH (Beitrag 1523231)
Was kann ich in so einem Fall machen, um verlässlich ein PDF in meiner Anwendung anzuzeigen?

Es kommt darauf an, wie viel PDF-Funktionalität du verwendest. Wenn es einfach ist, kannst du ein PDF-Dokument in einen FastReport Bericht, weiß nicht, ob die Embarcadero Edition dafür ausreicht, einbetten. Ansonsten gibt es Empfehlungen für gute Tools, z.B. DynaPDF für ca. 1K EUR oder Beitrag von himitsu, hier im Forum.

Bis bald...
Thomas

Frickler 9. Jun 2023 15:13

AW: TWebBrowser zeigt PDF nicht an sondern DownloadDlg
 
Zitat:

Zitat von BlueStarHH (Beitrag 1523231)
Was kann ich in so einem Fall machen, um verlässlich ein PDF in meiner Anwendung anzuzeigen?

SumatraPDF. Entweder standalone oder in ein Formular einbetten. Kost nix und ist wirklich schnell. Vor allem ist das keine komplexe Installation, sondern man kopiert die EXE irgendwohin und ist schon fertig.
Formulare gehen allerdings nicht, und editieren kann man das PDF auch nicht.

Delphi.Narium 9. Jun 2023 16:39

AW: TWebBrowser zeigt PDF nicht an sondern DownloadDlg
 
Sumatra: Guckst Du hier: https://www.delphipraxis.net/1506604-post12.html

Alles, was den AcrobatReader angeht, kannst Du einfach rauswerfen und von Delphi 7 auf deine Delphiversion anpassen (soweit da Änderungen erforderlich sein sollten).

jaenicke 9. Jun 2023 18:12

AW: TWebBrowser zeigt PDF nicht an sondern DownloadDlg
 
Zitat:

Zitat von BlueStarHH (Beitrag 1523231)
Der Kunde sagt dann: "Mein IT-Techniker als den Edge deinstalliert, da ich ihn nicht mag."

Viele wissen schlicht nicht, dass das im Grunde auch das gleiche wie Google Chrome ist, nur eben mit einer anderen Oberfläche.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:39 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