автоматическая печать
Добрый день!
Купили плоттер с сетевым сканированием, для экономии $ выбрали модель без PS, и как результат сканирование идет только в TIFF и JPEG.
Все же хочется сканы иметь в PDF.
Мысли: файл TIFF или JPEG попадает в сетевую папку->скрипт автоматически его подхватывает и отправляет на PDF принтер->принтер сохраняет его в туже папку только уже в PDF->Perfect)
Реально? Может существуют готовые решения?
|
1. Зачем именно печатать, когда можно просто конвертировать:
Код:
"C:\Program Files\XnView\nconvert.exe" -out pdf "E:\Песочница\0256\*.jpg
? Мне, мягко говоря, совсем непонятна и сама нужда в pdf.
2. Что делать с графическими файлами затем?
3.
— нецелесообразно.
|
1. пробую, но как я понимаю XnView нехалявен для контор.
2. делаем отчетность, требование pdf, руками конвертировать не предлагать.
3. почему?
|
Цитата:
Цитата 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, »
|
Ясно.
Ненужная работа при отслеживании новых файлов.
|
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>
|
krylovlf, для BAT-файла нужно записать так:
Код:
for %%i in (*.jpg) do @"C:\ImageMagick\convert.exe" "%%~fi" -format pdf "%%~dpni.pdf"
|
промежуточный результат:
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 папку создать - еще думаю.
|
Проверять не на чем. Но что-нибудь подсказать можно. У Вас зтот "промежуточный" вариант работает?
Цитата:
Цитата krylovlf
Непонятно можно-ли первый батник поставить на ожидание завершения второго »
|
Можно:
Цитата:
Цитата 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
Писал "на коленке", мог не всё учесть, проверяйте.
|
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
|
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.
© OSzone.net 2001-