Drucker für AxAcroPDF-Control Druckfenster vorgeben
Hi,
ich bräuchte mal wieder eure Hilfe. Ich schreibe gerade ein VB-Programm, das ein PDF in einem AxAcroPDF-Control anzeigt und dieses PDF dann ausdrucken soll. wenn ich die AxAcroPDF.Print()-Methode verwende geht automatisch das AdobeReader-Drucken-Fenster auf (soweit auch gewünscht).
Im Programm kann ausgewählt werden, mit welchen Druckern das PDF gedruckt werden soll. Hierzu lese ich die auf dem System installierten Drucker aus und gebe die Namen an einer Reihe von Checkboxen weiter. Beim Klick auf den "Druck"-Button in meinem Programm soll jetzt für jeden ausgewählten Drucker einmal das AdobeReader-Drucken-Fenster geöffnet werden, jeweils voreingestellt mit dem entsprechenden Drucker.
Das Problem ist, dass immer der Standard-Drucker ausgewählt ist und ich nicht weiß, wie ich diesen innerhalb des Programms temporär ändere (merken des aktuellen Standard-Druckers -> eintragen des temporären Standard-Druckers -> Drucken -> Änderung rückgängig machen).
Im weiteren Verlauf wird dann auch noch ein "Direktdruck"-Button eingerichtet, der dann über die Commandline ohne weitere Einstellmöglichkeiten einfach das übergebene Dokument über die entsprechenden Drucker druckt.
Druckschleife:
Habe Google schon mit allem möglichen zu dem Thema gefüttert (vb Standarddrucker, auslesen, ermitteln, ändern, default printer, set, get, change, ...) komme aber immer nur auf die Einstellmöglichkeit für das PrintDocument (wie etwa auf der Hälfte des Code Snippets) das aberja leider nur für das entsprechende Control-Element gilt und nicht den System-Standard-Drucker setzt.
Ich freue mich auf eure Antworten
Grüße
Christoph
ich bräuchte mal wieder eure Hilfe. Ich schreibe gerade ein VB-Programm, das ein PDF in einem AxAcroPDF-Control anzeigt und dieses PDF dann ausdrucken soll. wenn ich die AxAcroPDF.Print()-Methode verwende geht automatisch das AdobeReader-Drucken-Fenster auf (soweit auch gewünscht).
Im Programm kann ausgewählt werden, mit welchen Druckern das PDF gedruckt werden soll. Hierzu lese ich die auf dem System installierten Drucker aus und gebe die Namen an einer Reihe von Checkboxen weiter. Beim Klick auf den "Druck"-Button in meinem Programm soll jetzt für jeden ausgewählten Drucker einmal das AdobeReader-Drucken-Fenster geöffnet werden, jeweils voreingestellt mit dem entsprechenden Drucker.
Das Problem ist, dass immer der Standard-Drucker ausgewählt ist und ich nicht weiß, wie ich diesen innerhalb des Programms temporär ändere (merken des aktuellen Standard-Druckers -> eintragen des temporären Standard-Druckers -> Drucken -> Änderung rückgängig machen).
Im weiteren Verlauf wird dann auch noch ein "Direktdruck"-Button eingerichtet, der dann über die Commandline ohne weitere Einstellmöglichkeiten einfach das übergebene Dokument über die entsprechenden Drucker druckt.
Druckschleife:
For Each Ctrl In Me.Controls
If TypeOf Ctrl Is CheckBox Then
If Not DirectCast(Ctrl, CheckBox).Name = "chkbArchiv" Then
If DirectCast(Ctrl, CheckBox).Checked Then
'MsgBox("Druck über " & DirectCast(Ctrl, CheckBox).Text)
Try
streamToPrint = New StreamReader(filePath)
Try
AddHandler PrintDocument1.PrintPage, AddressOf PrintDocument1_PrintPage
' Specify the printer to use.
PrintDocument1.PrinterSettings.PrinterName = DirectCast(Ctrl, CheckBox).Text
If pbAnzeige.Visible Then
PrintDocument1.Print()
ElseIf AxAcroPDF1.Visible Then
AxAcroPDF1.Print()
End If
Finally
streamToPrint.Close()
End Try
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End If
End If
End If
Next
Habe Google schon mit allem möglichen zu dem Thema gefüttert (vb Standarddrucker, auslesen, ermitteln, ändern, default printer, set, get, change, ...) komme aber immer nur auf die Einstellmöglichkeit für das PrintDocument (wie etwa auf der Hälfte des Code Snippets) das aberja leider nur für das entsprechende Control-Element gilt und nicht den System-Standard-Drucker setzt.
Ich freue mich auf eure Antworten
Grüße
Christoph
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 256064
Url: https://administrator.de/contentid/256064
Ausgedruckt am: 24.11.2024 um 08:11 Uhr
5 Kommentare
Neuester Kommentar
Hi,
das geht mit dem ActiveXControl des Readers nicht, da das ActiveX-Control die Printersettings ignoriert. Wenn man stattdessen Acrobat installiert hätte, ließe sich das eventuell damit lösen.
Willst du diesen Dialog unbedingt verwenden, musst du wohl oder übel für den Druckvorgang den Standarddrucker via Code wechseln, anders geht es hier nicht. Außer man ändert das Dropdown über die Win32-API, was aber doch einigen Aufwand bedeutet.
Gruß jodel32
das geht mit dem ActiveXControl des Readers nicht, da das ActiveX-Control die Printersettings ignoriert. Wenn man stattdessen Acrobat installiert hätte, ließe sich das eventuell damit lösen.
Willst du diesen Dialog unbedingt verwenden, musst du wohl oder übel für den Druckvorgang den Standarddrucker via Code wechseln, anders geht es hier nicht. Außer man ändert das Dropdown über die Win32-API, was aber doch einigen Aufwand bedeutet.
Gruß jodel32
Sicher, aber das findet sich an jeder Ecke des Web .....
na aber das mit dem WSHNetwork Objekt läuft hier ebenso einwandfrei, man muss es nur richtig anpassen
Gruß jodel32
Gruß jodel32