Я хотел бы добавить форматированный текст в TextBox на слайде PowerPoint.
Я использую. Net 4.7.2
с Microsoft.Office.Interop.PowerPoint
Обзор
// Initialization of the Application
public PresentationGenerator () {
pptApplication = new Application ();
}
// Creating a new document based on a teplate.
Presentation pptPresentation = generator.pptApplication.Presentations.Open (templatePath, MsoTriState.msoFalse, MsoTriState.msoTrue, showWindow);
// Setting a slide and editing the text works perfectly fine with this
Slide currentSlide;
currentSlide = pptPresentation.Slides[1];
currentSlide.Shapes.Title.TextFrame.TextRange.Text = "Wonderful Title";
currentSlide.Shapes[3].TextFrame.TextRange.Text = "Great TextBox";
Это моя установка для установки текста на слайдах.
Однако я хотел бы добавить текст к одной из моих фигур, используя al oop и настройку макета в зависимости от свойства. Представьте себе следующий массив
customParagraphs = [
{
text:"example heading",
type:"title"
},{
text:"example normal text",
type:"text"
}]
. Я могу l oop над этим списком, добавить текст в конец TextRange2
, используя .insertAfter(text)
, и попытаться установить размер шрифта для той части текста, которая я добавил.
TextRange2 textrange = currentSlide.Shapes[3].TextFrame2.TextRange
foreach(var paragraph in customParagraphs){
TextRange2 paragraphRange = textrange.Paragraphs.insertAfter(paragraph.text)
if(paragraph.type == "title"){
paragraphRange.Font.Size = 24.0F;
}
}
Это успешно добавит текст и изменит размер шрифта, если type is title. Однако это изменит размер шрифта для всего текстового диапазона!
Ссылка, возвращаемая .insertAfter()
, похоже, ссылается на экземпляр TextRange2
, а не на мой недавно добавленный абзац .
Мои вопросы
Есть ли способ изменить размер шрифта и другие атрибуты строки, абзаца или слова внутри элемента TextRange
или TextRange2
?
Есть ли лучший способ добавить текст к элементу TextRange
или TextRange2
, чем .insertAfter
, который предпочтительно возвращает ссылку только на тот текст, который я добавил?