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

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Diego__
Сообщения: 16
Зарегистрирован: 12 авг 2009, 15:35

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

Буду рад решению на любом языке
Вложения
wordArt.zip
(5.34 КБ) 60 скачиваний
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

Я бы попробовал дописать к тексту в конце символ с "выносными элементами"
и закрыл бы его потом наложенным сверху прямоугольником без границы и с заливкой фоном страницы. Прямоугольник проще всего сделать из jpg. Можно создать его динамически из шейпа специальной вставкой. Затем меняем яркость и контрастность
для подгонки к фону.
Вложения
wordArt.zip
(3.46 КБ) 60 скачиваний
Андрей Энтелис,
aentelis.livejournal.com
Diego__
Сообщения: 16
Зарегистрирован: 12 авг 2009, 15:35

Хочется без этого...

Существует программа "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.
Подскажите, что это может быть?
Вложения
wordArt.zip
(3.46 КБ) 56 скачиваний
Diego__
Сообщения: 16
Зарегистрирован: 12 авг 2009, 15:35

Хочется без этого...

Существует программа "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.
Подскажите, что это может быть?
Вложения
rotated wordArt.zip
(5.73 КБ) 61 скачивание
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

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

Спасибо, Aent.

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

Пишу запрос к базе даныых в Access и получаю результат в виде таблицы. Мне необходимо этот результат сохранить в разделе таблицы Access. Я это делаю пока таким образом, выделяю пр. кн. мыши полученные данные, копирую, вставляю в Excel, сохраняю файл, а потом экспортирую в таблицу Access. Можно ли как то все это сделать быстрее?
Спасибо.
Teslenko_EA
Сообщения: 526
Зарегистрирован: 04 фев 2007, 18:37
Откуда: Сургут
Контактная информация:

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

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