Lotus C API - export bitmaps
От: Oleg_Shema  
Дата: 18.02.05 07:57
Оценка:
Тривиальная задача — экспортировать bitmap картинки (rich-text поля)
из Lotus nsf базы данных. В Lotus Notes есть Export/Import tool, но к сожалению
он не экспортирует rich-text поля. Решил ето реализовать на Lotus C API.
Проблема в том, что bitmap-ы в rich-text полях хранятся в сжатом виде и
представлены в SDK C API виде нескольких структур:
CDBITMAPHEADER http://www-12.lotus.com/ldd/doc/tools/c/4.6.2/Api462re.nsf/61fd4e9848264ad28525620b006ba8bd/0dd861d3b3dac3e9852563e800683691?OpenDocument
CDBITMAPSEGMENT http://www-12.lotus.com/ldd/doc/tools/c/4.6.2/Api462re.nsf/61fd4e9848264ad28525620b006ba8bd/ca6038eda6fdd3788525604e0065aee3?OpenDocument
CDCOLORTABLE http://www-12.lotus.com/ldd/doc/tools/c/4.6.2/Api462re.nsf/61fd4e9848264ad28525620b006ba8bd/d13333a8f0b11b9e8525604d004f2a61?OpenDocument
и т.д.
Описан также метод сжатия, но его реализацию в нете / SDK примерах
я так и не нашел
Вопрос — может кто-нибудь с этим сталкивался — как мне
получить из них файл в исходном (bmp, tif) формате?
Разбираться в безусловно эффективном методе сжатия
растровых изображений (ни одной API чтобы как-то собрать етот image обратно)
очень даже лениво.
Смотрел C++ SDK — то же самое, есть и ODBC driver — но боюсь там
вообще урезана работа с rich-text полями ввиду их сложной
структуры.
Может есть какой-то другой способ, готовые инструменты
как экспортировать rich-text данные?
Re: Lotus C API - export bitmaps
От: problemsolver  
Дата: 18.02.05 09:15
Оценка:
Здравствуйте, Oleg_Shema, Вы писали:

O_S>Может есть какой-то другой способ, готовые инструменты

O_S>как экспортировать rich-text данные?

А через OLE не пробовал?
Могу дать работающий пример, но там у меня вытаскиваются прикрепленные файлы
Re[2]: Lotus C API - export bitmaps
От: Oleg_Shema  
Дата: 18.02.05 10:37
Оценка:
Здравствуйте, problemsolver, Вы писали:

P>А через OLE не пробовал?

P>Могу дать работающий пример, но там у меня вытаскиваются прикрепленные файлы

S udovol'stvijem posmotrju, chestno govorja ideji uze issjakajut.
Skin' plz na mail.

Stranno chto v nete net ni odnogo tool-a po exportu-importu dannih iz Lotus.
Neuzeli nikto ne stalkivalsja s migration-om dannih iz Lotusa v druguju bazu naprimer.
Re[3]: Lotus C API - export bitmaps
От: Аноним  
Дата: 21.02.05 09:26
Оценка:
Здравствуйте, Oleg_Shema, Вы писали:

O_S>Здравствуйте, problemsolver, Вы писали:


P>>А через OLE не пробовал?

P>>Могу дать работающий пример, но там у меня вытаскиваются прикрепленные файлы

O_S>S udovol'stvijem posmotrju, chestno govorja ideji uze issjakajut.

O_S>Skin' plz na mail.

O_S>Stranno chto v nete net ni odnogo tool-a po exportu-importu dannih iz Lotus.

O_S>Neuzeli nikto ne stalkivalsja s migration-om dannih iz Lotusa v druguju bazu naprimer.

не всякая картинка в RTItem EmbeddedObject
Re[2]: Lotus C API - export bitmaps
От: Аноним  
Дата: 25.04.07 11:44
Оценка:
Здравствуйте, problemsolver, Вы писали:

P>Здравствуйте, Oleg_Shema, Вы писали:


O_S>>Может есть какой-то другой способ, готовые инструменты

O_S>>как экспортировать rich-text данные?

P>А через OLE не пробовал?

