Я запускаю сценарий vb на нашем сервере, который вызывается из клиента.
Мой сценарий должен распечатать этикетку pdf на специальном c принтере.
Я работаю с обычным напечатайте на лазерном принтере, если я скопирую файл на принтер следующим образом:
'Create the filesystem object
Set FSO = CreateObject("Scripting.FileSystemObject")
'Get a reference to the folder you want to search
set FLD = FSO.GetFolder(strFolder)
'loop through the folder and get the file names
For Each Fil In FLD.Files
If UCase(FSO.GetExtensionName(Fil.Name)) = "PDF" Then
FSO.CopyFile Fil.path, "\\servername\printername"
End If
Next
, но это не работает с этикетками. Когда я пробую, принтер этикеток переходит в режим ошибки. : - (
Он работает, если я сделаю это:
Set objShell = CreateObject( "WScript.Shell" )
objShell.run chr(34) & "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" & chr(34) &
" /p /h " & chr(34) & "filepath\filename" & chr(34)
, но затем он будет печатать на принтере по умолчанию.
Это тоже нормально, но по какой-то причине я могу Не устанавливаю принтер по умолчанию из сценария, вызываемого клиентом. Только если я захожу на сервер и запускаю сценарий вручную.
Вот что я делаю, чтобы установить принтер по умолчанию:
Set objNet = CreateObject("Wscript.Network")
objnet.AddWindowsPrinterConnection "\\servername\printername"
objnet.SetDefaultPrinter "\\servername\printername"
Поэтому я попробовал это:
Set objShell = CreateObject( "WScript.Shell" )
objShell.run chr(34) & "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" & chr(34) &
" /t " & chr(34) & "filepath\filename" & chr(34) & " " & chr(34) & "\\servername\printername" & chr(34) &
" " & chr(34) & "drivername" & chr(34) & " " & chr(34) & "portname" & chr(34)
, но когда я запускаю этот Adobe, открывается и показывает файл, и больше ничего не происходит.: - (
Кто-нибудь знает, как я могу либо заставить SetDefultPrinter работать или .... \ ArcroRd32.exe / t "filename" "printername" "Drivername" "portname"?