VSTO Powerpoint注释页面-同一行上的不同颜色的单词 [英] VSTO Powerpoint Notes Page - Different colored words on same line

查看:88
本文介绍了VSTO Powerpoint注释页面-同一行上的不同颜色的单词的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试以编程方式将内容插入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;

这两个词的颜色不同,但我希望它们在同一行。 / p>

我尝试通过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\>-示例Commend< / span>< span class = \ SQLKeyword\> SELECT< / span>< span class = \ SQLKeyword\> TOP< / span> 1< span class = \ SQLFunction\> COALESCE< / span>< span class = \ SQLOperator\>(< / span> ASPU < / 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> < / span> aspnet_Users ASPU< / pre>< / body>< / html>; 
var title =标题文本;
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,
//如果您已经在RTF中使用它,则从此处开始。
var rtf = Clipboard。 GetData(DataFormats.Rtf)作为字符串;
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();
}
}


I am trying to insert content into the Notes Page of Powerpoint programmatically. There will be different colored text on the same line. I have only gotten it to work via paragraphs, but doing so will make them appear on different lines.

This is what I have tried:

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";

The 2 words come out in different colors but I would like to have them on the same line.

I have tried setting the color through the TextRange (TextRange.Font.Color), however this seems to be a read only property.

Picture showing what I wish to achieve

解决方案

So I've spent a fair bit of time on this looking for a more elegant solution..... but this is the best I have found.... This assumes that you have your text formatted in HTML, but there is a marked section to start if you already have a RTF format.

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();
    }
}

这篇关于VSTO Powerpoint注释页面-同一行上的不同颜色的单词的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