P>Могу дать работающий пример, но там у меня вытаскиваются прикрепленные файлы

Выложи Плиз...
Коли не трудно.
Re[3]: Lotus C API - export bitmaps
От: ika Беларусь  
Дата: 30.04.07 15:40
Оценка:
From Notes 6.5 designer help (LotusScript/OLE/COM classes):

Examples: GetEmbeddedObject method (NotesRichTextItem class)

1. This script finds a rich text item called Body in a document and uses GetEmbeddedObject to check if the Body item contains an embedded object called "Jim." It displays a message stating whether or not Jim was found.

Dim doc As NotesDocument
Dim rtitem As Variant
Dim object As NotesEmbeddedObject
'...set value of doc...
Set rtitem = doc.GetFirstItem( "Body" )
If ( rtitem.Type = RICHTEXT ) Then
  Set object = rtitem.GetEmbeddedObject( "Jim" )
  If ( object Is Nothing ) Then
    Messagebox( "Unable to find an object named Jim" )
  Else
    Messagebox( "Found an object named Jim" )
  End If
End If


2. This action script is similar to the one above, but it gets an embedded object named Eben using the Activate method in NotesEmbeddedObject to launch the application in which Eben was created. Since the script runs on a workstation, the script can bring up the application's user interface.
Sub Click(Source As Button)
  Dim rtitem As Variant
  Dim object As NotesEmbeddedObject
  Dim handle As Variant
  '...set value of doc...
  Set rtitem = doc.GetFirstItem( "Body" )
  If ( rtitem.Type = RICHTEXT ) Then
    Set object = rtitem.GetEmbeddedObject( "Eben" )
    If Not ( object Is Nothing ) Then
      Set handle = object.Activate( True )
    End If
  End If
End Sub


У NotesEmbeddedObject есть метод ExtractFile(string dstPath): Copies a file attachment to disk.
String parameter — the path and file name where you want to store the extracted file on disk.
Re[4]: Lotus C API - export bitmaps
От: Petr.com  
Дата: 02.05.07 08:51
Оценка:
Здравствуйте, ika, Вы писали:

ika>From Notes 6.5 designer help (LotusScript/OLE/COM classes):


ika>Examples: GetEmbeddedObject method (NotesRichTextItem class)


ika>1. This script finds a rich text item called Body in a document and uses GetEmbeddedObject to check if the Body item contains an embedded object called "Jim." It displays a message stating whether or not Jim was found.


ika>
ika>Dim doc As NotesDocument
ika>Dim rtitem As Variant
ika>Dim object As NotesEmbeddedObject
ika>'...set value of doc...
ika>Set rtitem = doc.GetFirstItem( "Body" )
ika>If ( rtitem.Type = RICHTEXT ) Then
ika>  Set object = rtitem.GetEmbeddedObject( "Jim" )
ika>  If ( object Is Nothing ) Then
ika>    Messagebox( "Unable to find an object named Jim" )
ika>  Else
ika>    Messagebox( "Found an object named Jim" )
ika>  End If
ika>End If
ika>


ika>2. This action script is similar to the one above, but it gets an embedded object named Eben using the Activate method in NotesEmbeddedObject to launch the application in which Eben was created. Since the script runs on a workstation, the script can bring up the application's user interface.

ika>
ika>Sub Click(Source As Button)
ika>  Dim rtitem As Variant
ika>  Dim object As NotesEmbeddedObject
ika>  Dim handle As Variant
ika>  '...set value of doc...
ika>  Set rtitem = doc.GetFirstItem( "Body" )
ika>  If ( rtitem.Type = RICHTEXT ) Then
ika>    Set object = rtitem.GetEmbeddedObject( "Eben" )
ika>    If Not ( object Is Nothing ) Then
ika>      Set handle = object.Activate( True )
ika>    End If
ika>  End If
ika>End Sub
ika>


ika>У NotesEmbeddedObject есть метод ExtractFile(string dstPath): Copies a file attachment to disk.

ika>String parameter — the path and file name where you want to store the extracted file on disk.


А есть такой код для с/с++. Или для .net.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.