Laden...

pdf Datei über Webbrowser Control direkt auf lokaler festplatte speichern

Erstellt von schissern vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.952 Views
S
schissern Themenstarter:in
13 Beiträge seit 2008
vor 14 Jahren
pdf Datei über Webbrowser Control direkt auf lokaler festplatte speichern

Hallo,

Ersteinmal Vorweg, alles was ich hier als Webbrowser bezeichne, ist das Webbrowser Element in meiner Form. Also nicht der IExplorer oder Firefox.

ich hab da ein kleines Problem mit dem direkten speichern einer pdf Datei von einer Webseite nach vorheriger Anmeldung auf dieser. Ich habe von unserer lokalen Tageszeitung einen Online Zugang über den man die aktuelle Zeitung als pdf runterladen kann. Nun will ich nicht immer mich da online einloggen und hundertmal irgendetwas anklicken. Daher wollte ich mir ein kleines Prog schreiben, um das ganze zu automatisieren.

Ich habe es geschafft die Anmeldung auf der Seite problemlos durchzuführen über einen Webbrowser Control. Der Code dazu sieht folgendermaßen aus:

        private void button11_Click(object sender, EventArgs e)
        {
            webBrowser1.Navigate("http://onlineabo.siegener-zeitung.de/titel.php?j=2009&m=06&t=17");
        }

        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            webBrowser1.Document.All["email"].SetAttribute("value", "xxx");
            webBrowser1.Document.All["pass"].SetAttribute("value", "xxx");
            webBrowser1.Document.Forms[0].InvokeMember("submit");
        }

Damit hab ich mich eingeloggt und hab jetzt die Möglichkeit dort verschiedene Ausgaben der Zeitung anzuklicken. Ich habe auch den direkten Link zu dem pdf Dokument, allerdings kann das nur angezeigt bzw. runtergeladen werden, mann man eingeloggt ist.

Hier klicken zum anschauen

Rechts steht jetzt Siegen, Altenkirchen, Olpe usw. Ich möchte die Siegener Ausgabe runterladen.
*Wenn ich die pdf Datei jetzt im Webbrowser allerdings mit der linken Maustaste anklicke, öffnet sich ein neues Browser Fenster und ich muss mich wieder neu einloggen weil das Cookie dort logischerweise nicht greift. Somit ist die Variante mit linksklick nicht brauchbar. *Wenn ich über den Webclient download in meiner Programmierung gehe, bringt mich das auch nicht weiter, da für den download über den Webclient das Cookie auch nicht greift. *Die Variante über den direkten Link mit

        private void button12_Click(object sender, EventArgs e)
        {
            webBrowser1.Navigate("http://onlineabo.siegener-zeitung.de/seiten/20090617/Siegen.pdf");
        }

macht mich auch nicht glücklich

Am besten funktioniert der Download mit einem Rechtsklick auf die gewünschte Datei, dann mit "Ziel speichern unter" den Pfad auswählen, Dateinamen angeben und fertig.

Diese Schritte ab Rechtsklick würde ich gern alles über einen Button realisieren. Hat jemand eine Ahnung wie ich den Befehl "Ziel speichern unter" in dem Webbrowser ausgeführt bekomme ohne es händisch mit der Maus zu machen?

Gruß

383 Beiträge seit 2006
vor 14 Jahren

Ich hab' das für mich auch schon gemacht, aber ich hab' das Ganze wie folgt gelöst:

  • Console App

  • Autom. Login mit HttpWebRequest

  • Erstelle CookieContainer

  • Navigiere auf die richtige Webpage und erzeuge HTMLDocument - Objekt

  • Parse HTMLDokument und hole die "korrekten" (bestimmte Logik) Download-Links für die PDF's (bei mir gibts pro Zeitungs-Seite ein PDF-Download-Link)

  • Ziehe PDF-Seiten in MemoryStream und speichere als PDF-Datei auf Disk.

  • Merge alle PDF-Dateien in eine PDF-Datei.

  • Fertig

Bei diesem Projekt war der "Fiddler" unverzichtbar.

edit:
sorry, zur "rechts-maus-klicki-dings-bums" Frage weiss ich leider keine Antwort 😃

2.891 Beiträge seit 2004
vor 14 Jahren

Hallo schissern,

Nun will ich nicht immer mich da online einloggen und hundertmal irgendetwas anklicken. Daher wollte ich mir ein kleines Prog schreiben, um das ganze zu automatisieren. [...] Diese Schritte ab Rechtsklick würde ich gern alles über einen Button realisieren. Hat jemand eine Ahnung wie ich den Befehl "Ziel speichern unter" in dem Webbrowser ausgeführt bekomme ohne es händisch mit der Maus zu machen?

Lass den Webbrowsercontrolkrams komplett, nimm den WebClient mit HTTP-POST- und Cookie-Unterstützung und benutze DownloadFile(...). Einloggen + Link suchen + PDF runterladen = drei Zeilen Code.

Beste Grüße,
dN!3L