Скопировать Фото Из Rishtext Поля

Rosna

Well-Known Member
12.11.2003
47
0
#1
Добрый день!

Возник такой вопрос - как можно из RishText поля взять приаттаченый файл (фото) и вставить его в другой документ уже в виде открытой картинки.

Пыталась просто скопировать RishText, но в итоге фото не появлятся, хоть и сохраняется в документе:

Код:
Set PhotoRttItem = OldDoc.GetFirstItem("photo")
If Not (PhotoRttItem is Nothing) then
Call doc.CopyItem(PhotoRttItem, "photo")
End If
...
Подскажите, есть ли другой способ?
В идеале нужно ресайзить фото при переносе, но с этим пока не разбиралась даже. %)
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 435
351
homepage.mac.com
#3
коротко
путь такой - дергаем файл через (DXL), лучше SAX, файл будет в base64, получаем DXL из целевого дока, вставляем нужный тег (<picture> с соответ атрибутами) в нужное место, загружаем DXL (соотвю целевому доку) обратно
будет ли опознавать картинки отличные от gif - не знаю

если нет - используя java: декодим base64 конвертим в gif, кодим в base64... повторяем часть верхнего алгоритма

Добавлено: преобразование форматов http://www.mkyong.com/java/how-to-write-an...o-file-imageio/
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 785
42
35
Киев
#4
Хм... ресайз делал без DXL.
1. детач файла
2. пропорциональный ресайз с использованием java
3. атач файла в документ

С ресайзом все достаточно просто.
А вот прикрепить в виде картинки... хм... даже не знаю... может это поможет
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 435
351
homepage.mac.com
#6
Хм... ресайз делал беp DXL.
1. детач файла
2. пропорциональный ресайз с использованием java
3. атач файла в документ

С ресайзом все достаточно просто.
А вот прикрепить в виде картинки... хм... даже не знаю... может это поможет
не совсем просто - если на сервере и нет прав на создание файлов в ФС
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 785
42
35
Киев
#7
не совсем просто - если на сервере и нет прав на создание файлов в ФС
И это тоже решается...
Права на директорию data есть всегда. Там и создаю временную директорию и делаю то что мне нужно.
Ну и конечно же агент подписан сервером.

Да... кстати... java использовалась только для ресайза и вызывалась из lotusscript
 

Rosna

Well-Known Member
12.11.2003
47
0
#13
Думаю, можно сохранять фото на локальном компе, так как создание нового документа с фото будет инициироваться человеком, а не агентом.
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 785
42
35
Киев
#14
Скидывать это на сторону клиента не очень хорошо... дебажить java-код не просто.
Так же не хорошо использовать DXL на стороне клиента. Был не хороший опыт подобной реализации. Версии XML у клиентов могут отличаться.

У меня сделано так:
1. Пользователь шлет мыло с файлом
2. агент разбирает письма
3. детачит файл на сервер
4. ресайзит
5. атачит измененный файл в документ
6. удаляет мусор

Касательно прав - не пойму в чем проблема.
У сервера всегда есть права на запись в свою директорию.
База всегда подписана сервером (у нас по крайней мере). Не подписана - пинаем админов.

Единственное - уровень доступа агента 3

И все счастливы.
 

Constantin A Chervonenko

Well-Known Member
Lotus team
#15
Касательно прав - не пойму в чем проблема.
У сервера всегда есть права на запись в свою директорию.
База всегда подписана сервером (у нас по крайней мере). Не подписана - пинаем админов.
Это если админ - карманный. И сервер - единственный
И все счастливы.
Угу..
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 785
42
35
Киев
#16
Это если админ - карманный. И сервер - единственный

Угу..
Если у вас полные права на сервер - так вообще вопросов нет.
Если прав нет - то можно написать базейку, в которой серверный агент будет подписывать базы.
Один раз пнуть админа, чтоб он подписал эту базу, и дальше только клепай задания на подпись. И базы подписаны и админы спокойны.

У нас 4 рсервера. 4 базы для автоподписи. 4 раза пнули админа чтоб он их подписал.

А то то и делаете, что ищите какие-то причины, да "руки выкручиваете"
 

Serduko

Well-Known Member
11.10.2011
170
0
#17
Дело в том, что файл может разбиваться на несколько частей:

Код:
ForAll a In doc1.Items
If Ucase(a.name) = "FOTO" Then
Set nitem = a 
Call doc2.CopyItem( nitem, "foto" )								
End If
End ForAll