Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   автоматическая печать (http://forum.oszone.net/showthread.php?t=261007)

krylovlf 22-05-2013 07:48 2153866

автоматическая печать
 
Добрый день!
Купили плоттер с сетевым сканированием, для экономии $ выбрали модель без PS, и как результат сканирование идет только в TIFF и JPEG.
Все же хочется сканы иметь в PDF.
Мысли: файл TIFF или JPEG попадает в сетевую папку->скрипт автоматически его подхватывает и отправляет на PDF принтер->принтер сохраняет его в туже папку только уже в PDF->Perfect)
Реально? Может существуют готовые решения?

krylovlf 25-05-2013 12:40 2155989

/up

Iska 25-05-2013 16:56 2156099

1. Зачем именно печатать, когда можно просто конвертировать:
Код:

"C:\Program Files\XnView\nconvert.exe" -out pdf "E:\Песочница\0256\*.jpg
? Мне, мягко говоря, совсем непонятна и сама нужда в pdf.

2. Что делать с графическими файлами затем?

3.
Цитата:

Цитата krylovlf
в туже папку »

— нецелесообразно.

krylovlf 26-05-2013 08:37 2156398

1. пробую, но как я понимаю XnView нехалявен для контор.
2. делаем отчетность, требование pdf, руками конвертировать не предлагать.
3. почему?

Iska 26-05-2013 14:17 2156530

Цитата:

Цитата krylovlf
1. пробую, но как я понимаю XnView нехалявен для контор. »

Вы совершенно правы:
читать дальше »
Цитата:

NConvert is provided as FREEWARE (NO Adware, NO Spyware) for private or educational use (including non-profit organizations).

If you intend to use NConvert commercialy, you should purchase a license.

Business License - 100€+VAT: One license per one company or one application. You may not sell or distribute as a developer toolkit, or use as a server application.

Site License - 300€+VAT: One license for an unimited number of applications. You may not sell or distribute as a developer toolkit.

ImageMagick Вас устроит:
Код:

for %i in (*.jpg) do @"%ProgramFiles%\ImageMagick-6.3.4-Q8\convert.exe" "%~fi" -format pdf "%~dpni.pdf"
(лицензия: ImageMagick: License)?

Цитата:

Цитата krylovlf
2. делаем отчетность, требование pdf, »

Ясно.

Цитата:

Цитата krylovlf
3. почему? »

Ненужная работа при отслеживании новых файлов.

krylovlf 27-05-2013 09:52 2156966

Iska,
большое спасибо :)
из командной строки работает, а из bat файла нет, я что то не то делаю:
Код:

for %i in (*.jpg) do @"C:\ImageMagick\convert.exe" "%~fi" -format pdf "%~dpni.pdf"
при выполнении батника пишет:
Код:

C:\ImageMagick\images_to_pdf>IM.cmd
Следующее использование оператора пути при подстановке параметров
в пакетных файлах является недопустимым: %~fi" -format pdf "%~dpni.pdf"

Для просмотра списка допустимых форматов введите CALL /? или FOR /?
Непредвиденное появление: IM.cmd.

C:\ImageMagick\images_to_pdf>for \ImageMagick\convert.exe "agick\convert.exe "%~
fi" -format pdf "%~dpni.pdf"
C:\ImageMagick\images_to_pdf>


Georgio 27-05-2013 09:59 2156970

krylovlf, для BAT-файла нужно записать так:

Код:

for %%i in (*.jpg) do @"C:\ImageMagick\convert.exe" "%%~fi" -format pdf "%%~dpni.pdf"

krylovlf 27-05-2013 10:55 2156998

промежуточный результат:
convert.bat
Код:

:watchit
if exist C:\ImageMagick\images_to_pdf\*.jpg goto doit
C:\ImageMagick\images_to_pdf\sleep.exe 1
goto watchit
:doit
@echo off
setlocal
for %%i in (*.jpg) do call:rename "%%i"
goto:eof
:rename
set /a cnt+=1
set "pref=00%cnt%"
ren %1 "%date:~6,4%_%date:~3,2%_%date:~0,2%_%pref:~-3%.jpg"
if not %errorlevel% == 0 goto doit
start IM.bat
C:\ImageMagick\images_to_pdf\sleep.exe 3
start convert.bat
exit

im.bat
Код:

for %%i in (*.jpg) do @"C:\ImageMagick\convert.exe" "%%~fi" -format pdf "%%~dpni.pdf"
del /f /q C:\ImageMagick\images_to_pdf\*.jpg
exit

Жду критики.
Непонятно можно-ли первый батник поставить на ожидание завершения второго, и непонятно как победить удаления не отконвертированных файлов, т.е. когда появился jpg запускается конверт, и если в этот момент появляется еще один jpg то конвертироваться он не отправляется, а удаляется, может нужно temp папку создать - еще думаю.

Georgio 27-05-2013 12:18 2157045

Цитата:

Цитата krylovlf
Жду критики. »


Проверять не на чем. Но что-нибудь подсказать можно. У Вас зтот "промежуточный" вариант работает?



Цитата:

Цитата krylovlf
Непонятно можно-ли первый батник поставить на ожидание завершения второго »


Можно:
Код:

START /WAIT im.bat


Цитата:

Цитата krylovlf
непонятно как победить удаления не отконвертированных файлов »


