Страница 1 из 1

Как в WordArt задавать верхний и нижний выносные элементы(ascender/descender)?)

Добавлено: 03 сен 2009, 13:53
Diego__
MS Word. Код представлен на языке С++.
Создаю WordArt:
Word::ShapePtr wordArt = m_WordDocument->Shapes->AddTextEffect(Office::msoTextEffec t1, L"Param pam pam", L"Arial", 16, Office::msoFalse, Office::msoFalse, m_AppWord->CentimetersToPoints(1), m_AppWord->CentimetersToPoints(1));

задаю размер
wordArt->PutWidth(CentimetersToPoints(3)) ;
wordArt->PutHeight(CentimetersToPoints(1) );


здесь все хороошо.

Ручками в документе редактирую мое "Param pam pam", убираю все буквы 'p' образуется текст без верхних и нижних выносных элементов "aram am am". При этом объект WordArt растягивается на всю высоту заданную ранее 3х1. Как задать учет верхнего и нижнего выносных элементов? Т.е. чтобы при редактировании фразы высота символов не изменялась.

В прикреплении файл демонстрирующий данную проблему

Верхний и нижний выносные элементы это, например: b,t,i,f - имеют верхний выносной элемент; q,p, - имеют нижний выносной элемент. a,w,e, s, o - не имеют данных элементов. Все большие символы имеют верхний выносной элемент ABCDEF

Буду рад решению на любом языке

Re: Как в WordArt задавать верхний и нижний выносные элементы(ascender/descender)?)

Добавлено: 04 сен 2009, 13:47
Aent
Я бы попробовал дописать к тексту в конце символ с "выносными элементами"
и закрыл бы его потом наложенным сверху прямоугольником без границы и с заливкой фоном страницы. Прямоугольник проще всего сделать из jpg. Можно создать его динамически из шейпа специальной вставкой. Затем меняем яркость и контрастность
для подгонки к фону.

Re: Как в WordArt задавать верхний и нижний выносные элементы(ascender/descender)?)

Добавлено: 04 сен 2009, 19:13
Diego__
Хочется без этого...

Существует программа "Nitro pdf" редактор pdf файлов. В ней есть возможность конвертации pdf файлов в doc. Повернутый pdf текст конвертируется в WordArt. Результат конвертации простенького файла в прикреплении.

Как видно из файла нужный эффект можно реализовать. Но, как?

Пробовал:
1. Пересохранял данный файл в docx формат. docx - это заархивированный xml. Переименовываю docx в zip, открываю архив, в полученных файлах открываю document.xml. Нахожу свое "Param pam pam".

2. Таким же образом поступаю с файлом созданным моей программой. Т.е. у меня 2 файла document.xml, первый созданный "Nitro pdf", второй созданный мной. Смотрю отличия... Ниже привожу упрощенный вид xml файлов. В них удалено все что не относится к "param pam pam" и то, что у 2х версий xml одинаковое.

Nitro PDF
<w:r>
<w :p ict>
<v:shape style="z-index:-1" o:allowincell="f"stroked="f">
<o:extrusion v:ext="view" autorotationcenter="t"/>
<v:textpath string="Nitro"/>
</v:shape>
</w :p ict>
</w:r>



MОЁ
<w:r>
<w :p ict>
<v:shape style="z-index:251658240" >
<v:textpath trim="t" fitpath="t" string="Our"/>
</v:shape>
</w :p ict>
</w:r>

Пробую менять атрибуты моего xml и подсовывать его в архив, архив переименовываю в docx, открываю.

Положительный результат получаю при удалении из моего варианта атрибута trim="t". Не могу найти соответствие данному атрибуту в модели Word.
Подскажите, что это может быть?

Re: Как в WordArt задавать верхний и нижний выносные элементы(ascender/descender)?)

Добавлено: 04 сен 2009, 19:18
Diego__
Хочется без этого...

Существует программа "Nitro pdf" редактор pdf файлов. В ней есть возможность конвертации pdf файлов в doc. Повернутый pdf текст конвертируется в WordArt. Результат конвертации простенького файла в прикреплении.

