Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TWebBrowser: Drucken ohne Dialog auf Wunschdrucker (https://www.delphipraxis.net/163083-twebbrowser-drucken-ohne-dialog-auf-wunschdrucker.html)

MacGuyver 15. Sep 2011 08:50

TWebBrowser: Drucken ohne Dialog auf Wunschdrucker
 
Moin Leute :hi:

Ich habe schon jede Menge durchforstet, bin aber auf keine Lösung gekommen. Jemand schrieb, dass er auf irgendeinen Drucker drucken kann, hat dazu leider nichts hinterlassen. Ich sehe leider öfter Antworten im Stil: "Ich habe den Fehler schon gefunden, danke!" Das ist für jemanden der eine Lösung sucht natürlich nicht hilfreich. Schön, dass der es gefunden hat. <grummel>

Komme ich auf mein Problem zurück. Sage ich drucken ohne Dialog, druckt er nur auf den Standarddrucker in seinen Einstellungen. Ich möchte HTML-Dokumente auf verschiedene Drucker in verschiedenen Formaten ausgeben. Dazu muss ich aber pro Druck einen anderen Drucker auswählen. Der Gedanke an verbiegen des Standarddruckers ist ok, man muss ihn nur später wieder zurückstellen.

Was für funktionierende Möglichkeiten habe ich für TWebBrowser oder CreateProcess mit "print"?


Danke für eure Bemühungen vorweg.
Stefan

MacGuyver 15. Sep 2011 21:30

AW: TWebBrowser: Drucken ohne Dialog auf Wunschdrucker
 
N'abend,

es ist schon faszinierend, wieviele Einträge eine Lösung schreiben, die nicht funktioniert - zu mindest nicht bei mir.

Delphi-Quellcode:
  if PrinterSetupDialog.Execute(WebBrowser.Handle) then
  begin
    Reg := TRegistry.Create;
    try
      if Reg.OpenKey('Software\Microsoft\Internet Explorer\PageSetup', True) then
      begin
        Reg.WriteString('printer', Printer.Printers[Printer.PrinterIndex]);
      end;

    finally
      Reg.Free;
    end;
  end;
Damit soll man den Drucker ändern können, klappt bei mir aber nicht. Hat da jemand etwas, was funktioniert?

himitsu 15. Sep 2011 22:31

AW: TWebBrowser: Drucken ohne Dialog auf Wunschdrucker
 
Das ändert anscheinend den Drucker der IE, aber wann dieses das ausliest. :gruebel:

Was passiert, wenn du jetzt mal dein Programm neu startest oder gar das ganze Windows?


Kannst aber auch mal versuchen Delphi-Referenz durchsuchenPrinter aus der Unit Printers zu ändern. (z.B. PrinterIndex)

MacGuyver 15. Sep 2011 22:47

AW: TWebBrowser: Drucken ohne Dialog auf Wunschdrucker
 
Wenn ich in HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\Device (Standarddrucker) eintrage, muss ich die Komponente neu erzeugen (hypothetisch). Bis jetzt habe ich nur die Anwendung neu gestartet. So stelle ich das Teil halt auf meinen Wunschdrucker, drucke das Dokument und stelle auf den original Standarddrucker zurück. Voll cool, man sieht sogar unter Start -> "Geräte und Drucker" wie der Haken umspringt, wenn man den Wert ändert.

Weiß jemand, wo das Format und die Ausrichtung (Portrait/Landscape) gespeichert ist?

MacGuyver 15. Feb 2012 07:11

AW: TWebBrowser: Drucken ohne Dialog auf Wunschdrucker
 
Moin Leute,

ich möchte mich gleich entschuldigen, dass ich den alten Eintrag wieder rauskrame. Vielleicht sucht jemand das, und ich habe die Lösung nicht eingetragen.

Ich habe die ganze Geschichte über eine separate Exe gelöst. Als erstes in die Registry die Werte schreiben und die zweite Anwendung starten. Dort die Registry lesen und mit den Sollwertern vergleichen. Sobald sie aktuell sind kann die Browser-Komponente initialisiert werden.

Und die Ausdruckrichtung? Ich habe den Drucker einfach noch einmal installiert und dort auf Landscape umgestellt. Beim Schreiben der Registry habe ich auch den Standarddrucker geändert.

Das Ende der zweiten Anwendung abwarten und im Finally die ursprünglichen Werte wieder in die Registry schreiben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:52 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