PDF in Webbrowser

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Dr_Gre.

    PDF in Webbrowser

    Hallo,

    in meinem VB Programm lade ich eine PDF zum Darstellen in den Webbrowser, das funktioniert ganz gut.
    Sobald ich das Programm jedoch auf meinem Laptop mit der gleichen Auflösung (1920x1080) und einer Windows Sklaierung von 125% nutze, wird die PDF im Webbrowser mit einem Versatz von 86 Pixel nach rechts und 30 Pixel nach unten dargestellt.
    Wenn ich die Skalierung auf 100% stelle oder die Auflösung (bei Skalierung 100%) runterdrehe wird alles normal dargestellt.
    Das Problem müsste also an der Windows Skalierung liegen - kann man diesen Versatz irgenwie einrechnen / korrigieren?
    Vielen Dank!!

    Lg
    @Dr_Gre Füge Deinem Projekt folgende Dateien hinzu, so sie nicht bereits dazugehören:
    app.config

    XML-Quellcode

    1. <?xml version="1.0" encoding="utf-8" ?>
    2. <configuration>
    3. <appSettings>
    4. <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
    5. </appSettings>
    6. </configuration>
    app.manifest

    XML-Quellcode

    1. <application xmlns="urn:schemas-microsoft-com:asm.v3">
    2. <windowsSettings>
    3. <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
    4. </windowsSettings>
    5. </application>
    Projekt => Hinzufügen => Neues Element
    => Anwendungskonfigurationsdatei (app.config)
    => Anwendungsmanifestdatei (app.manifest)
    Da macht die Darstellung Deines Programms unabhängig von der Systemeinstellung.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Wow!
    Vielen vielen Dank für die schnelle Antwort, hat super funktioniert!
    Ich habe nicht erwartet, dass das so kompliziert ist (dachte man muss nur beim Browser selbst irgendetwas einstellen).
    Mit diesen 2 Dateien hatte ich bisher nichts zu tun, ich muss mich darüber jetzt ein bisschen einlesen denke ich.

    Danke!

    [Edit]
    Deine Lösung hat bei 125% richtig gut funktioniert.
    Wenn man jetzt jedoch auf normale 100% stellt, dann wird die PDF zu weit links oben dargestellt und die gleichen Balken (die zuvor links oben waren) sind jetzt rechts unten.
    Bei noch größeren Skalierungen wie 150% oder gar 175% besteht das gleiche Problem wie zvuor bei 125%

    Kann man das ganze auch wieder mit der Konfigurationsdatei / dem Manifest lösen?
    Danke!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Dr_Gre“ ()

    @Dr_Gre Wie das genau funktioniert, weiß ich auch nicht, aber ich denke, dass die Einstellungen vom Compile-Rechner festgehalten werden.
    Wenn Du also auf einem 100er und einem 125e Rechner compilierst, hättest Du verschiedene Ergebnisse.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hmm, das ist schlecht.
    Kompilieren würde ich ganze mit einer Auflösung von 1920x1080 mit 100% (normale) Skalierung.
    Wenn ich jetzt das Programm auf einem Rechner mit einem höheren Skalierungsfaktor nutzen will muss es doch eine adäquate Lösung geben :-/
    Was ist wenn ich zB mein Programm anderen Menschen zur Verfügung stellen will (die Auflösung selbst macht hier tatsächlich keine Probleme) und die einen Skalierungsfaktor in Windows von zb 125 oder 150% nutzen? Bei denen würde das Programm (bzw die PDF im Webbrowser) verschoben dargestellt werden.

    Gibt es einen Lösungsweg?
    Vielen Dank!!!
    Mittlerweile habe ich eine Lösung gefunden, die zwar mehr schlecht als Recht ist, aber immerhin funktioniert:
    Sobald man die Form Resized oder das Window minimiert und wieder auf normale größe stellt wird die PDF im Webbrowser plötzlich (egal bei welchem Scalefaktor oder Resolution) korrekt dargestellt.
    Dies funktioniert erst, sobald die PDF vollständig geladen ist.
    Daher habe ich beim Laden der PDF einen Timer auf 300ms gestellt und dann Me.Scale(1.001) eingegeben -> so funktioniert alles.

    Vielleicht hilft das ja irgendjemanden in Zukunft.