Вытягивание данных из OLE-объектов RichText-полей

  • Автор темы Автор темы tat1
  • Дата начала Дата начала
T

tat1

Существует поле Pole на форме типа RichText в котором находится таблица ЛотусКомпонент Lotus.Spreadsheet. Каким образом можно извлечь данную таблицу для дальнейшего экспорта ее данных в dbf.

Код:
Set item = doc.GetFirstItem( "Pole" )

Если бы это было поле типа Text то извлечьего содержимое просто item.Text
Как послупить в случае таблицы ЛотусКомпонент?
 
нормальным способом - никак :)
это объект АктивХэ, у кот. свои пр-ла жизни, и данные из него можно извлечь тока через.... программный интерфейс этого объекта (разумеется - виндовзонли)
в нотусню встроен двиг, для перемалывания всяких ОЛЕ от смартсьюта (симфони тоже могет), но т.к. это не отдельный файл - там есть нюанецы по его выцеплению (я не помню - как)
а не прощели забить? ;)

Добавлено: для вычленения нужно действовать подобным образом
 
Пошла другим путем выгружаю документ в DXL. Нахожу там по нужным тегам эту таблицу, но функция декодирования из base64 - не дает нужного результата. Прочитала, все что пишут на форуме по декодированию notesbitmap. Декодирую с использованием XStandard.Base64. Но не получаю нужного результата :-(, читаемой таблицы.

Вот фрагмент файла DXL/ Декодирую все, что раположено между Тегами <notesbitmap

<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">"мостроидный блоб текста"</div></div><div class="sp-body"><div class="sp-content"><item name=\'ktnom\'><richtext>
<pardef id=\'2\'/>
<par def=\'2\'><objectref version=\'2\' name=\'EXT26801\' class=\'Lotus.Spreadsheet.1\'
displayformat=\'metafile\' description=\'osh\' classid=\'{291338dc-ded0-11ce-8410-00aa0042cb33}\'
storageformat=\'structstorage\' control=\'true\' regionid=\'1\'><picture height=\'441px\'
width=\'748px\' scaledheight=\'4.5938in\' scaledwidth=\'7.7917in\'><notesbitmap
BASE64
</notesbitmap></picture></objectref></par>
<par def=\'2\'><region regionid=\'1\' end=\'true\'><run><font name=\'monospace\'/></run></region><run><font style=\'bold\' name=\'Arial Cyr\' pitch=\'variable\' truetype=\'true\' familyid=\'20\'/></run></par></richtext></item>
 
есть куча джава декодеров, в т.ч. встроенные в жвм
этот объект - просто картинка, а сам объект в filedata с названием EXT26801 (если я не попутал чего)

Добавлено: мой код на Java - https://codeby.net/threads/48929.html
 
Спасибо большое! Действительно декодирует любой декодер, но только получаю изображение. :-(
А как получить в текстовом формате?
 
но только получаю изображение.
иображение получаете, но оно нотесбитмэп, о кот. остальной мир не знает (кроме индусов ИБМ)
шобы появить - при экспорте ставьте опцию - конвертить в гиф (ну и деодированный обзовите img.gif типа)
а что получить в текстовом формате? B)
если речь о картинке -
если о таблице, кот. в 1-2-3 - то аттач, по имени выше (EXT26801), декодировать в file.wk4 и открыть его
правда вскорости времени ИБМ похачит поддержку этого продукта (вопрос - оставит ли движог для лотусовых форматов)
 
Я получаю красивую картинку с таблицей в jpg или gif- в ней полные данные, которые необходимы. Есть ли OCR библиотека (dll) которую можно было бы подключить к своей программе для распознавания?
Если же искать по объектам - то внутри указанного EXT... после декодирования - есть еще STG39060
STG53486 STG36087. Это каждый из них извлекать и декодировать? Тогда я получу таблицу в формате wk4 ? Причем имена этих EXT... и STG... разные для каждого документа. Отбирать все по тегам<filedata> </filedata> ?
Попробовала отобрать по тегам <filedata> </filedata> - получила внутри данные похожие на табличные, но все равно явно не формате Lotusі 1-2-3 - и поэтому в dbf они не переносятся.
 
не могу подсказать - не видел вашего ДХЛ...
в конечном счете - должны получить (ну если не wk4, то какую-то др. версию Лотус продукта - не суть важно)
атрибут имени filedata должен соответ имени в теге картинки
если придёт мысль B) грузануть сюды ХМЛ - заверните в архив и приложите файлом
наврал... вопервых - это оле объекты и возможно ещё и подписанные/шифрованные
 
не могу подсказать - не видел вашего ДХЛ...
в конечном счете - должны получить (ну если не wk4, то какую-то др. версию Лотус продукта - не суть важно)
атрибут имени filedata должен соответ имени в теге картинки
если придёт мысль B) грузануть сюды ХМЛ - заверните в архив и приложите файлом
 
надо будет копать (после декодинга) через COM structured storage API
но здесь я не копенгаген B)
вариант с OCR пропрёт тока в части коды отображаемое поместилось в картинку, для распознавания можно заюзать (как наиболе доступный на виндовз) вариант Мсявой либы
опять же - как его ставить и им пользоваться - я не знаю
здесь вродить были топики по нему

Добавлено: но вот тут у него были падучки
резюм - проще забить на этот ОЛЕ
 
самый "правильный" вариант (со стороны трудозатрат) - установить Lotus SmartSuit, а делее по рецепту из поста
 
надо будет копать (после декодинга) через COM structured storage API
но здесь я не копенгаген :)
вариант с OCR пропрёт тока в части коды отображаемое поместилось в картинку, для распознавания можно заюзать (как наиболе доступный на виндовз) вариант Мсявой либы
опять же - как его ставить и им пользоваться - я не знаю
здесь вродить были топики по нему

Добавлено: но вот тут у него были падучки
резюм - проще забить на этот ОЛЕ

Испробовала этот вариант с MODI- чтобы окончательно "забить" :-) Распознает tif хорошо- только вот языка моего в нем нет. А с использованием русского кривовато получается. Вот результат - файл tif выгруженный и файл txt распознанный.



Добавлено:
самый "правильный" вариант (со стороны трудозатрат) - установить Lotus SmartSuit, а делее по рецепту из поста

Вернулись к старому предложенному варианту-
Но он не подходит т.к.к отсутствует EMBED_OBJECT
 

Вложения

  • Ktnom.rar
    Ktnom.rar
    58 КБ · Просмотры: 172
Испробовала этот вариант с MODI-
ваш язык распознаёт tesseract, версии от 3.0
я гонял под линухами могу резалт выложить...
мат-лы для чтения, коли на то бдет желание :) :



но придётся собирать руками (я под убунтой юзал checkinstall)
техника следующая:
в каталог tessdata закидываем треннинг файл (они по ссылкам сверху ukr.traineddata)
натравливаем на тиф, получаем его из гифа:
/usr/bin/convert ktnom1.gif -colorspace Gray -depth 8 -resample 200x200 ktnom1.tif
(конверт из пакета imagemagick)
далее:
tesseract ktnom1.tif out.txt -l ukr
получим файл (даже разбитый по строкам таблицы, но колонки не соответ - т.к. есть "пустые")

ЗЫЖ для вянды есть технология сборки, но я ей не интересовался
про checkinstall
 
Все советы пригодились- все работает! Большое спасибо за помощь и с праздником!
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab