|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
25.04.2014, 13:37 | #1 |
Форумчанин
Регистрация: 12.08.2009
Сообщений: 118
|
текст вписанный в заданную ширину текстблока
Здравствуйте.
Извиняюсь, что пишу немного не туда, но раздела по PowerPoint я не нашел. Тут больше интересует мнение людей работающих с СОМ объектной моделью и OpenXML оффиса. Пишу генератор pptx файла. (pptx - запакованная иерархия xml-eй). На слайды вставляю текст и хочу чтобы он занимал конкретный размер. Например текст "парам пам пам" занимал 3см в ширину. Для этого в xml-e есть специальный тег <a:normAutofit /> в теге <a:bodyPr ..> в теге <p:txBody> ну и так далее. Если я нагенерирую xml и текст не помещается в строку он переносится на следующую. И на первый взгляд поле <a:normAutofit /> не сильно работает. Но, если я руками в открытом pptx-e и изменю, например, положение какого-либо объекта, то текст на слайде автоматически перестроится в соответствии с нужными размерами, которые четко впишутся в заданную ширину. Вопрос в том, как автоматизировать это перестроение? Как вариант пробую открыть презентацию через СОМ модель, добраться до 1ого слайда и немного изменить положение какого-либо объекта. Затем пересохраняю документ и с виду все окей. Но, когда генерируемый документ имеет количество слайд (страниц) побольше чем несколько(я провожу тест на 1300 стр.). То пересрохраненный текст оказывается на нескольких первых страницах. Остальные остаются с перенесенными словами на следующую строчку. В этом случае пробую в цикле менять каждый слайд (страницу) чтобы текст перестроился везде. Но в результате получаю, что где-то норм текст, где-то перепрыгнул на след. строку. Данную операцию пробовал делать вручную. Т.е. открывал свой 1300 страничный документ через PowerPoint и менял что-либо на первой странице - текс перестраивается на ближайших 4-6 страниц, на 7ой ничего не происходит. Перехожу на 7ую, меняю тут что-либо - текст перестраиватся на след 4-6стр... Вопрос в том, как перестроить текст всего документа, чтобы текст помещался точно в рамки отведенной ширины? Надеялся, что есть метод у презентации или у слайдов, что-то типа Refresh или update. То что нашел результатов не дало. Может быть в объектной модели word-a есть что-либо похожее? Если открыть нагенеренный документ PowerPoint-ом, внести небольшое изменение, а затем сохранить его, а затем переименовать в zip, разархивировать, найти нужный слайд и взглянуть что PowerPoint делает с данными чтобы они уместились, то можно увидеть что в атрибутах xml тега <a:normAutofit /> появляются параметры fontScale="92.000%" lnSpcReduction="20.000%" которые для каждого текстового блока свои. Могу сделать предположение, что меняя документ через PowerPoint выполняется ряд действий приводящий к данному желательному результату, но какие это действия? В прикреплении 1страничный тест. Прикрепить мой тестовый нагенеренный/запакованный pptx файл на 1300стр не получилось. Но скачать его можно тут https://onedrive.live.com/redir?resi...t=file%2c.pptx. Основной вопрос, как перестроить документы, чтобы весь текст обновился? Буду благодарен за любые подсказки/мысли, как это сделать в xml, СОМ или руками. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
26. Задан текст. Вывести первое слово, которое имеет заданную длину. | jek09 | Помощь студентам | 2 | 15.01.2014 11:30 |
Треугольник вписанный в окружность. Найти площадь | Ujas | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 19.09.2012 01:13 |
составить программы на паскале: попадание точки в заданную область; вывести текст в разные места экрана | Кашелот | Помощь студентам | 1 | 27.10.2011 23:24 |
Нарисовать заданную фигуру | wdnk | Общие вопросы C/C++ | 6 | 29.05.2009 00:21 |
Содержит ли текст заданную отдельную строку длинной не более 255 из символов 0 и 1 | Curtis | Помощь студентам | 1 | 15.02.2009 20:08 |