Попробуйте с такими изменениями:

convert.bat
Код:

:watchit
FOR %%i IN (C:\ImageMagick\images_to_pdf\*.jpg) SET VAR_%%~ni=%%i
FOR /F "tokens=2 delims==" %%i IN ('SET VAR_') DO IF EXIST %%i GOTO doit
C:\ImageMagick\images_to_pdf\sleep.exe 1
goto watchit
:doit
@echo off
setlocal
FOR /F "tokens=2 delims==" %%i IN ('SET VAR_') DO CALL :rename %%i
goto:eof
:rename
set /a cnt+=1
set "pref=00%cnt%"
ren %1 "%date:~6,4%_%date:~3,2%_%date:~0,2%_%pref:~-3%.jpg"
if not %errorlevel% == 0 goto doit
START /WAIT IM.bat
C:\ImageMagick\images_to_pdf\sleep.exe 3
start convert.bat
exit

im.bat
Код:

FOR /F "tokens=2 delims==" %%i IN ('SET VAR_') DO (
@"C:\ImageMagick\convert.exe" "%%i" -format pdf "%%~dpni.pdf"
DEL /F /Q %%i
)
exit

Писал "на коленке", мог не всё учесть, проверяйте.

krylovlf 28-05-2013 13:42 2157702

Georgio, взял на вооружение) но скорее всего не понадобится, т.к. скан в идеальных условиях приходит максимум через 20 сек, на конвертацию а1 нужно 3 сек.
у меня другие проблемы:
1) если поставить в планировщик задач то скрипт перестает работать как только в нужную папку приходит файл.
2) не знаю как ставить в планировщик, поскольку скрипт зациклен и работает вечно.
3) если запустить главный скрипт заново то переименование начнется сначала, т.е. будет перезаписывать уже существующие пдфки.
Код:

:watchit
if exist C:\ImageMagick\images_to_pdf\*.jpg goto doit
C:\ImageMagick\images_to_pdf\sleep.exe 1
goto watchit
:doit
@echo off
C:\ImageMagick\images_to_pdf\sleep.exe 3
setlocal
for %%i in (*.jpg) do call:rename "%%i"
goto:eof
:rename
set /a cnt+=1
set "pref=00%cnt%"
ren %1 "%date:~6,4%_%date:~3,2%_%date:~0,2%_%pref:~-3%.jpg"
if not %errorlevel% == 0 goto doit
rem C:\ImageMagick\images_to_pdf\sleep.exe 10
start /wait IM.bat
C:\ImageMagick\images_to_pdf\sleep.exe 3
goto :watchit

Код:

for %%i in (*.jpg) do @"C:\ImageMagick\convert.exe" "%%~fi" -format pdf "%%~dpni.pdf"
del /f /q C:\ImageMagick\images_to_pdf\*.jpg
exit


Iska 29-05-2013 11:22 2158329

krylovlf, попробуйте WSH:
читать дальше »
Код:

Option Explicit

Dim strSourceFolder
Dim strDestFolder

Dim strComputer

Dim objSWbemLocator
Dim objSWbemServicesEx
Dim objSWbemObjectEx
Dim objSWbemSink


strSourceFolder = "e:\Песочница\0190\Source"
strDestFolder  = "e:\Песочница\0190\Destination"

strComputer = "."

Set objSWbemLocator    = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")
Set objSWbemSink      = WScript.CreateObject("WbemScripting.SWbemSink", "Sink_")

objSWbemServicesEx.ExecNotificationQueryAsync objSWbemSink, _
        "SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE " &_
        "TargetInstance ISA 'CIM_DirectoryContainsFile' AND " &_
        "TargetInstance.GroupComponent = 'Win32_Directory.Name=""" & Replace(strSourceFolder, "\", "\\\\") & """'"

WScript.Echo "Folder: [" & strSourceFolder & "] (waiting for files...)"
WScript.Echo

Do
        WScript.Sleep 100
Loop

objSWbemSink.Cancel

Set objSWbemSink      = Nothing
Set objSWbemServicesEx = Nothing
Set objSWbemLocator    = Nothing

WScript.Quit 0
'=============================================================================

'=============================================================================
Sub Sink_OnObjectReady(objSWbemObjectEx, objSWbemAsyncContext)
        With objSWbemServicesEx.Get(objSWbemObjectEx.TargetInstance.PartComponent)
                Select Case LCase(.Extension)
                        Case "jpg", "jpeg"
                                WScript.Echo Now() & " |  | [" & .Name & "]"
                                If WScript.CreateObject("WScript.Shell").Run("""%ProgramFiles%\ImageMagick-6.3.4-Q8\convert.exe"" """ & .Name & """ -format pdf """ & strDestFolder & "\" & .FileName & ".pdf""", 0, True) = 0 Then
                                        .Delete
                                Else
                                        WScript.Echo Now() & " |  | Can't convert [" & .Name & "] into pdf"
                                End If
                        Case Else
                                ' Nothing to do
                End Select
        End With
End Sub


Запускать при помощи консольного хоста:
Код:

cscript.exe //nologo "Путь\Скрипт.vbs"
Имейте в виду: существующие одноимённые pdf-файлы в «strDestFolder» будут перезаписываться без запросов.


Время: 00:24.

Время: 00:24.
© OSzone.net 2001-