2012-04-23 6 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

主な問題は、印刷するアラビア語テキストのグリフがフォントCourierにないことです。 Arial Unicodeのようなフォントを使用すると、期待どおりの結果が得られます。

もう一つのヒントは、あなたが$p->continue_text("(says PHP) سلام جهان x");

のように直接UTF8を使用することができます $p->set_parameter("textformat", "utf8"); を使用
関連する問題