Бывает, что от компании требуется предоставить сканы документов в налоговую, и это можно сделать из 1с отчетности. Что удивительно - при привязке файлов к письму, разработчиками отчетности небыло предусмотрено никакой конвертации\сжатия картинок (только предупреждение, что, дескать, убедитесь что качество картинок соответствует), и когда бухгалтер через пару тысяч счет-фактур узнает что, видите ли, качество сканов слишком высокое - радости просто нету предела. По опыту, такие сканы просто не принимаются, приходит отбойник со словами "качество картинок не подходит".
Данная обработка заточена именно под налоговые, которым надо 150-300 dpi и 256-цветную ч\б картинку. Сначала искал что-то подобное, но примеров для работы с картинками из 1с не так уж и много.
Основа - компонента GFLAx, http://www.xnview.com/en/GFL/#downloads, ставится без проблем, если всетаки не работает - смотрим по ссылке http://infostart.ru/public/312924 (спасибо insurgut )
Можно конечно, сделать через фотошоп\ ирфан вью, но пользователям проще выбрать файлы и нажать одну кнопку, чем руками крутить настройки
Добавлю основную процедуру, которой на вход идет строка с путем к файлу или папке с картинками, конвертированые картинки складываются в *\Обработанные файлы\
Процедура ОбработатьКартинку(ПутьФайла) Экспорт МассивРасширенийКартинок = Новый Массив; МассивРасширенийКартинок.Добавить(".bmp"); МассивРасширенийКартинок.Добавить(".jpg"); МассивРасширенийКартинок.Добавить(".jpeg"); МассивРасширенийКартинок.Добавить(".tif"); МассивРасширенийКартинок.Добавить(".gif"); МассивРасширенийКартинок.Добавить(".png"); ВхФайл = Новый Файл(ПутьФайла); Если Не ВхФайл.Существует() Тогда Сообщить("Указанный файл\каталог не существует!"); Возврат; КонецЕсли; ОбъектКом = Новый COMОбъект("GFLAX.GFLAX"); Если ВхФайл.ЭтоКаталог() Тогда КаталогСохранения = ПутьФайла + ?(Прав(ПутьФайла,1) = "\", "", "\") + "Обработанные файлы\"; Файл = Новый Файл(КаталогСохранения); Если Не Файл.Существует() Тогда СоздатьКаталог(КаталогСохранения); КонецЕсли; /// Для Каждого Расширение Из МассивРасширенийКартинок Цикл НайдФайлы = НайтиФайлы(ПутьФайла, "*" + Расширение, Ложь); Для Каждого НайдФайл Из НайдФайлы Цикл КонвертироватьПересохранитьФайл(ОбъектКом, НайдФайл, КаталогСохранения); КонецЦикла; КонецЦикла; Иначе МассивЭлементов = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(ПутьФайла, "\"); ПутьФайла2 = СтрЗаменить(ПутьФайла, МассивЭлементов[МассивЭлементов.Количество()-1], ""); КаталогСохранения = ПутьФайла2 + ?(Прав(ПутьФайла2,1) = "\", "", "\") + "Обработанные файлы\"; Файл = Новый Файл(КаталогСохранения); Если Не Файл.Существует() Тогда СоздатьКаталог(КаталогСохранения); КонецЕсли; КонвертироватьПересохранитьФайл(ОбъектКом, ВхФайл, КаталогСохранения); КонецЕсли; Сообщить("=== Выполнено. Обработанные файлы помещены в """ + КаталогСохранения + """"); КонецПроцедуры Процедура КонвертироватьПересохранитьФайл(ОбъектКом, ВхФайл, КаталогСохранения) ТекИмяФайла = ВхФайл.ПолноеИмя; //ОбъектКом.EnableLZW = Истина;[=boolean] - для формата гиф ОбъектКом.LoadBitmap(ВхФайл.ПолноеИмя); ОбъектКом.Xdpi = 200; ОбъектКом.Ydpi = 200; ОбъектКом.ChangeColorDepth(256,0,1); ОбъектКом.SaveJPEGQuality = 75; Если ОбъектКом.SaveFormat <> 1 Тогда ОбъектКом.SaveFormat = 1; ТекИмяФайла = КаталогСохранения + ВхФайл.ИмяБезРасширения + ".jpg"; Иначе ТекИмяФайла = КаталогСохранения + ВхФайл.Имя; КонецЕсли; Попытка ОбъектКом.SaveBitmap(ТекИмяФайла); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецПроцедуры