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

4
我需要使用PDF::API2在PDF文档中为一些文字添加颜色 - 我该如何做?
4个回答

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样式的颜色名称可能已经足够使用,但是您可以通过使用“%”而不是“#”并传递四个值(例如%00FF0000表示洋红色)来提供CMYK颜色。

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


4
根据PDF::API2::Content,看起来您需要将哈希引用选项传递给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
$txt->text 只支持 -indent、-underline 和 -strokecolor 这几个选项,其中 -strokecolor 只用于与 -underline 结合使用时确定线条的颜色。
使用 $txt->fillcolor('colorname')$txt->fillcolor('#RRGGBB') 来设置 fillcolor 命令后面写入的任何文本的颜色。

$txt->fillcolor('...') 对我来说完美地运行了。 - chrispitude

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',
);

显然,将十六进制颜色更改为您想要的任何颜色。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接