2015-01-02 118 views
0

我常常把我的PDF :: API2字體,這樣在我的Perl腳本,它工作得很好:Perl和PDF :: API2:ttfont()不工作

$font{'h'} = $p->corefont("Helvetica"); 

然後,當我想打印unicode字符(俄語西里爾字符)它不起作用。我發現,你必須使用TrueType字體,然後所有這些特殊字符才能工作。所以,我想這一點:

$font{'h'} = $pdf->ttfont('times.ttf'); 

之前,我複製的文件「TIMES.TTF」從我的Windows字體目錄到PDF :: API2可以騎驢找馬目錄:我的腳本所在的目錄,該目錄在那裏PDF :: API2位於和其他幾個目錄。但我總是收到「內部服務器錯誤」消息。該腳本在Linux服務器上運行。我也試過了:

$font{'h'} = $pdf->ttfont('external_ttfs/times.ttf'); 

(我創建「external_ttfs」之前爲PDF的子目錄:: API2的「PDF」目錄它沒有任何工作我想也許這個問題可能是「時代。 。TTF」的文件,它可能沒有正確的格式,所以我下載了‘DejaVuSans.ttf’,一個免費的字體我也複製該文件到我的網站空間的各種目錄,而且該命令導致內部服務器錯誤:

$font{'h'} = $pdf->ttfont('DejaVuSans.ttf'); 

有沒有人有一個想法可能是什麼問題?提前謝謝!我不知道如果TTF文件不正確,如果找不到,或者如果有任何其他問題。

回答

0

這應該工作

#!/usr/bin/perl 
use strict; 
use warnings; 
use lib 'PDF-API2-0.73/lib/'; 


use PDF::API2; 

my $text = "A sample text using Noto TTF"; 

my $pdf = PDF::API2->new(); 
my $page = $pdf->page; 
my $txt = $page->text; 

my $font = $pdf->ttfont('C:/temp/fonts/NotoSans-Bold.ttf');   

$txt->font($font, 25); 
$txt->translate(200, 550); 
$txt->fillcolor('black'); 
$txt->text($text); 

$pdf->saveas("Noto-TTF.pdf"); 
0

你安裝的字體:TTF模塊上的Perl? 從here下載並將其添加到Perl lib文件夾,然後重試。