mixmastertobsi
Goto Top

VBS PDF drucken

Hallo zusammen,

eins vorweg - ich bin gespannt, ob es für mein Problem eine Lösung gibt.

Aufgabenstellung:
In einem Netzwerk Ordner sind PDF Dateien, die automatisch gedruckt werden sollen. Das VBS läuft als Dienst im Hintergrund. Die PDF Dateien werden automatisch auf dem Standardrucker gedruckt. Dies alles funktioniert jeduch nur, wenn ein Benutzer angemeldet ist. Sobald der User sich abmeldet, werden die PDF-Dokument zwar noch geduckt, jedoch nicht mehr auf dem richtigen Drucker. Irgend was bringt das System da durcheinander.

Meine Frage daher - wie kann ich per VBS eine PDF Datei drucken und den Druckername angeben? Danke!

kleiner Auszug aus dem Skript
set objShell = CreateObject("WScript.Shell")
iErrorCode = objShell.Run("AcroRd32.exe /p /h " & objitem.path)

Content-Key: 154023

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

Printed on: April 25, 2024 at 05:04 o'clock

Member: AndreasHoster
AndreasHoster Oct 29, 2010 at 07:18:16 (UTC)
Goto Top
Unter was für einem User Account läuft den der Dienst?
Vermutlich System, oder? Und vermutlich Interaktiv mit Desktop?

Wenn ja, lass den Dienst unter einem eigenem User laufen, der den richtigen Drucker als Standarddrucker definiert hat.
Mitglied: 60730
60730 Oct 29, 2010 at 13:57:18 (UTC)
Goto Top
Moin,

per VBS eine drucken und den Druckername angeben

Du mußt das anders lösen....
Der druckt zu 100% auf den Standarddrucker (siehe auch Andreas Antwort)

  • xyz im Script ist der Drucker, auf dem gedruckt werden soll und den stellst du so als Standarddrucker ein.


strComputer = "."  
Set objWMIService = GetObject("winmgmts:" _  
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")  
Set colInstalledPrinters =  objWMIService.ExecQuery _
    ("Select * from Win32_Printer Where Name = 'xyz'")  
For Each objPrinter in colInstalledPrinters
    objPrinter.SetDefaultPrinter()
Next

set objShell = CreateObject("WScript.Shell")  
iErrorCode = objShell.Run("AcroRd32.exe /p /h " & objitem.path)  

Gruß
Mitglied: 76109
76109 Oct 31, 2010 at 12:28:57 (UTC)
Goto Top
Hallo mixmastertobsi!

Andere Möglichkeit in etwa so:
Const AcrobatReader = """C:\Program Files (x86)\Adobe\Reader 9.0\Reader\AcroRd32.exe"" /t ""%1"""  
Const PrinterDriver = """C:\Windows\System32\Drivers\UsbPrint.sys"""  
Const PrinterName = """Canon MX850 Series Printer"""  
Const PrinterPort = """USB002"""  

Dim objShell, CmdLine
    
Set objShell = CreateObject("WScript.Shell")  

CmdLine = AcrobatReader & " " & PrinterName & " " & PrinterDriver & " " & PrinterPort	  
	
objShell.Run Replace(CmdLine, "%1", objItem.path)  

Gruß Dieter