PDF anzeigen ohne Adobe reader

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 20 Antworten in diesem Thema. Der letzte Beitrag () ist von mrMo.

    PDF anzeigen ohne Adobe reader

    Heyho
    Ich weiß dazu gibt es schon mehrere Threads hier. Allerdings habe ich noch keine Lösung gefunden, die funktioniert.
    Da mein Adobe Plugin scheinbar rumzickt, suche ich eine Lösung um eine PDF innerhalb einer Form anzuzeigen (mehr nicht).
    Hast hier jemand eine Idee, oder einen Link?
    Ich hab z.B. das nuget-Paket freeware.pdf2png im Einsatz.

    VB.NET-Quellcode

    1. Using FileStream As New IO.FileStream(PdfDateipfad, IO.FileMode.Open)
    2. Using MemoryStream As New IO.MemoryStream
    3. Dim RawBytes = Freeware.Pdf2Png.Convert(FileStream, 1)
    4. MemoryStream.Write(RawBytes, 0, RawBytes.Count)
    5. PicBox1.Image = Drawing.Image.FromStream(MemoryStream)
    6. End Using
    7. End Using
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hmm Das funktioniert.
    Aber gibt es dazu eine Dokumentation? Ich habe Probleme mit der Darstellung innerhalb der PictureBox.
    Um die gesamte PDF zu sehen, muss ich diese auf SizeMode = Zoom stellen.
    Allerdings ist der Inhalt bei Dina4 pdfs dann echt klein dargestellt (das ist nix für meine Augen) :)
    Außerdem sehe ich nur eine von mehreren Seiten.

    DerSmurf schrieb:

    Außerdem sehe ich nur eine von mehreren Seiten.
    Ändere in Zeile#3 den letzten Parameter. Jede Seite wird ja in ein eigenes Bild gewandelt.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    DerSmurf schrieb:

    Allerdings ist der Inhalt bei Dina4 pdfs dann echt klein dargestellt
    Dann bau Dir ne Scrollable PictureBox:
    Scrollen einer PictureBox
    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!
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    ALso ich finde die Lösung von @petaod sehr interessant.
    Denn 10 Seiten reichen mir ganz ganz locker.

    Prinzipiell würde mir auch die Anzeige in einem WebBrowser Control reichen. Aber hier bekomme ich es nicht hin, dass die pdf innerhalb dieses Controls angezeigt wird.
    Es öffnet sich immer nur ein Dialog zum öffnen der pdf (also dann in einem externen Programm).

    DerSmurf schrieb:

    Es öffnet sich immer nur ein Dialog zum öffnen der pdf
    Wie rufst Du denn das auf?
    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!

    DerSmurf schrieb:

    Prinzipiell würde mir auch die Anzeige in einem WebBrowser Control reichen. Aber hier bekomme ich es nicht hin, dass die pdf innerhalb dieses Controls angezeigt wird.
    Es öffnet sich immer nur ein Dialog zum öffnen der pdf
    Der Browser muss in dem Fall so konfiguriert sein, dass er PDF ohne Rückfrage anzeigt.
    pdf.wondershare.com/pdf-knowledge/view-pdf-in-browser.html
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Ich bin jetzt verwirrt.
    Also ich ziehe ein WebBrwoser Steuerelement auf die Form und lade die pdf folgendermaßen:
    WebBrowser1.Navigate("C:/Users/flori/Desktop/test.pdf")
    Wenn ich den Adobe Reader installiert habe, wird die pdf anstandslos geöffnet und innerhalb des Controls angezeigt.
    Wenn ich den Adobe Reader deinstalliere, erscheint ein Auswahldialog zum öffnen, oder speichern der Datei.

    Also funktioniert das ebenfalls nur, wenn der Adobe Reader installiert ist?
    Das verstehe ich nicht, denn Edge zeigt ja auch problemlos pdf im Browser (also in Edge) an, wenn ich kein zusätzliches pdf Tool installiert habe.
    Ja, FireFox auch. Liegt daran, dass die eben intern eigene PDF-Viewer haben.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Soweit ich weiß, nutzt das Webbrowser Control den IE (bzw. dessen Technologie). Damit der IE wiederum PDFs direkt anzeigen kann, brauch es ein PDF Plug In (sonst läd er das PDF immer nur runter), welches wiederum bei der Installation eines separaten PDF Programms (Adobe Reader, Fox it, etc.) installiert wird. Ist nen riesen Mist mit dem Webbrowser Control, lass lieber die Finger von dieser Lösung.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Ich les immer wieder, dass es einen Nachfolger dafür gibt (WebView2, gibt's über NuGet), welcher dann wie Edge auf Chrome basiert. Vielleicht geht's damit. Hab's selber aufgrund mangelnden Bedarfs noch nie probiert.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Also ich finde das WebControl als Notlösung OK.
    Dann brauche ich zwar auch wieder den Adobe Reader, allerdings habe ich mit dessen Control schon immer Problemchen.
    Es passiert nach einem Update des Readers z.B. dass mir einfach keine pdf angezeigt wird, das Control bleibt grau.
    Irgendwann geht es dann wieder. Aber wirklich zuverlässig arbeitet das Ding nicht.

    Den WebView2 finde ich allerdings Mega spannend. Bin aber zu doof.
    Ich habe hier emoreau.com/Entries/Articles/2…in-a-Net-application.aspx eine Anleitung gefunden.
    Da die dortige Beispielsolution bei mir nicht lauffähig ist (es wird in VS nichtmal die "Form GUI" dargestellt), habe ich den Code in meine Solution übertragen.
    Aber ich scheine irgendwas vergessen zu haben. Denn:
    WebView21.CoreWebView2.Navigate("https://www.vb-paradise.de/") das gibt mir eine System.NullReferenceException (Microsoft.Web.WebView2.WinForms.WebView2.CoreWebView2.get hat Nothing zurückgegeben.)
    und mit WebView21.Source = New Uri("https://www.vb-paradise.de/") passiert einfach garnichts.
    Außerdem gibt mir If WebView21?.CoreWebView2 Is Nothing immer True zurück.

    Hat hier jemand Erfahrungen mit, oder weiß was ich falsch mache?

    Edit: hab vergessen die Solution ranzuhängen
    Dateien

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

    Also ich habe nach wie vor keine Ahnung, warum meine hochgeladene Demo Anwendung nicht funktioniert.
    Ich habe auf meinem Programmier PC nun eine neue TestSolution erstellt. Diese läuft wunderbar.
    Das ganze habe ich auch bereits in meine Hauptapp integriert. Bin durchaus zufrieden, mit dem Ergebnis.
    Werde mich jetzt noch ein wenig in dieses Control einlesen, um Fehler abfangen zu können. Aber es läuft alles.

    Edit: Oh mein Gott. Ich habe gerade noch ein wenig gelesen. Es müsste sogar möglich sein, mittels Stift direkt innerhalb des Programmes in die pdf zu schreiben. Das kann ich gerade (mangels Touch fähigem PC) nicht testen.
    Aber das ist eine Funktion von der ich noch gar nicht wusste, dass ich sie brauche. Ab und an habe ich schon mal Dinge in der pdf getextmarkert, oder mal von Hand neue Artikel hingeschrieben.
    Das geht jetzt direkt in der Form zum versenden der Mail, ohne extra öffnen der erstellten pdf. Das ist Mega!
    Bilder
    • Unbenannt.png

      126,15 kB, 1.920×1.080, 119 mal angesehen

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

    Ich habe gerade noch etwas rausgefunden.
    Es empfiehlt sich unter Umständen die WebView2 runtime auf den ausführenden PCs zu installieren.
    Auf dieser Seite steht aber eigentlich alles, was man wissen muss, wenn meine DemoApp nicht läuft:
    developer.microsoft.com/de-de/microsoft-edge/webview2/