Что нового

[Автоматизация] Скрипт для печати PDF из папки

espirit

Новичок
Сообщения
2
Репутация
0
Версия AutoIt: 3.

Описание: Нужен скрипт, который, постоянно вися в памяти, будет отслеживать появление новых файлов PDF в определенном каталоге и, при появлении нового файла, открывать его в acrobate reader и отправлять на печать.
При этом, напечатанный файл может либо удаляться, либо просто вносится в какую-то базу, как обработанный.
 
Автор
E

espirit

Новичок
Сообщения
2
Репутация
0
То, что нужно!
Спасибо, буду тестить.
 

axlwor

Скриптер
Сообщения
657
Репутация
147
OffTopic:
зачем придумывать лишние костыли?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
axlwor [?]
зачем придумывать лишние костыли?
перевод на другой яп не является костылем, либо у нас разные понимания этого жаргона. а переводить имеет смысл хотя бы для того, чтобы человек не знакомый с vbs мог в случае чего скрипт модифицировать.
 

axlwor

Скриптер
Сообщения
657
Репутация
147
OffTopic:
Kaster, ты предлагаешь запускать акробат. потом нажимать на меню файл, потом печать, потом печатать?
перевод на другой яп может быть обусловлен только недостаточностью функционала. а vbs (в общем то я бы задание реализовал в cmd) вполне подходит для запуска приложения с ключами - меньше нажимать на кнопки
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
axlwor [?]
перевод на другой яп может быть обусловлен только недостаточностью функционала.
это неверное утверждение. один из аргументов я описал выше. хотя, судя по твоим последним сообщениям, ты не вполне знаком с AutoIt.
 

VladUs

Скриптер
Сообщения
621
Репутация
180
axlwor [?]
Kaster, ты предлагаешь запускать акробат. потом нажимать на меню файл, потом печать, потом печатать?
Да уж .. :blink:

Код:
;Автоматическая печать PDF-файлов, появляющихся в определенной папке
;Глобальные переменные
$gFSO = ObjCreate("Scripting.FileSystemObject")
$gShell = ObjCreate("WScript.Shell")
;Папка, в которой скрипт ждет PDF-файлы (к этой папке (папкам) д.б. дан доступ по сети)
$gWatchFolder = "C:\test\"
;Основной цикл
While true
$lFolder = $gFSO.GetFolder($gWatchFolder)
$lFiles = $lFolder.Files
For  $lFile In $lFiles
PrintFile($gWatchFolder & $lFile.Name)
Sleep(100)
Next
WEnd

;Функция печати конкретного pdf-файла
Func PrintFile($pFileName)
;Ждем некоторе время (пока файл до конца запишется)
Sleep(300)
;msgbox(1,'',$pFileName)
;Мы (больше) не боимся пробелов :Р
$s = """c:\Program Files\Foxit Software\Foxit Reader\Foxit Reader.exe"" /p """ & $pFileName
;msgbox (1,'',$s)
$gShell.Run($s,0,true)
$gFSO.DeleteFile($pFileName)
If $gFSO.FileExists($pFileName) Then
;Мало ли чего может случиться, лучше пусть у Иван Иваныча перестанет печатать, чем один файл много раз уйдет на принтер
;msgbox(1,"","Не удалось удалить файл " & $pFileName & " ! Позвоните Василию по т. 123-456")
Exit
Else
;Пока не реализовано
;ToLog(«Файл » & lFileName & » удален.»)
EndIf
EndFunc


Вот что подразумевалось под фразой перевести код на Autoit
 

black1

C++,Pic
Сообщения
39
Репутация
0
Foxit Reader.exe /p

Возникла трудность, через командную строку можно написать еще с /t выбор принтера
но нету таких параметров как Количество страниц, режим Дуплекс или Симплекс(двухсторонней или односторонней печати)
Придется делать через COM? там вродебы Количество страниц можно но вот Дуплекс печать как выбрать.. :scratch: ( Дуплекс задается в настройках принтера)
 

unsend

Новичок
Сообщения
26
Репутация
2
Есть альтернативный вариант - создаете несколько принтеров с дуплексом, без дуплекса и тд и со всех в один порт отправляете. Вариант конечно не совсем тру но зато точно рабочий и простой.
 

denver323

Новичок
Сообщения
1
Репутация
0
Возникла подобная проблема, только печатать надо tif из локальной папки...
З.Ы. делаю печать через paint - печатает, через диспетчер рисунков офиса, программу просмотра изображений и факсов, просмотрщик от МФУ panasonic -не печатает..
 
Верх