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)
我需要制作大量不同文本的 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)