perl win32 powerpoint设置字体颜色

时间:2016-06-01 11:14:31

标签: perl winapi fonts colors powerpoint

我需要生成大量具有不同文本的Powerpoint文件(会议程序)。我尝试使用Perl和Win32 :: OLE执行此操作。这适用于设置我发布的文本的颜色除外。我可以设置的只是RGB中的红色值,而不是其他颜色。我使用Powerpoint 2010.此外,我可以通过VBA更改Powerpoint中的颜色。

这是我使用的代码(用#评论 - 是我尝试过的一些选项,但没有用。)

use strict;
use Win32::OLE qw(in with);
use Win32::OLE::Const 'Microsoft PowerPoint';
$Win32::OLE::Warn = 2; # Throw Errors, I'll catch them

my $PptApp  = Win32::OLE->GetActiveObject('PowerPoint.Application')||   Win32::OLE->new('PowerPoint.Application', 'Quit'); 
$PptApp->{Visible} = 1;
my $Presentation = $PptApp->Presentations->Open({FileName=>'<input-filename.ppt>',ReadOnly=>1});

my $Slide = $Presentation->Slides(1);
$Slide->{Name} = "Slide1";

my $TextBox=$Slide->Shapes->AddTextbox({Orientation=>1, 
                                  Left=>25, 
                                  Top=>25,
                                  Width=>550,
                                  Height=>50,
});

$TextBox->TextFrame->TextRange->{Text} ="Big Ole Test";
$TextBox->TextFrame->TextRange->Font->{Color} = 255;

#-   $TextBox->TextFrame->TextRange->Font->{Color} => ({RGB=>(Red=>86, Green=>55, Blue=>201)});
   ## Black
#-   $TextBox->TextFrame->TextRange->Font->Color->RGB=>[255,255,255];
   ## Black
#-   $TextBox->TextFrame->TextRange->Font->Color => [255,255,255];
   ## Black
#-   $TextBox->TextFrame->TextRange->Font->Color->RGB => 'RGB(255,255,255)';
   ## Black
#-   $TextBox->TextFrame->TextRange->Font->{Color}->{RGB}=>[255,255,255];
   ## Black

$Presentation ->SaveAs('<output-filename.ppt>');

1 个答案:

答案 0 :(得分:0)

您必须传递VBA RGB函数的。 (Source)这是一个整数值,不是整数值数组或字符串。

RGB函数的值可以通过一些简单的位操作轻松计算。 Red(r),Green(g)和Blue(b)组分的计算是:

(r) | (g << 8) | (b << 16)

其中|是按位OR运算符,<<是左移运算符。如果您不希望在不使用按位运算的情况下工作,也可以使用此计算:

r + (g * 256) + (b * 65536)