perl win32 powerpoint设置字体颜色

perl win32 powerpoint setting font color

我需要制作大量不同文本的 Powerpoint 文件(会议议程)。我试着用 Perl 和 Win32::OLE 来做这件事。除了设置文本颜色 I post 外,这很有效。我只能设置 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>');

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

RGB 函数的值可以通过一些简单的位操作轻松计算。红色 (r)、绿色 (g) 和蓝色 (b) 分量的计算为:

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

其中 | 是按位或运算符,<< 是左移运算符。如果您不希望使用按位运算来工作,您也可以使用此计算:

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