AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Drucken mit dem TWebbrowser OHNE PageSetupDialog
Thema durchsuchen
Ansicht
Themen-Optionen

Drucken mit dem TWebbrowser OHNE PageSetupDialog

Ein Thema von Neuromancer · begonnen am 4. Nov 2006 · letzter Beitrag vom 6. Nov 2006
Antwort Antwort
Neuromancer

Registriert seit: 8. Aug 2003
62 Beiträge
 
Delphi 7 Enterprise
 
#1

Drucken mit dem TWebbrowser OHNE PageSetupDialog

  Alt 4. Nov 2006, 12:37
Hallo,

ich möchte den Inhalt des TWebbrowser ausdrucken.

Insofern kein Problem, dass mir mit
Code:
WebBrowser.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER);
eine Funktion dafür zur Verfügung steht.

Nur, es müssen folgende Bedingungen zusätzlich erfüllt werden:
  • Der Drucker muss festlegbar sein
  • Die Anzahl der Kopien muss festlegbar sein
  • Das Format muss festlegbar sein (landscape/portrait)
  • Der Ausgabeschacht muss festlegbar sein
  • Die Papiergröße (A4, A5) muss festlegbar sein
  • Weitere Eigenschaften können noch hinzukommen, sind bis jetzt aber nicht notwendig

Diese Eigenschaften müssen vor dem Druck gesetzt werden und zwar ohne, dass ein SetupDialog erscheint (die notwendigen Daten zur Bestückung kommen aus einer Tabelle/DB).

Ich habe es bis jetzt so gelöst, dass ich den Standard-Drucker auf meinen gewünschten Drucker und anschließend alle Eigenschaften über DEVMODE und PRINTER_INFO_2 gesetzt habe.
Funktioniert prima.
Nur: hinterher ist natürlich der Standarddrucker mit all seinen Eigenschaften überschrieben. Wenn der User jetzt etwas anderes (meinetwegen eine Word-Datei) ausdrucken will, dann hat er immer noch meine Eigenschaften als default, müsste also alles wieder zurück setzen. Das ist schlicht und einfach eine Zumutung.

Es müsste doch auch irgendwie machbar sein, nicht die globalen Standard-Drucker-Daten zu überschreiben, sondern das ganze lokal auszuführen, so dass der Standard-Drucker mit all seinen Eigenschaften unberührt bleibt, oder?

Wer weiß Rat?

Gruß und TIA

(Crosspost in dsdt -> http://forum.dsdt.info/viewtopic.php?t=31399)
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Drucken mit dem TWebbrowser OHNE PageSetupDialog

  Alt 4. Nov 2006, 19:29
Hallo Armin,

ich fürchte du hast da kein Glück:

Microsoft KB 236777
There might be a need to change the print settings of Internet Explorer or the WebBrowser control programmatically. The only settings that can be changed are page margins, and header and footer information. There is no supported way to change other settings like page orientation or printer. Read more...


Grüße vom marabu
  Mit Zitat antworten Zitat
Neuromancer

Registriert seit: 8. Aug 2003
62 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Drucken mit dem TWebbrowser OHNE PageSetupDialog

  Alt 4. Nov 2006, 19:43
Hallo Achim,

zunächst danke für deine Antwort.

Interessant, was Microsoft da schreibt, allein mir fehlt der Glaube...Irgendwo muss der IE ja auch seine lokalen Druckersettings speichern, wenn auch nicht in der Registry. Allerdings befürchte ich, dass es sich dabei um ein nahezu unzugängliches Binary handelt, das von Betriebssystem zu Betriebssystem anders aussieht...

Eine andere Möglichkeit wäre noch, in einem separaten Thread zu prüfen, ob der Drucker noch busy ist, zu warten, bis er das nicht mehr ist, und dann die - zuvor gespeicherten - globalen Settings wieder herzustellen. Erinnert mich allerdings mehr an Brechstange als an elegante Programmierung. Nicht abzusehen, was passiert, wenn der Drucker aus irgendwelchen Gründen einfach abschmiert oder ihm schlicht und einfach nur das Papier ausgegangen ist...

Gruß
  Mit Zitat antworten Zitat
c64ranni

Registriert seit: 27. Okt 2006
Ort: Vomp
10 Beiträge
 
Delphi 5 Professional
 
#4

Re: Drucken mit dem TWebbrowser OHNE PageSetupDialog

  Alt 6. Nov 2006, 12:39
Dazu hätte ich eine kurze Frage:
Ich hatte nämlich ein ähnliches Problem.
Warum muss der Drucker automatisch gesetzt werden und kann nicht vom Benutzer ausgewählt werden?

Ich hatte nämlich das Problem, dass ich mehrere HTML - Codes ausdrucken wollte, aber der Drucker sollte nur einmal ausgewählt werden.
Es gebe noch die Möglichkeit das ganze mit einem Template zu machen.
Du kannst beim INET - Explorer druckaufruf als in - parameter, den Pfad zu einem Template angeben, dass dir gewisse Dinge steuert. Da drinnen musst du dann mit Java - Scripts arbeiten. Ich habe was gelesen, dass man den Drucker da auch selbst ansteuern kann, allerdings ist das relativ komplex.
Ich habe leider keinen link mehr, aber wenn du googlest nach "Template print HTML", dann solltest du den Link zur MS - Homepage finden, da kannst dan durchschauen.

Ich habe das so gelöst, dass ich mir alle HTML zusammensammle und gesammelt ausdrucke. Ist zwar auch etwas arbeit, aber is einfach als die ewige viele Scripts zu schreiben (Außerdem gibt es Explorer die scripts blocken!)
  Mit Zitat antworten Zitat
Neuromancer

Registriert seit: 8. Aug 2003
62 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Drucken mit dem TWebbrowser OHNE PageSetupDialog

  Alt 6. Nov 2006, 14:31
Hallo,

Zitat von c64ranni:
Warum muss der Drucker automatisch gesetzt werden und kann nicht vom Benutzer ausgewählt werden?
Das hat einen ganz einfachen Hintergrund:
Die zu druckenden Dokumente sind eigentlich Reports, die aber über XML und das passenden XSL-Stylesheet ausgedruckt werden sollen. Da es sich aber um "Power-Dokumente" handelt (also Dokumente, die täglich sehr oft ausgedruckt werden müssen - um genauer zu sein, sind es Arbeitsunfähigkeitsbescheinigungen und Überweisungen an einen Facharzt - ) wäre es eine Zumutung für den User, ihn jedesmal den Drucker auswählen zu lassen.
Diese Dokumente erfordern aber unterschiedliche Einstellungen des Drucks: einmal muss auf landscape, einmal auf portrait ausgedruckt werden, dann handelt es sich einmal um DIN A4 dann wieder DIN A5 - Dokumente (was auch der Grund ist, warum der Schacht automatisch gesetzt werden muss).

Ein Sammeldruck kommt nicht in Frage, da der Arzt sofort die Arbeitsunfähigkeitsbescheinigung aushändigen können muss, so wie auch die Überweisung.

Die Sache mit den Printer Templates habe ich mir auch schon angesehen, allerdings geht es dort auch sehr rauhbeinig zur Sache. Dann muss Java-Script eingebunden werden, also auch nicht gerade das Gelbe vom Ei...

Dennoch danke für die Anregung.

Gruß
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz