mesaou
Goto Top

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:
     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

Content-ID: 256064

Url: https://administrator.de/contentid/256064

Ausgedruckt am: 24.11.2024 um 08:11 Uhr

114757
114757 27.11.2014 aktualisiert um 19:01:39 Uhr
Goto Top
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
Mesaou
Mesaou 28.11.2014 um 08:38:40 Uhr
Goto Top
Ich bin nicht auf den Dialog festgelegt wr nur bisher die einzige Lösung, die ich gefunden hatte. hatte es vorher mit dem WebBrowserControl versucht, bin da aber auf ein ähnliches Problem gestoßen. Gibt es ne Möglichkeit den Standard-Drucker direkt zu ändern? Wenn ich das Programm offen habe und dann manuell über das Druckermenü den Standard-Drucker ändere, wird beim nächsten "Adobe-Druck-Fenster" der neue Standard-Drucker vorgeschlagen. Dass die Printsettings in meinem Code-Auschnitt nicht für den AxArcoRd gelten ist mir auch klar (steht ja explizit davor PrintDocument1.xxx).
114757
Lösung 114757 28.11.2014 aktualisiert um 15:03:46 Uhr
Goto Top
Zitat von @Mesaou:
Gibt es ne Möglichkeit den
Standard-Drucker direkt zu ändern?
Sicher, aber das findet sich an jeder Ecke des Web .....
Mesaou
Mesaou 28.11.2014 aktualisiert um 16:37:07 Uhr
Goto Top
Der Vorschlag von AnharMiah im zweiten Link hat den Erfolg gebracht. Die anderen Ansätze haben leider bei mir nicht funktioniert. Danke dir jodel32
114757
114757 29.11.2014 um 09:43:17 Uhr
Goto Top
na aber das mit dem WSHNetwork Objekt läuft hier ebenso einwandfrei, man muss es nur richtig anpassen face-wink

Gruß jodel32