Benutzer mit den meisten Antworten
WebbrowserControl und drucken

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
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
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-usGruß
Marcel -
Hab ich getestet, leider ohne Erfolg. Habe aber eine andere Lösung gefunden:
Ist zwar ein kleiner Umweg, lässt sich aber wesentlich besser konfigurieren.
Thx 2 all und schönes Wochenende,
Klaus
No Brain - No Pain -
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 -
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 -
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
-
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