Предыстория...
1. Управляемое приложение.
2. Компонента AddIn.КартинкаШтрихкода.Barcode не хочет поворачивать штрих-код на 90 градусов. Не получается этого добиться - выдает какую-то ерунду.
Результатом работы компоненты являются двоичные данные (картинка штрих-кода).
Возникла мысль сохранить её во временный каталог и обработать вот этим скриптом на сервере:
Функция ПовернутьИзображение(фКартинки,УголПоворота)
//Ресайз файла картинки
Скрипт = "
|Function RotateImage(ImageFile,Angle,ResultFile)
|Dim Img 'As ImageFile
|Dim IP 'As ImageProcess
|Dim objFSO
|On Error Resume Next
|
|Set Img = CreateObject(""WIA.ImageFile"")
|Set IP = CreateObject(""WIA.ImageProcess"")
|Set objFSO = CreateObject(""Scripting.FileSystemObject"")
|
|Img.LoadFile ImageFile
|
|IP.Filters.Add IP.FilterInfos(""RotateFlip"").FilterID
|IP.Filters(1).Properties(""RotationAngle"") = Angle
|
|Set Img = IP.Apply(Img)
|
|If objFSO.FileExists(ResultFile) Then
| objFSO.DeleteFile ResultFile
|End If
|If Err.Number = 0 Then
| Img.SaveFile ResultFile
| RotateImage = 1
|Else
| RotateImage = 0
|End if
|End function
|";
ИспСкрипт= Новый ComОбъект("MSScriptControl.ScriptControl");
ИспСкрипт.Language="vbscript";
ИспСкрипт.AddCode(Скрипт);
ВремФайл = КаталогВременныхФайлов() + "TempWIA1Cimagefile.bmp";
Рез = ИспСкрипт.Run("RotateImage",фКартинки,УголПоворота,ВремФайл);
Если Рез Тогда
К = Новый Картинка(ВремФайл);
Иначе
Предупреждение("Не удалось загрузить картинку!");
К = Новый Картинка(ВремФайл);
КонецЕсли;
Возврат К;
КонецФункции
В режиме обычного приложения это работает. Но на сервере не хочет работать. Выдает сообщение ошибки на то, что не найден файл. Видать проблемы с доступом.
(7) Можно еще запуск от имени использовать. Это если проблема действительно в правах, а не в кривом скрипте.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший