перекодировка содержимого поля в ХТМЛ-формат

Тема в разделе "Lotus - Программирование", создана пользователем lionk, 25 фев 2008.

  1. lionk

    lionk Well-Known Member

    Регистрация:
    5 апр 2007
    Сообщения:
    308
    Симпатии:
    3
    чтобы текст введёный ползователем перекодировался в формат ХТМЛ(тоесть ентеры в поле стали <br>, текст выделеный цветом заключился в тег <font>, выравниванеи опредилилось div-ами), нужно текст написать в RichText поле и єто поле показать на форме.

    А вот если хочется генерить содержимое ХТМЛ-страницы скриптом (в преременную толкать значения полей и выводить их через print, или Сomputed поле), то удобства RichText теряются ведь значение поля получается через notesItem.Text, и оно в формате просто текст (слёт другой информации типа картинок и аттачей игнорируем).

    Вот мне и интересно возможно ли какимто методом получить текст в формате ХТМЛ, есть ли стандартные функции перекодировки, или хитрые методы?

    очень не хочется верить что для решения такой задачи необходимо делать собственный парсер.
     
  2. LotusDnepr

    LotusDnepr Гость

    A NotesRichTextStyle.PassThruHTML чем вам не угодил ? ))
     
  3. lionk

    lionk Well-Known Member

    Регистрация:
    5 апр 2007
    Сообщения:
    308
    Симпатии:
    3
    NotesRichTextStyle.PassThruHTML - это флаг который указывает что содержимое РТ поля чистый ХТМЛ, и его не ненадо перекодировать при отбражении в веб. и как он может помоч в данной задче?
     
  4. LotusDnepr

    LotusDnepr Гость

    Ааа, все понятно..Ну это уж вряд ли, скорее всего без парсера не обойтись, только зачем собственный ? У Lotus Domino есть замечательный sax-парсер, немножко корректив для обработчика ошибок - и будет без проблем парсить и html
     
  5. Sandr

    Sandr Гость

    Если в нотес-клиенте пользователь вводит все в РТ поле и Вам в ВЕБе это нужно показать в таком же виде (разны шрифты и т.д), то достаточно на форму для ВЕБа влепить CFD поле со значением вычисляемым из этого РТ поля. Все данные будут отображаться в нормальном виде.. мало того, есоли в РТ поле у вас картинка - то картинка тоже будет отображаться в этом РТ поле...
     
  6. LotusDnepr

    LotusDnepr Гость

    Я извиняюсь..А что такое CFD-поле ?
     
  7. Sandr

    Sandr Гость

    LotusDnepr

    Computed for display

    :eek:
     
  8. LotusDnepr

    LotusDnepr Гость

    Ааааа :p Однако интересный факт. Я и понятия не имел об этой особенности вычисляемых полей
     
  9. lionk

    lionk Well-Known Member

    Регистрация:
    5 апр 2007
    Сообщения:
    308
    Симпатии:
    3
    не, в том то и дело шо мне нада вывести значения через скрипт...

    можно по подробнее про этот парсер, чтото я немугу понять куда копать
     
  10. Гость

    Копать нужно в сторону замечательного лотусного класса NotesSaxParser, в хэлпе все про него написано..Фишка в том, что он, как и всякий нормальный парсер, справляется только с well-formed XML, и чтобы заставить его парсить html, нужно немножко извратиться за счет обработчика ошибок, ну а степень извращения зависит от конкретных условий и желаемого результата
     
  11. Sandr

    Sandr Гость

    Простите, но вывести куда? И как это через скрипт?


    Кстати, обратившись к этому CFD полю с помощью javaScript (например к outerHTML поля) вы получите полный HTML сорс этого поля...

    ЗЫ: можно вообще РТ поле показывать... есть у него такое свойство display using HTML при Web Access...
     
  12. Гость

    Насколько я понял, уважаемый lionk собирается скриптом эмулировать ввод пользователем текста, используя в скрипте традиционные уишные операции типа Copy-Past, а потом все это конвертить в html для просмотра в веб...Честно говоря, и сам не понимаю целесообразности этих действий
     
  13. lionk

    lionk Well-Known Member

    Регистрация:
    5 апр 2007
    Сообщения:
    308
    Симпатии:
    3
    ну при открытии страницы в вебе запускается агент, который переберает содержимое поля, в этом поле есть метки(теги) который этот агент должен подменить на значение определённых полей из других документов.
    там есть РТ поля и хочется чтобы выводился отформатированый красивый текст.
    тоесть механизма ЦФД поля нехватает.

    ну допустим я через NotesSaxParser зделаю правельный XML. а как потом перегнать эго в HTML?
    гланды через анус удалять я нехоу :eek:
     
  14. Гость

    Парсер не предназначен для того, чтобы выводить XML, это прерогатива другого класса - NotesDXLExporter, задача парсера - работа с уже готовым XML. В общем смысл уловил..Значит, страница закачивается из веба через ретривер и есть notesdocument с данными Domino, нужно только перенести его содержимое в RTF, подменив некоторые теги, так ? Если так, могу дать наводку
     
  15. lionk

    lionk Well-Known Member

    Регистрация:
    5 апр 2007
    Сообщения:
    308
    Симпатии:
    3
    Программер
    не совсем, или совсем не так :eek:
    (упрощяю)
    есть РТ поле которое нужно вывести в вебе, его можно вывести только скриптом присвоив зачение этого поля другому полю, которое находится на веб форме что открывается. нужно чтобы значение РТ поля выводилось в формате ХТМЛ(тоесть ентеры заменены тегами <br>).
    понятно что при простом присвоении (ctxdoc.outfield=rtitem.text) этого не произойёт. значит нужно зделать перекодировку(замену). чтото типа (ctxdoc.outfield=CONV_FUNC(rtitem.text) ), вопрос какой код забить в эту функцию?

    как я понял есть два пути либо самому разбирать содержимое РТ поля и както пересобрать строку, либо использовать NotesSaxParser, получив из РТ поля XML, но для меня остаётся загадкой как этот XML вывести на страницу в удобном для пользователей виде.
     
  16. Гость

    Ну дак это ж проще пареной репы, здесь и парсить-то и нечего ). Вот:

    Sub Click(Source As Button)
    Dim NUIWS As New NotesUIWorkspace
    Set ND=NUIWS.CurrentDocument.Document
    Set NRTI=ND.GetFirstItem("BODY") 'ваше поле с тестом юзера
    TextStr$=NRTI.Values
    StrArray=Split(TextStr$,Chr(13))
    For i%=1 To Ubound(StrArray)
    StrArray(i%)="<br>"+Strright(StrArray(i%),Left(StrArray(i%),1))
    Next
    HTMLStr$=Implode(StrArray)
    End Sub

    Концепция такова - берете текст из RTF, расчленяете его на массив стрингов, разделенных знаком переноса строки, и подменяете знак перноса (Chr(13)) на символ "<br>", потом собираете строку заново и имеете готовый html-текст, который можно поместить в другой RTF
     
  17. lionk

    lionk Well-Known Member

    Регистрация:
    5 апр 2007
    Сообщения:
    308
    Симпатии:
    3
    а управление цветом текста, выравниванием, кегелем и гарнитурой шрифта(arial, tahoma)?
    с <br> єто самый простой вариант, неужели нет какойто незадокументированой функции :eek:, эх меты... мечты.
     
  18. Гость

    Есть такая идея - копировать текст поля в вордовский OLE, а уж там в посимвольном цикле определять форматирование каждого элемента, пользуясь вордовским Visual Basic и превращать в HTML, занятие в общем довольно хлопотное, но иного пути пока не предвижу )
     
  19. Sandr

    Sandr Гость

    эх.. попросить надо бы админов, шоб смайлик "застрелите меня" добавили...
     
Загрузка...

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