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

Тема в разделе "Lotus - Программирование", создана пользователем Rosna, 13 авг 2012.

  1. Rosna

    Rosna Well-Known Member

    Регистрация:
    12 ноя 2003
    Сообщения:
    48
    Симпатии:
    0
    Добрый день!

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

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

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

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Для переноса использовать dxl, его же для масштабирования, если нужно именно изменить размер картинки, ищите подходящие java-библиотеки.

    Похожая тема:
    Изменение Ширины Вложенной Картинки
     
  3. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.079
    Симпатии:
    300
    коротко
    путь такой - дергаем файл через (DXL), лучше SAX, файл будет в base64, получаем DXL из целевого дока, вставляем нужный тег (<picture> с соответ атрибутами) в нужное место, загружаем DXL (соотвю целевому доку) обратно
    будет ли опознавать картинки отличные от gif - не знаю

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

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

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Хм... ресайз делал без DXL.
    1. детач файла
    2. пропорциональный ресайз с использованием java
    3. атач файла в документ

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

    Rosna Well-Known Member

    Регистрация:
    12 ноя 2003
    Сообщения:
    48
    Симпатии:
    0
    Спасибо! Буду копать в этом направлении!

    Если кто поделится примерчиком работающим с dxl - буду благодарна! %)

    Добавлено:
    А каким способом вы делали ресайз?
     
  6. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.079
    Симпатии:
    300
    не совсем просто - если на сервере и нет прав на создание файлов в ФС
     
  7. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    И это тоже решается...
    Права на директорию data есть всегда. Там и создаю временную директорию и делаю то что мне нужно.
    Ну и конечно же агент подписан сервером.

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

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.079
    Симпатии:
    300
    вот с этим, если не админ на сервере и есть проблемы
     
  9. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Не знаю.. не первый сервер... проблем никогда не было
     
  10. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.079
    Симпатии:
    300
    не являясь админом - откуда взять ИД сервера? ;)
     
  11. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    А зачем тебе ID сервера?
     
  12. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.079
    Симпатии:
    300
    чьи это слова? ;)
     
  13. Rosna

    Rosna Well-Known Member

    Регистрация:
    12 ноя 2003
    Сообщения:
    48
    Симпатии:
    0
    Думаю, можно сохранять фото на локальном компе, так как создание нового документа с фото будет инициироваться человеком, а не агентом.
     
  14. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Скидывать это на сторону клиента не очень хорошо... дебажить java-код не просто.
    Так же не хорошо использовать DXL на стороне клиента. Был не хороший опыт подобной реализации. Версии XML у клиентов могут отличаться.

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

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

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

    И все счастливы.
     
  15. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.288
    Симпатии:
    0
    Это если админ - карманный. И сервер - единственный
    Угу..
     
  16. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Если у вас полные права на сервер - так вообще вопросов нет.
    Если прав нет - то можно написать базейку, в которой серверный агент будет подписывать базы.
    Один раз пнуть админа, чтоб он подписал эту базу, и дальше только клепай задания на подпись. И базы подписаны и админы спокойны.

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

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

    Serduko Well-Known Member

    Регистрация:
    11 окт 2011
    Сообщения:
    174
    Симпатии:
    0
    Дело в том, что файл может разбиваться на несколько частей:

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

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Это к чему?
     
  19. Serduko

    Serduko Well-Known Member

    Регистрация:
    11 окт 2011
    Сообщения:
    174
    Симпатии:
    0
    Это ответ к первому посту.
     
  20. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Ну в общем у нее все получилось :huh:
    Тема закрыта
     
Загрузка...

Поделиться этой страницей