如何使用PDF :: API2 Perl模块设置字体颜色?

时间:2009-08-17 10:29:50

标签: perl pdf fonts

我需要使用PDF :: API2为PDF文档中的某些文本添加颜色 - 我该怎么做?

4 个答案:

答案 0 :(得分:5)

您可以在添加文本之前调用fillcolor方法来设置文本颜色:

use PDF::API2;

my $pdf = PDF::API2->new();              # Create a PDF
my $font = $pdf->corefont('Helvetica');  # Add a font to the PDF
my $page = $pdf->page();                 # Create a page to hold your text
my $text = $page->text();                # Create a graphics/text object

$text->font($font, 12);                  # Set the font and size for your text
$text->fillcolor('#FF0000');             # Set the text color
$text->text('This text will be red.');   # Add your text

在大多数情况下,Web样式的颜色名称可能会正常工作,但您可以使用“%”而不是“#”来传递CMYK颜色并传递四个值(例如,%00FF0000用于品红色)。< / p>

PDF::API2::Content文档详细介绍了影响$text对象的各种方法。

答案 1 :(得分:4)

根据PDF::API2::Content,您似乎将hashref选项传递给 text 方法(在PDF :: API :: Content :: Text对象上)。

所以它“应该”像这样工作(注意。我没有安装PDF :: API2,所以下面的代码未经测试):

use PDF::API2;
use PDF::API2::Util;

my $pdf = PDF::API2->new;

my $font = $pdf->corefont('Helvetica',-encode=>'latin1');
my $page = $pdf->page;
$page->mediabox( 80, 500 );

my $txt = $page->text;
$txt->font( $font, 20 );

$txt->translate( 50, 800 );
$txt->text('Hello there!', { color => '#e6e6e6' } );  # <= hashref option

$pdf->saveas( "file.pdf" );
$pdf->end();

希望有帮助吗?

答案 2 :(得分:2)

$txt->text支持的唯一选项是-indent,-underline和-strokecolor,但-strokecolor仅与-underline结合使用以确定线条的颜色。

使用$txt->fillcolor('colorname')$txt->fillcolor('#RRGGBB')设置fillcolor命令后写入的任何文本的颜色。

答案 3 :(得分:1)

使用以下内容:

my $margin = $x; #co-ordinates for page
my $margin = $y; #co-ordinates for page

my $caption = 'blah blah blah';
my $font=$pdf->corefont('Helvetica-Bold',-encode=>'latin1');
my $font_size = 12;

my $page = $pdf->openpage($pageNum);
my $gfx = $page->gfx;

$gfx->textlabel($margin,$y_pos, $font,$font_size,$caption,
   -color => '#5E5E5E',
);

显然可以将十六进制颜色更改为您想要的颜色。