Опознать картинку

  • Автор темы newlord
  • Дата начала
N

newlord

#1
Люди, как в LS можно узнать вставлена картинка в тело документа или нет.
Метод EmbeddedObjects не подходит, т.к. как я понял картинка оным не является.

Нужен просто ответ есть картинка или нет.
 

Omh

Lotus team
04.07.2007
2 210
1
#2
Может сразу рублю с плеча, но экспортнуть док в DXL и проверить его на наличие тегов inline картинок.
Ну или проверка на Item.Text + Item.EmbeddedObjects + Item.Size :(
Если всё это на QuerySave, то сначала сделать uidoc.Refresh(True).
 

Oksana

Lotus team
10.01.2006
329
0
#3
Люди, как в LS можно узнать вставлена картинка в тело документа или нет.
Метод EmbeddedObjects не подходит, т.к. как я понял картинка оным не является.

Нужен просто ответ есть картинка или нет.
Смотря какая задача. У нас вставал подобный вопрос, решили просто, по размеру док-та. Так как точно в форме документа, рисунок(фото) мог быть вставлен только в одно поле и только один раз, то отбирали документы по размеру, типа до 10КБ без картинки, выше с картинкой. Может топорово, но для нашей задачи подошло.
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 803
21
#4
хм... а в поле можно цеплять что угодно или только картинки?
Если только картинки то так
Код:
If rtitem is Nothing then Goto onerr
If rtitem.ValueLength<=512 then Goto onerr
 

Omh

Lotus team
04.07.2007
2 210
1
#5
Код:
rtitem.ValueLength<=512
Т.е. получается что ValueLength > 512 отрабатывает только при наличии картинки в RT и больше ни при каких условиях?
Что-то мне слабо верится :D
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 803
21
#6
ну мы поступли как Oksana поле только для картинок или аттачей.
и прошу прощения... 512 - это в нашем варианте... были нюансы
вообще думаю должно быть 104 - размер пустого RT поля
 

Omh

Lotus team
04.07.2007
2 210
1
#7
Просто такого типа проверка будет отрабатывать при наличии в поле аттачмента или, например, большого кол-ва текста.
А нас вродь только inline картинки интересуют.
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 803
21
#8
я вот не пойму.... зачем извращаться если можно все упростить?
Но для начала пусть автор уточнит... в поле может быть только картинка или смесь всего что только можно?
Если только картинка - то можно воспользоваться RT Lite и выбрать графические данные.
Или поставить обычное RT поле в секцию с ограниченым доступом (чтоб пользователь не мог в нем править ничего) и написать Hotspot с импортом
И не нужно никаких DXL

Если в поле смесь - тут конечно варианты.
Либо DXL либо два поля. Одно для текста, второе для картинки.
 

nvyush

Lotus team
22.04.2009
2 317
0
#9
Смог решить эту проблему только выгрузкой в DXL и поиском тэгов. Для вставленных (не приаттаченных!) картинок EmbeddedObjects ничего не даёт. Оценка размера не помогала - размер полей плавал в таких пределах, что можно было упустить небольшую картинку.
 
N

newlord

#10
Прошу прощения за задержку. Не ожидал, что развернется такая дисскуссия.
В поле может быть как обычный текст так и картинка (обычно это принтскрин экрана).

Често говоря не думал, что это такая проблема. Почему картинка не распознается никакими стандартными средствами?


Написал про принтскрин и подумал, что можно проверить на размер поля все никак меньше 800Х600 не будет.
 

nvyush

Lotus team
22.04.2009
2 317
0
#13
Написал про принтскрин и подумал, что можно проверить на размер поля все никак меньше 800Х600 не будет.
Дело в том, что картинка помещается в другое поле, а собственно в РТ только ссылка на неё. Прирост размера поля небольшой. Кстати, размер пустого РТ и РТлайт разный, более того, размер исходно пустого РТ и РТ "опустошённого" (т.е. в котором была картинка, а потом её удалили) тоже может отличаться! Выход один - выгружать в DXL и искать тэги.

Обходной путь - обязать юзеров к картинке добавлять текст.
 
N

newlord

#15
А как вам такой вариант

On Error 4407 Goto sub1
Call source.GotoField( "Body" )
Call source.SelectAll
Call source.DeselectAll

Если в поле ничего нет то возвращается ошибка по которой переходим дальше куда нам надо.
Если в ошибки нет, то проверяем дальше на наличие текста или вложенных объектов, если их нет, то остается только картинка.

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

yerke

Well-known member
28.08.2007
392
0
#16
Код:
			Set exporter=ses.CreateDXLExporter
outputer=exporter.Export(mydoc)
'=
isRTI=(Instr(1, outputer, "<picture", 5) > 0) Or (Instr(1, outputer, "<object", 5) > 0)
'=print
'=
If isRTI Then ЕСТЬ ИНЛАЙН КАРТИНКА

'=
'=
'=