簡體   English   中英

VSTO Powerpoint注釋頁面-同一行上的不同顏色的單詞

[英]VSTO Powerpoint Notes Page - Different colored words on same line

我正在嘗試以編程方式將內容插入Powerpoint的“注釋”頁面。 同一行上將有不同顏色的文本。 我只是通過段落來使它起作用,但是這樣做會使它們出現在不同的行上。

這是我嘗試過的:

var slideRange = Application.ActivePresentation.Slides;
slideRange[1].NotesPage.Shapes[2].TextFrame.TextRange.Paragraphs(1).Font.Color.RGB = Color.Black;
slideRange[1].NotesPage.Shapes[2].TextFrame.TextRange.Paragraphs(1).Text = "word1\r";
slideRange[1].NotesPage.Shapes[2].TextFrame.TextRange.Paragraphs(2).Font.Color.RGB = Color.Gray;
slideRange[1].NotesPage.Shapes[2].TextFrame.TextRange.Paragraphs(2).Text = "word2\r";

這兩個詞用不同的顏色顯示,但我希望它們在同一行上。

我嘗試通過TextRange(TextRange.Font.Color)設置顏色,但是這似乎是一個只讀屬性。

圖片顯示了我希望實現的目標

因此,我在此上花費了很多時間,以尋找更優雅的解決方案.....但這是我發現的最好的解決方案....這假設您的文本格式為HTML,但是有一個如果您已經有RTF格式,則以標記的部分開始。

var html = "<!DOCTYPE html><html><head></head><body><style type=\"text/css\">.SQLCode{font-size:13px;font-weight:bold;font-family:monospace;;white-space:pre;-o-tab-size:4;-moz-tab-size:4;-webkit-tab-size:4;}.SQLComment{color:#00AA00;}.SQLString{color:#AA0000;}.SQLFunction{color:#AA00AA;}.SQLKeyword{color:#0000AA;}.SQLOperator{color:#777777;}.SQLErrorHighlight{background-color:#FFFF00;}</style><pre class=\"SQLCode\"><span class=\"SQLComment\">--Example Commend</span><span class=\"SQLKeyword\">SELECT</span><span class=\"SQLKeyword\">TOP</span> 1 <span class=\"SQLFunction\">COALESCE</span><span class=\"SQLOperator\">(</span>ASPU<span class=\"SQLOperator\">.</span>MobileAlias<span class=\"SQLOperator\">,</span> ASPU<span class=\"SQLOperator\">.</span>UserName<span class=\"SQLOperator\">)</span><span class=\"SQLKeyword\">AS</span> UName<span class=\"SQLKeyword\">FROM</span> dbo<span class=\"SQLOperator\">.</span>aspnet_Users ASPU</pre></body></html>";
var title = "Header Text";
if (!string.IsNullOrWhiteSpace(html))
{
    var web = new WebBrowser();
    web.CreateControl();
    web.DocumentText = html;
    while (web.DocumentText != html)
    {
        System.Windows.Forms.Application.DoEvents();
    }
    web.Document.ExecCommand("SelectAll", false, null);
    web.Document.ExecCommand("Copy", false, 
    //Start here if you already have it in RTF.
    var rtf = Clipboard.GetData(DataFormats.Rtf) as string;
    if (!string.IsNullOrWhiteSpace(rtf))
    {
        slide = ppt.Slides.AddSlide(ppt.Slides.Count + 1, ppt.SlideMaster.CustomLayouts[1]);
        slide.Layout = PpSlideLayout.ppLayoutTextAndObject;
        slide.Shapes.Title.TextFrame.TextRange.Text = title;
        slide.Select();
        slide.Shapes[2].Select();
        Globals.ThisAddIn.Application.CommandBars.ExecuteMso("PasteSourceFormatting");
        System.Windows.Forms.Application.DoEvents();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM