2016-03-22 12 views
4

Ben bir dize geçmesine aşağıdaki kodu yapılmış ve pdf Repliklerimi oluşturur:aksan oluşturun ve ç PDFlib + PHP ile PDF

function text_block($p,$text,$xcrd,$ycrd) 
{ 
    $font_size=24; //font size, used to space lines on y axis 
    $tmplines = explode("\n",$text); 
    for($j=0;$j<count($tmplines);$j++){ 
     $tmptxt = explode(" ",$tmplines[$j]); 
     $str=""; 
     for($i=0;$i<count($tmptxt);$i++){ 
     if($str=="") 
     $str=sprintf("%s",$tmptxt[$i]); 
     else 
     $str=sprintf("%s %s",$str,$tmptxt[$i]); 
     if((strlen($str)*$font_size + strlen($tmptxt[$i+1])*$font_size) > 1512){ 
     $p->fit_textline($str,$xcrd,$ycrd,""); 
     $str=""; 
     $ycrd-=$font_size; 
     } 
    } 
     $p->fit_textline($str,$xcrd,$ycrd,""); 
     $ycrd-=$font_size; 
    } 
    return $ycrd; 
} 

ben "é" veya "ç" gibi bir şey geçerken Çünkü PDF'de garip karakterler "Ã ©" görünür.

Bunu nasıl düzeltirim?

EXEMPLE

şey desenli bir PDF oluşturmak için olacak?

$p = new PDFlib(); 
$p->set_option("stringformat=utf8"); 
$name_file = "wp-content/uploads/".$current_user->ID."_".$time."_mysite.pdf"; 
if ($p->begin_document($name_file, "") == 0) { 
    die("Error: " . $p->get_errmsg()); 
} 
$p->set_info("Creator", "mysyte.com.br"); 
$p->set_info("Author", $current_user->username); 
$p->set_info("Title", "title"); 
$y = 2138; 
$x = 1512; 
$p->begin_page_ext($x, $y, ""); 
$y -= 100; 
$y = text_block($p, "A data é: ".date("d/m/Y", $time), 50, $y); 
$p->end_page_ext(""); 
$p->end_document(""); 

"Bir veri é: 2016/03/23" gibi pdf şey görünmesini, ama php o asılı bla streç koymak ve PDF hata döndürür veya oluşturmaz zaman, ne bir şey yapmak . Eksikliğin bir şey mi yüklediğini veya bir şeyin yapılandırması mı olduğunu bilmiyorum ya da bir şeyi etkinleştirmelisin. o pdf_set_parameter geçer ben pdflib.upr dosya yapmadıysanız, önce çünkü

REFERANS

örneği "Örnek 10-6. Yazı gösteri" bu site ne istiyorum, ama benim php içinde yapamaz .

İkinci Onun on line ne yaptığını anlamadı çünkü: bu hat olacağı gibi ben fit_textline

GÜNCELLEME

işlev görmesi taşırsanız, denedim

pdf_continue_text($p,"$f (".chr(128)." Ç à á â ã ç è é ê)"); 

Başka bir sayfada php benzer kod ai düşük.

try { 
    $p = new PDFlib(); 
    if ($p->begin_document("wp-content/uploads/hello.pdf", "") == 0) { 
      die("Error: " . $p->get_errmsg()); 
    } 
    $p->set_info("Creator","hello.php"); 
    $p->set_info("Author","Rasmus Lerdorf"); 
    $p->set_info("Title","Hello world (PHP)"); 
    $p->set_parameter("FontOutline", "Ubuntu=/var/www/html/wordpress/wp-includes/fonts/ubuntu-font-family/Ubuntu-C.ttf"); 
    $p->set_parameter("textformat", "utf8"); 
    $y = 2138; 
    $x = 1512; 
    $p->begin_page_ext($x, $y, ""); 
    $p->set_text_pos(25,750); 
    $font = $p->findfont("Ubuntu", "unicode", ""); 
    $font_size=24.0; //font size, used to space lines on y axis 
    $p->setfont($font, $font_size); 
    $p->continue_text("(".chr(128)." Ç à á â ã ç è é ê)"); 
    $p->end_page_ext(""); 
    $p->end_document(""); 
}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); 
} 

Ama yine de benim pdf oluşturmaz ve ben Try catch ile tedaviye yapmış çünkü olması gerektiği gibi aynı zamanda sunucuda bir 500 hata hata çıkışları göstermez sadece gelen.

PDFlib ile çalışan bir kişi bunu nasıl yapacağını biliyor mu? Harici bir kaynak belirleyin ve utf8'e metin türünü yazın, yani aksan ve ç ile çalışır.

+0

"C" düzenli bir karakterdir ve * * bir sorun olmamalıdır. Gösterdiğiniz dizenin UTF8 kodlu olduğuna dair tüm işaretler vardır. Ve PDF, UTF8 kodlu metni desteklemiyor. – usr2564301

cevap

1

Bunu kullanabilirsiniz:

try { 
    $p = new PDFlib(); 
    if ($p->begin_document("wp-content/uploads/katleia.pdf", "") == 0) { 
      die("Error: " . $p->get_errmsg()); 
    } 
    $p->set_info("Creator","hello.php"); 
    $p->set_info("Author","Rasmus Lerdorf"); 
    $p->set_info("Title","Hello world (PHP)"); 
    $p->set_parameter("textformat", "utf8"); 
    $y = 2138; 
    $x = 1512; 
    $p->begin_page_ext($x, $y, ""); 
    $p->set_text_pos(25,750); 
    $font = $p->load_font("Helvetica-Bold", "winansi", ""); 
    $font_size=24.0; //font size, used to space lines on y axis 
    $p->setfont($font, $font_size); 
    $p->continue_text("(Ç à á â ã ç è é ê)"); 
    $p->end_page_ext(""); 
    $p->end_document(""); 
}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); 
} 
-1

Her şeyden önce: Neden çok satırlı çıktı oluşturmak için textflow (PDFlib'in çok satırlı işlevselliği) kullanmıyorsunuz? senin yanlış çıkışına

ve şimdi:

  • sana "Ã ©" sanırım senin girdi dizeleri (utf-8 "é" nin iki bayt gösterimi olan) ama sen var textformat'ı PDFlib'de utf-8'e ayarlayın. Textformat, uyguladığınız giriş dizeleriyle eşleşmelidir.
+0

kuşaktan pdf'ye tam bir örnek verebilir misiniz? –

İlgili konular