Изменение Ширины Вложенной Картинки

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

  1. imendan

    imendan Well-Known Member

    Регистрация:
    22 сен 2010
    Сообщения:
    97
    Симпатии:
    0
    Доброе время суток, господа! Простите, что спамлю, но ничего не нарыл в паутине по своей проблеме!
    На форме есть поле RichText. И в нем хранятся отсканированне файлы. Проблема в том, что у многих пользователей при просмотре формы и печати, вложенная в форму ( в поле RichText ) выходит за рамки. Необходимо программно уменьшить масштаб картинки. Т.е. изменить параметр Scaling (width, height) в %. Помогите, плиз!
    :lol:
     
  2. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    выгружать в DXL, менять тег, загружать обратно
     
  3. Svetlanika

    Svetlanika New Member

    Регистрация:
    21 ноя 2011
    Сообщения:
    3
    Симпатии:
    0
    Вот здесь http://www.openntf.org/internal/home.nsf/r...6257616006C6D64 есть библиотека EmbeddedImage. С ее помощью какраз можно изменять картинки:
    The EmbeddedImage library processes a Notes document (or a Form or related design element) and retrieves a list of the embedded images in the rich text fields or form body. You can then work with these images; retrieve the binary image data, determine the dimensions, adjust the scaling, or replace them with graphics copied from elsewhere.
     
  4. imendan

    imendan Well-Known Member

    Регистрация:
    22 сен 2010
    Сообщения:
    97
    Симпатии:
    0
    Эх, сколько бьюсь уже что-то не получается. Сделал таким образом. Выгрузил в DXL документ. Сохранил в xml. Вручную поменял некоторые поля в xml-ке. Загружаю, вижу изменения. Теперь пытаюсь поменять атрибут Width у вложенной картинки в xml-ке. Сохраняю в xml-ке. Загружаю обратно. Не работает :( . Народ помогите, ПУЛИИИИЗ!!!
    Вот пример кода вызываемого агентом (который тупо берет готовый xml - и вгружает его в документ):

    Sub Initialize
    Dim stream As NotesStream
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim filename As String
    Set db = session.CurrentDatabase
    Set stream = session.CreateStream

    Set stream = session.CreateStream
    filename$ = "C:\Documents and Settings\galiyev\Мои документы\3archin.xml"

    If Not stream.Open(filename$) Then
    MessageBox "Cannot open " & filename$,, "Error"
    Exit Sub
    End If

    Dim importer As NotesDXLImporter
    Set importer = session.CreateDXLImporter(stream, db)
    importer.DocumentImportOption = DXLIMPORTOPTION_UPDATE_ELSE_IGNORE
    importer.ReplicaRequiredForReplaceOrUpdate = False
    Call importer.Process
    End Sub
     
  5. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    для начала - выгрузить не масштабированный DXL, затем - поменять масштаб и тоже выгрузить, сравнить...
    вот пример:
    -оригинал
    <picture height='127px' width='280px'><gif originalformat='notesbitmap'>
    -масштаб 50%
    <picture height='127px' width='280px' scaledheight='0.6667in'
    scaledwidth='1.4583in'><gif originalformat='notesbitmap'>

    для изменения реального размера:
    -выгрузить (с опцией GIF)
    -декодировать из base64 (соответ. картинке тег)
    -масштабировать (куча кода на джава)
    -вложить в тег
    -загрузить
     
  6. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    всёбы ничего, но есть ряд нюанецов http://codeby.net/forum/threads/35193.html?vi...st&p=168434
     
  7. imendan

    imendan Well-Known Member

    Регистрация:
    22 сен 2010
    Сообщения:
    97
    Симпатии:
    0
    ??? Я в нокауте ;) ! Imike, честно говоря я в ступоре)
     
  8. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Читайте внимательно — куча кода на джаве нужна, если Вы изменяете саму картинку. Если картинка не изменяется, а только изменяется её масштаб, то можно обойтись без джавы. Кстати, и без выгрузки на диск тоже, советую "покурить" XSLT.
     
  9. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    как и сказал nvy много писать не нужно..., я привел результат, для сравнения (что поменять и в каких тегах)
    ХСЛТ, для простых случаев можно и не использовать (просто поиском/вставкой), но правильно - именно ХСЛТ (в джава возможны и др. способы)
     
  10. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    выглузить в стрим
    подправить нужный тег
    загрузить из стрима

    всё правильно сверху привели - глядеть что поменялось
     
  11. dimat

    dimat Lotus team
    Lotus team

    Регистрация:
    31 июл 2008
    Сообщения:
    518
    Симпатии:
    0
    Тоже спрошу:
    Что бы пропорционально уменьшить размер inline картинки в richtext, скажем в 5 раз, как расчитать значения scaledheight и scaledwidth? Как я понял они всегда разные в зависимости от изначального размера картинки?
     
  12. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    ну типа узнать размер картинки и самому пересчитать, пропорционально

    Добавлено: хотя более правильным былобы - уменьшить картинку (если допустимо)
     
  13. dimat

    dimat Lotus team
    Lotus team

    Регистрация:
    31 июл 2008
    Сообщения:
    518
    Симпатии:
    0
    Как?
     
  14. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    вроде здесь были темы...
    ДХЛ вытаскиваем файл, в java получаем размеры (штатным кодеком), ну и далее по схеме
     
  15. dimat

    dimat Lotus team
    Lotus team

    Регистрация:
    31 июл 2008
    Сообщения:
    518
    Симпатии:
    0
    Это то что между тегами <jpeg></jpeg> например?

    Что то не могу найти ничего на форуме, может есть какой пример?
     
  16. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    возможно несколько вариантов отработки...
    именно

    Добавлено: еще перечисление методов и либа не использовал, не знаю как она в жизни :)

    Добавлено: ну а по форуму - это (там упоминается jai, его развитие и поддержка вендором закончилась в 2006, требует нативных либ)
     
  17. dimat

    dimat Lotus team
    Lotus team

    Регистрация:
    31 июл 2008
    Сообщения:
    518
    Симпатии:
    0
    Вот это интересно и понятно.

    Непонятно только вот что: содержимое между тегами <jpeg></jpeg> ведь не является содержимым файла jpeg, это все нужно как то закодировать и сохранить в файл на диск, только после этого применять изменение размера?
     
  18. ty3uk

    ty3uk Well-Known Member

    Регистрация:
    31 мар 2008
    Сообщения:
    169
    Симпатии:
    0
    я не знаю что там между тегами, но есть предположение, что это в формате MIME64. преобразования достаточно простые, темболее в джаве. Тупо декодируете в бинарник, получается содержание джепег файла. Дальше, можете сохранять, хотя тупо, лучше прям в джаве передеать на изменения размеров и т.п.
     
  19. dimat

    dimat Lotus team
    Lotus team

    Регистрация:
    31 июл 2008
    Сообщения:
    518
    Симпатии:
    0
    Код (Text):
    Тупо декодируете в бинарник
    Это base64 decode?
     
  20. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    да, и этот код здесь тоже был, еще с интертраста - LAX

    Добавлено: вот, base64 там "свой" (не помню откудова выкопал) класс, можно заменить на сановский
     
Загрузка...

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