• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Проблема при конвертации текста из Richtext поля в Html

  • Автор темы SparkLone
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

SparkLone

Доброго времени суток.
Волею судеб пришлось работать с Lotus Notes (6.5). Столкнулся со следующей проблемой - конвертация текста из поля (RichText) в HTML формат, второй день ежа рожаю :)
Если поконкретней - нашел солюшен, на кнопку вешается следующий код:
Код:
Sub Click(Source As Button)
Dim CurDocument As NotesUIDocument
Call CurDocument.Save	
Dim html As Variant
Dim session As New notessession
session.convertmime=False
Set doc=CurDocument.document
Set var = doc.getfirstitem("Mess")
Set mime = var.getmimeentity() 
html = mime.contentastext
Messagebox html
End Sub
Соответственно у меня есть RichText поле "Mess" у которого выбрано галочкой "Store contents as HTML and MIME"

Интересно, что в первый раз все конвертируется и отображается как часы.. Но если после этого изменить что либо в поле "Mess" и щелкнуть еще раз - начинается такая свистопляска...
Пример: сначала ввожу текст "sample" - получаю на выходе
---------------------------
<font size=2 face="sans-serif">sample</font>
---------------------------

затем редактирую поле, и ввожу
"first
sample"

на выходе уже -
---------------------------
<font size=2 face="sans-serif">first</font>

<
---------------------------

Ну и т.д.
Единственное что я уловил - проблемы начинаются после Save'а, но без него не достать значение поля "Mess", оно вообще не появляется в глобальных переменных. Сохранять всего в первый раз тоже не получилось, ибо тогда соответственно берется старое значение.
Может кто уже сталкивался с таким? Или может кто знает другой способ конвертации.
Буду благодарен любой помощи.
 
F

Fossil Code

Кхм-кхм... Простите за праздное любопытство, а с какой целью нужно программно конвертировать РТФ в ХТМЛ? Возможно ли, чтобы существовала вероятность того, что исходная (пока не обозначенная) задача могла решаться иными методами? Ведь конвертация ради конвертации -- звучит не вполне вдохновляюще...
 
S

SparkLone

Кхм-кхм... Простите за праздное любопытство, а с какой целью нужно программно конвертировать РТФ в ХТМЛ? Возможно ли, чтобы существовала вероятность того, что исходная (пока не обозначенная) задача могла решаться иными методами? Ведь конвертация ради конвертации -- звучит не вполне вдохновляюще...
Вы правы, конвертация ради конвертации - это не самое лучшее времяпрепровождение )
Суть в том, что отсылку делает не сам Lotus, а другая программа (связь через COM), соответственно надо передать как то содержимое письма.
Вчера ближе к ночи я все же вроде подобрался к решению сией зловредной задачи. По моему чтобы все работало как часы, нужно не только сохранять документ, но и переоткрывать его, тогда глюков вроде нет. Хотя это надо еще потестировать, ибо переоткрывание документы вызывает side-эффекты, да и смотрится не очень.. Эхх.. Все не слава богу :rolleyes:
 
F

Fossil Code

А экспорт не пробовали? Там всякие хитрости есть, и в МС Ворд, и в XML... Авось подойдет?
 
S

SparkLone

А экспорт не пробовали? Там всякие хитрости есть, и в МС Ворд, и в XML... Авось подойдет?
Ммм, не пробовал, нельзя ли поподробнее?

В данный момент в принципе я получил то, что хотел - если сохраняешь документ и потом переоткрываешь - все ок, но после переоткрытия документа - изменяются размеры шрифтов в RichText
Нашел вот тему которая поможет избавиться от необходимости переоткрытия, пытаюсь применить:
 
F

Fossil Code

Можно, но должен предупредить, что тема Using XML with LotusScript (см.хелп дизайнера) знакома мне только тем, что такая возможность описана в хелпе!

А про Ворд... Можно представить себе такую процедуру: экспорт документа в Ворд РТФ (или даже в картинку) Потом запуск Ворда командной строкой с целью пересохранения РТФ в ХТМЛ. Это можно автоматизировать... Не спорю, что громоздко... Но возможно.
 
S

SparkLone

Можно, но должен предупредить, что тема Using XML with LotusScript (см.хелп дизайнера) знакома мне только тем, что такая возможность описана в хелпе!

А про Ворд... Можно представить себе такую процедуру: экспорт документа в Ворд РТФ (или даже в картинку) Потом запуск Ворда командной строкой с целью пересохранения РТФ в ХТМЛ. Это можно автоматизировать... Не спорю, что громоздко... Но возможно.
Ну, тема с вордом была бы конечно идеальной.. Но к сожалению я не могу расчитывать на то, что в системе стоит Word..

А солюшн у меня получился следующий.. К сожалению от необходимости переоткрытия документа не избавился, но это лучшее что я смог выжать.
Код:
Sub Click(Source As Button)
mess$ = GetHTMLFromRTF(CurDocument.Document, "Message") 
succesfullSend = sender.SendDistribution(mess$)
CurDocument.Close
If Not succesfullSend Then 
Dim sess As New NotesSession
Dim db As NotesDatabase
Set db = sess.CurrentDatabase
Set pdoc = db.GetDocumentByUNID(distId)	
Dim ws As New NotesUIWorkspace
Call ws.EditDocument(False,pdoc)
End If
End Sub
 
F

Fossil Code

Интересная мысль, и, как всегда, поздновато. Есть еще один вариант конвертации: путем высылки документа _по лотусовой почте внутри системы_ . Пусть себе раутер корвертирует лотусовые в стандартные форматы! А из базы назначения уже можно документы преобразованные высылать дальше.
 
S

SparkLone

Интересная мысль, и, как всегда, поздновато. Есть еще один вариант конвертации: путем высылки документа _по лотусовой почте внутри системы_ . Пусть себе раутер корвертирует лотусовые в стандартные форматы! А из базы назначения уже можно документы преобразованные высылать дальше.
Мысль действительно интересная, и мне пока малопонятная. Опыта в Lotus'е почти нет.. =/
Спасибо за предложения, но видимо пока все останется так, как я уже описывал, правда при дальнейшей имплементации возникла новая проблема - удаление документа (в данный момент редактируемого) из базы, сейчас буду постить новый вопрос..
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!