v8: Терминал+любой twain сканер клиента->pdf+ActiveX pdf в формеПередача twain сканера клиента в терминал с сохранением скана в графические файлы ходовых форматов (в т.ч. pdf), сканирование нескольких страниц в один файл, сканирование пакета страниц. Полноценная работа с pdf через ActiveX объект в форме. Обсуждение статьи на http://www.forum.mista.ru/topic.php?id=224116 | | Автор статьи: TEN | Редакторы: Последняя редакция №8 от 30.10.06 | История URL: http://kb.mista.ru/article.php?id=399 | |
Ключевые слова: терминал, twain, сканер, планшетный, ActiveX, pdf в V8
Задачи:
1.Получить в терминале доступ к twain-сканеру клиента.
2.Получить доступ к отсканированному из V8.
3.Найти альтернативу тормозной работе с графикой в 1V8. То бишь нормальный вьювер картинки, с печатью, быстрым масшатированием, вращением и т.д.
Решение
1.1. Сканер
Вот тут три способа расшаривания сканера:
1.1.1 http://www.cit-masters.ru/blindscanner/ru/download.php
Софтина называется BlindScanner. Триал 15 дней. Цена 750 р.
На локальной машине ставим сервер.
Настройка - какой сканер шарить.
На любой удаленной машине (в т.ч. терминале) - ставим клиента.
Настройка: имя машины сервера сканера, имя сканера, тест сканера.
Или - морда к твейну сканера.
К сожалению не работает из командной строки. При запуске клиента появляется морда в которой выбирается каталог сохранения (имя формируется из даты и времени), формат, способ сканирования, разрешение, кол. цветов.
Списался с авторами, уламываю их на коммандную строки. Только что прислали Бету, еще не пробовал, потому как не особо нужно (об этом ниже, там же про нафига командная строка).
1.1.2 http://www.remote-scan.com/
Название софтины RemoteScan. Тоже клиент-сервер. Обеспечивает полноценную передачу twain на удаленную машину (в списке доступных сканеров появляется еще один)
1.1.3.http://www.itadvisor.ru/sites/ita/HTML/pts.htm
Самопальная реализация терминала. Оно конечно интересно, но сносить сервер, терминал и цитрикс заради эксперимента - как-то не готов.
Остановился на первом (BlindScanner). Причины: 1. Функциональность - выше второго. 2. Буржуев - давить! 3. На сегодня нет интерфейса V8-twain работающего под win2003. Ребята написали управление из командной строки.
Линки на версии BlindScanner которые еще не доступны с сайта авторов (по их разрешению):
BlindScanner с управлением из командной строки. Синтаксис:
client.exe -resolution=200 -mode=2 -ext=bmp -path=c:\images -start=1 -close=1
где resolution (100, 200, 300, 450, 600, 1200, 2400) - разрешение
mode (1, 2, 3) - режим цвета ЧБ, серый и в цвете соответственно
ext (bmp, pdf, tiff, png, gif, jpg) - формат выходного файла
path - папка для сохранения файлов (только уже существующая)
start (1, 0) - запускать сканирование и прятать интерфейс
close (1, 0) - закрывать программу BlindScanner по окончании сканирования (не имеет смысла без предыдущего параметра)
отсутствие какого-либо параметра означает использование соответствующей настройки сохраненной ранее
отсутствие параметров close и start соответствует -start=0 -close=0
(не запускать сканирование, не скрывать интерфейс, не закрывать программу)
мультистраничность, таймер, ADF и др. параметры если Вам нужны, то реализуем в следующей версии.
Лежит тут:
http://www.cit-masters.ru/blindscanner/download/setupbs.exe
BlindScanner с twain интерфейсом. Т.е. в том же фотошопе выбираем сканер установленный на удаленной машине и пользуемся интерфейсом его драйвера.
Бета-версию можно скачать по ссылке http://www.cit-masters.ru/blindscanner/download/bs22.exe
Доступ к отсканированному из V8.
Итак, сканер в терминале есть. С первой идеей найти длл-ку под 8-ку для твейна - облом.
Лучшая на сегодня
http://1c.proclub.ru/modules/mydownloads/personal.php?lid=6657&topic_id=280926&forum=6&viewmode=flat&order=DESC&cid=123&start=10
не работает под win2003. Списался с автором, проблему он понял, обещал как будет время - поправит. Пока ждем.
Идем в обход. У BlindScanner - есть собственная морда, которая позволяет сохранить отсканированное в файл, в т.ч. в pdf. Соответственно по кнопке "Сканировать" в форме 1С - просто стартуем внешнее приложение, запуская клиента BlindScanner.
Вот тут бы для полного кайфа - командная строка. Но нету. Появляется морда, где можно шаловливыми ручками повыбирать форматы, режимы сканирования. Пока, приходится строить необучаемых теток. Надеюсь, что ребята из BlindScanner в ближайшее время дадут возможность эту морду спрятать.
Работа с картинками в V8.
Если коротко - удручающе. Началось с того, что честно заюзав формат png (заявленное в восьмерке)-получил фигу. Показывать этот формат мы не умеем. По крайней мере в формах. Ладно. Играем с gif, tif (хочется многостраничные картинки). В принципе - нормально, но!
Щелкнул "масшатбировать". Прикурил... Включил чайник... Еще пара затяжек - опа. Отработала. Грустно.
А про FitToWidth, Page, печать третьей картинки скана, да еще с масштабированием... Совсем стало грустно.
Начал репу чесать на предмет заюзать какую-нить нормальную гляделку. Вспомнил о замечательном фокситридере (акробат - масдай)! Залез на сайт - есть в жизни Щастье! Ребята дают халявный АктивХ.
http://www.foxitsoftware.com/pdf/sdk/activex/
Дальше все просто - втыкаем в форму АктивХ от фоксита, списки отсканированного, кнопку сканировать, печатать, элементы интерфейс клиента сканера (ну там - разрешение, если нужно, одну страницу, или много и т.д.)
По кнопке сканировать - делаем в %темпе% каталог, грохаем содержимое, стартуем клиента BlindScanner.
Вариантов старта ажно три:
можно запустить морду твейна сканера, т.е. будет сканировать, как в Фотошопе;
можно морду сканирования в файл (каталог, формат, разрешение, цвет, многостраничность, сканирование по таймеру);
можно запустить без морды, передав все через командную строку. При желании (настройка сервера) появится окошко с процентами процесса сканирования. Такой подход позволяет вынести необходимые элементы интерфейса управления сканером в форму 1С.
Объемы pdf из двхуцветного скана А4 (сжатие 10): разрешение 300 - 85 кб; 200=30 кб. Качество распечатки при 300 - не отличается от качественного ксерокса. При 200-чуть хуже. Свободно читается с экрана. Опять же многостраничность.
Короче, закончили сканирование, получили один (или несколько) файлов, одно, или несколько-страничных.
Дальше, обходим выбранный каталог, добавляя строчки в список отсканированного, все что нашли запихиваем поле с типом "хранилище", списка. У меня справочник, в котором элемент - некое событие (заключение договора, изменения, пролонгирование, расторжение), там дата и примечание. К элементу присобачено табличное поле. Строки поля - содержат ХранилищеЗначения, где лежат pdf.
В событии активизация строчки табличного поля справочника:
- командуем АктивХ-у закрыть текущий файл pdf
- вытаскиваем файлик из хранилища,
- командуем АктивХ-у открыть файлик
Примерно так:
Процедура КартинкиПриАктивизацииСтроки(Элемент)
ЭлементыФормы.Фоксит.CloseFile(); //отцепляем pdf от АктивХ, иначе фиг файл удалишь
УдалитьФайлы("%temp%temp.pdf"); //убиваем старый файлик
//берем новый из текущей строки табличного поля элемента справочника
ТекКарт=ЭлементыФормы.Картинки.ТекущаяСтрока.Картинка.Получить().Записать("%temp%temp.pdf");
ЭлементыФормы.Фоксит.OpenFile("%temp%temp.pdf") //даем АктивХ новый файлик;
//Это примеры по управлению АктивХ, подробнее на сайте фоксита.
ЭлементыФормы.Фоксит.ShowBookmark(0);
ЭлементыФормы.Фоксит.ShowTitleBar(0);
ЭлементыФормы.Фоксит.ShowStatusBar(0);
ЭлементыФормы.Фоксит.SetZoomLevel(Масштаб); //Масштаб - число из поля формы.
КонецПроцедуры
Кнопку печать - поручаем АктивХу:
ЭлементыФормы.Фоксит.Print();
Функциональности (по отношению к стандартной картинке формы)- несравнимы.
Если нужен полный код - напишу, но думаю особого смысла нет, все тривиально.
ЗЫ. Тестировалось все в связке V8 - 8.0.16.2, Win XP SP2 (клиент), Win2003 (сервер), терминал+MetaFrame 3. Сканер USB Benq 5250C (восстановленный). Кстати про восстановление закинул статью, может кому пригодится. Книга знаний: Ремонт сканера USB Benq 5250C (ошибка ffff:0024)
|