Проблемы с конвертацией Mime в Richtext

  • Автор темы PavelT100
  • Дата начала
P

PavelT100

#1
И вот такая теперь у меня проблема. Пришло письмо в лотус из OutLook. Оно в MIME формате. Вообще все пользователи с такими работают. Открывают, дописывают туда, ставят комментарии и т.д.
А я решил его открыть программно. Вот пришло только что письмо и я его раз читаю и ничего собственно не делаю:
Код:
	Dim session As New NotesSession		
session.ConvertMIME = true

Dim rtitem As NotesRichTextItem	 
Set rtitem = doc.GetFirstItem("Body")		

doc.Save(True, False )
А эффект плачевен, документ сохранился, но формат текста поля Body письма - шрифт, размер, цвет потерялся. Как его правильно сковертировать чтобы эти параметры сохранились ?
Если GetFirstItem не делать, а просто сохранить документ, то потерь формата не произойдёт.
 
D

Darker

#2
попробуй в начале
session.ConvertMIME = False
потом в конце
session.ConvertMIME = True
 
P

PavelT100

#3
попробуй в начале
session.ConvertMIME = False
потом в конце
session.ConvertMIME = True
Если открывать документ с session.ConvertMIME = False, то поле Body предствляет собой массив из 4 элементов - частей MIME формата. Само собой GetFirstItem уже не работает, так как это не RichTetxt.
Что есть для вас "начало" и "конец" ?
 

wowa

Well-known member
01.02.2007
845
0
#4
вот как у мну работает, куски кода:

Код:
s.ConvertMime = False
.....
...
...

Set stream = s.CreateStream
Set mime = doc.CreateMIMEEntity("Body")
Call mime.SetContentFromText (stream, "text/html;charset=UTF-8", ENC_NONE)

s.ConvertMime = True
 
P

PavelT100

#5
вот как у мну работает, куски кода:

Код:
s.ConvertMime = False
.....
...
...

Set stream = s.CreateStream
Set mime = doc.CreateMIMEEntity("Body")
Call mime.SetContentFromText (stream, "text/html;charset=UTF-8", ENC_NONE)

s.ConvertMime = True
Это замчательные куски, если надо сделать письмо с MIME частями и отправить его.
А у меня чуть другая задача. Мне уже пришло письмо. Мне бы надо его сковертировать в обычные ричтекст, но это плохо получается. Теряеются элементы форматирования - размер шрифта и цвет. Вот как мне этого достичь ? Идея у меня затем простая, мне к этому ричтексту надо будет дописывать комментарии читателей писем.
 

Мыш

Премиум
12.02.2008
1 097
10
#6
надо его сковертировать в обычные ричтекст, но это плохо получается. Теряеются элементы форматирования - размер шрифта и цвет.
Я бы сказал - это, в целом, у Лотуса плохо получается :)
Вообще все пользователи с такими работают. Открывают, дописывают туда, ставят комментарии и т.д.
Т.е., у пользователей все нормально - не теряется форматирование? А к ним эти письма в MIME или в Rich Text приходят? Это же еще от настроек в DD зависеть может...
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
18
#7
Код:
Function ConvertRTDoc(Doc As NotesDocument) As String ' Конверт Mime в РТ
'	ses.ConvertMIME = False
Dim mime As NotesMIMEEntity, v1 As Variant
Set mime = doc.GetMIMEEntity
v1 = ""
If Not(mime Is Nothing) Then
Call mime.DecodeContent
v1 = mime.ContentAsText
End If
If Len(v1)>64000 Then v1 = Left(v1, 64000)
Let Doc.ReplaceItemValue("Body2", v1).Issummary = False
ConvertRTDoc = v1
'	ses.ConvertMIME = True
End Function
 
P

PavelT100

#8
Т.е., у пользователей все нормально - не теряется форматирование? А к ним эти письма в MIME или в Rich Text приходят? Это же еще от настроек в DD зависеть может...
Что такое DD ?
Даже у меня как у пользователя Лотуса, когда я в Лотусе работаю с письмами как обычный пользователь открываю их, редактирую, закрываю всё работает корректно. Письма приходят MIME. А вот потом, после открытия, сохранения и закрытия они становятся у пользователей RcihText и это гораздо более корректный ричтекст, чем тот которй получается у меня если делать это программно
Код:
 Dim rtitem As NotesRichTextItem	 
Set rtitem = doc.GetFirstItem("Body")			
doc.Save(True, False )
Добавлено:
Код:
Function ConvertRTDoc(Doc As NotesDocument) As String ' Конверт Mime в РТ
....
End Function
Спасибо, я попробую. Но чувствую это будет очень большой геморой, если будет несколько MIME частей, если будут приатаченные картинки, приатаченные файлы - замучаешься их выколупывать и пристыковывать заново.
А уж если что-то потеряется, меня в асфальт закатают под общее улюлюкание.
 

Мыш

Премиум
12.02.2008
1 097
10
#9
DD=Domino Directory.
Я просто хотел сказать, что конвертация MIME->Rich Text работает достаточно хреново и при конвертации писем самим сервером Domino (если письмо приходит в MIME, а в документе пользователя в DD указано "Prefers Rich Text").
Потеря атрибутов текста, кривые таблицы - все это наблюдаю довольно часто. Поэтому не жду от LS корректной конвертации... :please:
 
P

PavelT100

#10
Поэтому не жду от LS корректной конвертации...
Да, но при редактировании пользователя руками и сохранении документа в ричтексте получается результат лучше чем у меня программно - вот это наводит на мысль, что можно же ещё что-то сделать....
 
13.03.2009
625
1
#12
Да, но при редактировании пользователя руками и сохранении документа в ричтексте получается результат лучше чем у меня программно - вот это наводит на мысль, что можно же ещё что-то сделать....
А не смотрели, как выглядит документ в dxl? Может получица прямо в майм запихнуть?
В RT точно можно воткнуть <pardef> с произвольным форматированием, не снося остального форматирования...
 

hosm

* so what *
18.05.2009
2 442
6
#14
так в DXL рт-параграфы задаются, попробуйте док-т с рт экспортнуть и всё увидите.
ЗЫ. т.е. их стили.
 
13.03.2009
625
1
#15
Designer 7 Help сказал(а):
pardef element: Represents explicit style information for a paragraph. Use this element with the <par> element, which represents a paragraph
Выгрузите документ, содержащий ричтекст, в dxl и откройте текстовым редактором. После долгого вглядывания обычно становица понятно, что нужно добавить чтобы получить желаемое.