2012-04-23 56 views
1

是否可以使用UTF-8渲染pdf。爲波斯或阿拉伯字符?我不想使用tcpdf。在通過PHP腳本生成PDF時,它有一個性能問題。我會嘗試最新版本的PHP 5.4和pdflib 8.0.4p2,但我無法看到有效的波斯語單詞。PHP PDFlib unicode

<?php 

try { 
    $p = new PDFlib(); 

    /* open new PDF file; insert a file name to create the PDF on disk */ 
    if ($p->begin_document("", "") == 0) { 
     die("Error: " . $p->get_errmsg()); 
    } 

    $p->set_info("Creator", "hello.php"); 
    $p->set_info("Author", "Rainer Schaaf"); 
    $p->set_info("Title", "Hello world (PHP)!"); 

    $p->begin_page_ext(595, 842, ""); 

    $font = $p->load_font("Courier", "unicode", ""); 

    $p->setfont($font, 24.0); 
    $p->set_text_pos(50, 700); 
    $p->show("Hello world!"); 
    $p->continue_text($p->utf8_to_utf16("(says PHP) سلام جهان", 'utf16')); 
    $p->end_page_ext(""); 

    $p->end_document(""); 

    $buf = $p->get_buffer(); 
    $len = strlen($buf); 

    header("Content-type: application/pdf"); 
    header("Content-Length: $len"); 
    header("Content-Disposition: inline; filename=hello.pdf"); 
    print $buf; 
} 
catch (PDFlibException $e) { 
    die("PDFlib exception occurred in hello sample:\n" . 
    "[" . $e->get_errnum() . "] " . $e->get_apiname() . ": " . 
    $e->get_errmsg() . "\n"); 
} 
catch (Exception $e) { 
    die($e); 
} 
$p = 0; 

回答

2

主要問題是字型快遞沒有標誌符號要打印的阿拉伯文字。如果你使用Arial Unicode這樣的字體,你會看到預期的結果。

另一個技巧,使用$p->set_parameter("textformat", "utf8"); 那麼你可以使用UTF8直接作爲$p->continue_text("(says PHP) سلام جهان x");