помощь в копировании

  • Автор темы NoRW
  • Дата начала
N

NoRW

#1
Всем здравствуйте! Описываю ситуацию. Есть МФУ(струйное) и лазерный принтер. Как вы понимаете на струйном МФУ копии делать дорого. И вот у меня к вам такой вопрос, есть ли какая-нибудь прога, чтобы при сканировании через неё я нажимал одну кнопку(в проге) и отсканированый фаил сразу же шел на печать на лазерник? Заранее благодарен за помощь.
 
T

TimeDontWait

#2
Можно сделать упрощенный процесс
ADobe FineReader, в настройках ставишь сканировать несколько страниц, будет происходить автоматическое сканирование с паузами. Потом отрпавляеш на печать.

В фотошопе можно написать макросы, выставлять время для паузы
 
T

TimeDontWait

#3
Дальше, можно такое, своеобразный кеш:
1) Задаем сохранение всех файлов в определенный каталог;
2) Пишем скрипт для выборки файлов из каталога, поочередной печати и удаления(чтоб не засорять)
3) Ярлык скрипта на рабочий стол и все

Добавлено:
Для сканирования документов можно использовать WIA от Microsoft. Для этого необходимо предварительно установить библиотеку wiaaut.dll от MS. Т.е. ее необходимо скачать, установить (используя regsvr32.exe) и далее можно использовать методы COM-объекта WIA.

В приведенном коде основной является функция SilentScan(). Поэтому, чтобы начать сканирование, необходимо запускать именно ее, передав полный путь к сохраняемому файлу. В этом примере файл сохраняется в формате jpg, хотя, если это необходимо, WIA позволяет конвертировать полученный объект в ряд других форматов (bmp, png, tiff, gif, jpg). Вообще по-умолчанию после сканирования получается объект в формате bmp. Поэтому, если Вам нужен только bmp-файл, можно просто делать imageFile.SaveFile(FileName) без преобразования. Вроде бы все. Да, и не забудьте подключить к скрипту scr_Utils и scr_FileUtils.
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Код</div></div><div class="sp-body"><div class="sp-content">//-----------------------------------------------------------------------------
// scr_ScanUtils
//-----------------------------------------------------------------------------

// Device Types
var UnspecifiedDeviceType = 0;
var ScannerDeviceType = 1;
var CameraDeviceType = 2;
var VideoDeviceType = 3;

// Commands
var wiaCommandSynchronize = '{9B26B7B2-ACAD-11D2-A093-00C04F72DC3C}';
var wiaCommandTakePicture = '{AF933CAC-ACAD-11D2-A093-00C04F72DC3C}';
var wiaCommandDeleteAllItems = '{E208C170-ACAD-11D2-A093-00C04F72DC3C}';
var wiaCommandChangeDocument = '{04E725B0-ACAE-11D2-A093-00C04F72DC3C}';
var wiaCommandUnloadDocument = '{1F3B3D8E-ACAE-11D2-A093-00C04F72DC3C}';

// Picture formats
var wiaFormatBMP = '{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}';
var wiaFormatPNG = '{B96B3CAF-0728-11D3-9D7B-0000F81EF32E}';
var wiaFormatGIF = '{B96B3CB0-0728-11D3-9D7B-0000F81EF32E}';
var wiaFormatJPEG = '{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}';
var wiaFormatTIFF = '{B96B3CB1-0728-11D3-9D7B-0000F81EF32E}';

// Группа "Все файлы"
var RootFilesGroup = '{F03EDFB0-C246-4A9D-B0E4-DA8C8B3DD338}';

function ConvertImageFile(ImageFile, Format) {
var IP = System.CreateObject("Wia.ImageProcess");
IP.Filters.Add(IP.FilterInfos("Convert").FilterID);
IP.Filters(1).Properties("FormatID").Value = Format;
var Img = IP.Apply(ImageFile);
return Img;
}

// Сканирование без диалоговых окон на сканер по-умолчанию
function SilentScan(FileName) {
try {
System.BeginProcessing();
var Device;
var Dialog = System.CreateObject("WIA.CommonDialog");
var DeviceManager = System.CreateObject("WIA.DeviceManager");
var Count = DeviceManager.DeviceInfos.Count;
for(var j = 1; j <= Count; j++) {
var DeviceInfo = DeviceManager.DeviceInfos.Item(j);
if (DeviceInfo.Type == ScannerDeviceType) {
Device = DeviceInfo.Connect();
break;
}
}
if (!Assigned(Device)) {
Log.Write(2, "Сканер не обнаружен.");
return;
}
if ((Assigned(Device.Items)) && (Assigned(Device.Items.Item(1)))) {
var item = Device.Items.Item(1);
try {
var Intent = 1; // цветная печать
/* Параметры сканирования */
var Properties = item.Properties;
for (var i = 1; i <= Properties.Count; i++) {
var PropItem = Properties.Item(i);
switch(PropItem.PropertyID) {
/* Horizontal Resolution */
case 6147: PropItem.Value = 150;
break;
/* Vertical Resolution */
case 6148: PropItem.Value = 150;
break;
/* Horizontal Starting Position (Scanning Area) */
case 6149: PropItem.Value = 0;
break;
/* Vertical Starting Position (Scanning Area) */
case 6150: PropItem.Value = 0;
break;
/* Current Intent */
case 6146: PropItem.Value = Intent;
break;
}
}
/* Старт сканирования */
var imageFile = Dialog.ShowTransfer(item);
if (Assigned(imageFile)) {
if (CheckFileExists(FileName)) {
FileName = GetTemporaryFileName(ShortFileName, false)
}
/* Преобразование полученного файла в jpeg */
var WIAFormat = wiaFormatJPEG;
var Img = ConvertImageFile(imageFile, WIAFormat);
Img.SaveFile(FileName);
}
} catch(e) {
Log.Write(2, "При сканировании произошла ошибка. Попробуйте, пожалуйста, еще раз.");
}
} else {
Log.Write(2, "При инициализации произошла ошибка.");
}
} finally {
System.EndProcessing();
}
}

function Main() {
SilentScan("c:\\temp\\Test.jpg");
}
 
T

TimeDontWait

#4
А вот пример скрипта для печати файлов из указанной папки:
Код:
Option Explicit
Const PrintFolder = "C:\Logs\" 


DIM objShell : Set objShell = CreateObject("Shell.Application")
DIM objFolder : Set objFolder = objShell.Namespace(PrintFolder) 
Dim objItem
For Each objItem in objFolder.Items
'WScript.Echo "Printing..." & objItem.Path
objItem.InvokeVerbEx("Print")
Next