none
WebbrowserControl und drucken RRS feed

  • Frage

  • Hallo,

    ich erzeuge ein WebbrowserControl und navigiere mit diesem auf mehrere Seiten. Dabei möchte ich abhängig vom Seiteninhalt verschiedene von denen ausdrucken (webBrowser1.Print()). Das Prob ist nun, das mir das BrowserControl ab und an (nicht nachvollziehbar) eine ScriptException wirft, von wegen Erlaubnis verweigert oder Fehler im Script. Dies passiert aber nur manchmal und das Drucken schlägt fehl. Beim nächsten Versuch mit derselben Site funktioniert aber alles. Was kann ich tun?

    Für Eure Tipps dankend,

    Klaus


    No Brain - No Pain
    Freitag, 3. September 2010 13:32

Antworten

  • Hi Marcel,

    danke Dir für Deine Unterstützung! Also die Scriptfehler bin ich nicht losgeworden (trotz ScriptErrorsSuppressed). Mit dem o.g. Lösungsansatz klappt es einwandfrei. Und was das Fit-To-Page-Problem angeht, ich Dussel brauchte nur die Website vor dem Drucken entsprechend zu skalieren. Nu is alles schick :)

    Thx alot! & sG,

    Klaus


    No Brain - No Pain
    • Als Antwort markiert Klaus Mayer Montag, 6. September 2010 07:12
    Montag, 6. September 2010 07:12

Alle Antworten

  • Hallo Klaus,

    Hast Du mal versucht webBrowser1.ScriptErrorsSuppressed = true zu setzen?

    Eventuell hilft Dir auch das:

    How to suppress run-time script errors as a WebBrowser control host in a Visual Basic application
    http://support.microsoft.com/kb/279535/en-us

    Gruß
    Marcel

    Freitag, 3. September 2010 14:20
    Moderator
  • Hab ich getestet, leider ohne Erfolg. Habe aber eine andere Lösung gefunden:

    http://groups.google.de/group/microsoft.public.de.german.entwickler.dotnet.csharp/browse_thread/thread/673949be53011385/605ef8271162ce10?lnk=gst&q=Webbrowser+Print#605ef8271162ce10

    Ist zwar ein kleiner Umweg, lässt sich aber wesentlich besser konfigurieren.

    Thx 2 all und schönes Wochenende,

    Klaus


    No Brain - No Pain
    Freitag, 3. September 2010 14:26
  • Ein Problem hab ich allerdings mit der verlinkten Lösung:

    private void PrintButton_Click(object sender, EventArgs e)
      {
       PrintDocument prtdoc = new PrintDocument();
       prtdoc.PrintPage += new PrintPageEventHandler(prtdoc_PrintPage);

       System.Drawing.Printing.PrinterSettings.StringCollection AllPrinter =
    PrinterSettings.InstalledPrinters;

       prtdoc.PrinterSettings.PrinterName = "EMHP4";
    //   prtdoc.PrinterSettings.PrinterName = "\\\\PRINTSERV3\\EMHP3-Fach2";
       prtdoc.Print();
      }

      private void prtdoc_PrintPage(object sender, PrintPageEventArgs ev)
      {
       HtmlDocument document = webBrowser1.Document;

       if (document != null)
       {
        HtmlElement element = document.Body;
        if (element != null)
        {
         IHTMLElementRender render = (IHTMLElementRender)element.DomElement;
         if (render != null)
         {
          IntPtr hdcDestination = ev.Graphics.GetHdc();
          render.SetDocumentPrinter(ev.PageSettings.PrinterSettings.PrinterName,
    hdcDestination);
          render.DrawToDC(hdcDestination);
         }
        }
       }
      }

    Wie kann ich die zu druckende Website auf Fit-To-Page rendern?

    Für Eure Tipps dankend,

    Klaus


    No Brain - No Pain
    Samstag, 4. September 2010 06:16
  • Hallo Klaus,

    Also, wenn Du nicht webBrowser1.ShowPageSetupDialog() oder webBrowser1.ShowPrintDialog() oder webBrowser1.ShowPrintPreviewDialog() verwenden willst/kannst, könnte ich mir vorstellen, dass man auch die brute-force-Variante verwenden könnte: Bitmap von der Webseite erstellen und entsprechend den Seitenvorgaben skalieren. Aber ich würde eher die Script-Fehler unterdrücken und über ShowPrintPreviewDialog() gehen.

    Gruß
    Marcel

    Sonntag, 5. September 2010 07:40
    Moderator
  • Hi Marcel,

    danke Dir für Deine Unterstützung! Also die Scriptfehler bin ich nicht losgeworden (trotz ScriptErrorsSuppressed). Mit dem o.g. Lösungsansatz klappt es einwandfrei. Und was das Fit-To-Page-Problem angeht, ich Dussel brauchte nur die Website vor dem Drucken entsprechend zu skalieren. Nu is alles schick :)

    Thx alot! & sG,

    Klaus


    No Brain - No Pain
    • Als Antwort markiert Klaus Mayer Montag, 6. September 2010 07:12
    Montag, 6. September 2010 07:12
  • Hallo Klaus,

    danke Dir für Deine Unterstützung! Also die Scriptfehler bin ich nicht losgeworden (trotz ScriptErrorsSuppressed). Mit dem o.g. Lösungsansatz klappt es einwandfrei. Und was das Fit-To-Page-Problem angeht, ich Dussel brauchte nur die Website vor dem Drucken entsprechend zu skalieren.
    Ja, so einfach kann es manchmal sein. Es wäre aber trotzdem schön, wenn Du relevanten Code als Referenz hier posten könntest. Wer weiß, vielleicht schlagen sich andere mit dem gleichen Problem herum und können von der Lösung profitieren?

    Gruß
    Marcel
    Montag, 6. September 2010 11:13
    Moderator