Как видно из файла нужный эффект можно реализовать. Но, как?

Пробовал:
1. Пересохранял данный файл в docx формат. docx - это заархивированный xml. Переименовываю docx в zip, открываю архив, в полученных файлах открываю document.xml. Нахожу свое "Param pam pam".

2. Таким же образом поступаю с файлом созданным моей программой. Т.е. у меня 2 файла document.xml, первый созданный "Nitro pdf", второй созданный мной. Смотрю отличия... Ниже привожу упрощенный вид xml файлов. В них удалено все что не относится к "param pam pam" и то, что у 2х версий xml одинаковое.

Nitro PDF
<w:r>
<w :p ict>
<v:shape style="z-index:-1" o:allowincell="f"stroked="f">
<o:extrusion v:ext="view" autorotationcenter="t"/>
<v:textpath string="Nitro"/>
</v:shape>
</w :p ict>
</w:r>



MОЁ
<w:r>
<w :p ict>
<v:shape style="z-index:251658240" >
<v:textpath trim="t" fitpath="t" string="Our"/>
</v:shape>
</w :p ict>
</w:r>

Пробую менять атрибуты моего xml и подсовывать его в архив, архив переименовываю в docx, открываю.

Положительный результат получаю при удалении из моего варианта атрибута trim="t". Не могу найти соответствие данному атрибуту в модели Word.
Подскажите, что это может быть?

Re: Как в WordArt задавать верхний и нижний выносные элементы(ascender/descender)?)

Добавлено: 05 сен 2009, 02:57
Aent
То что вы добились требуемого эффекта корректируя VML не означает что то же можно сделать через объектную модель Word(Art). Изоморфизма тут нет.
Ближе всего к вопросу TextEffect.NormalizedHeight = False
Но это будет срабатывать только при наличии букв с выносами в тексте
Кстати, для доступа к VML пересохранять документ не обязательно ;)
Достаточно нажать Alt-Shift-F11 (или Сервис->Макросы-Редактор сценариев (для 2003 Office)). Разумеется, предполагается что MSE установлен при инсталляции офиса.
Можно конечно повозиться с программным изменением VML, но IMHO проще
наложить маску (jpg) и сгруппировать шейпы.

Re: Как в WordArt задавать верхний и нижний выносные элементы(ascender/descender)?)

Добавлено: 07 сен 2009, 12:47
Diego__
Спасибо, Aent.

Мне бы повозиться с программным изменением VML :)
Можете привести простенький пример, как изменить атрибут заданного тега?
В моем случае хочется удалить атрибут trim="t" тега v:textpath.

Как в WordArt задавать верхний и нижний выносные элементыascender/descender

Добавлено: 22 сен 2009, 20:24
Albunc
Пишу запрос к базе даныых в Access и получаю результат в виде таблицы. Мне необходимо этот результат сохранить в разделе таблицы Access. Я это делаю пока таким образом, выделяю пр. кн. мыши полученные данные, копирую, вставляю в Excel, сохраняю файл, а потом экспортирую в таблицу Access. Можно ли как то все это сделать быстрее?
Спасибо.

Re: Как в WordArt задавать верхний и нижний выносные элементы(ascender/descender)?)

Добавлено: 22 сен 2009, 21:45
Teslenko_EA
Здравствуйте Albunc.
конечно можно сделать все, но какое это имеет отношение к WordArt :confused:
для получения ответа, Создайте свою тему.
Евгений.

Как в WordArt задавать верхний и нижний выносные элементыascender/descender

Добавлено: 24 сен 2009, 00:00
Albunc
Пожалуйста помогите. Необходимо, чтобы при печати документа элементы управления не отображались. В Eexcel это делается просто у элемента управления свойство PrintObjtct = false . В Word я такого не нашла. Может быть у кого-нибудь есть такой опыт?
кстати не сочтите за рекламу, поиграл в галактическую браузерную игре _http://netassault.ru - затянуло, на этом форуме обсуждают тему но потерял раздел, как бы найти?