5 Aralık 2016

Php fpdf kütüphanesinde Türkçe karakter problemi çözümü

Merhabalar,

Daha önce yazıya döktüğüm makalemde "fpdf" kütüphanesini kullanarak php ile nasıl pdf dosyaları oluşturabileceğimizi anlatmıştım.
http://www.kodyazma.com/2013/05/php-pdf-olusturma.html

Bir arkadaşımızdan gelen Türkçe karakter sorunu üzerine problemi araştırdım ve çözümünü anlatmak istedim.

Farklı dil sistemlerini fdpf'de kullanabilmek font dosyası için ayar yapmamız gerekiyor. Bunun için "makefont" klasörü içerisindeki "makefont.php" dosyasını kullanacağız. Ana klasör içerisine oluşturduğumuz dosyaya aşağıdaki kodları ekleyerek, php dosyamızı çalıştıralım. Font seçimini kendi bilgisayarınızdaki font dosyalarına göre değiştirebilirsiniz.

<?php

include("makefont/makefont.php");

MakeFont("C:\Windows\Fonts\arial.ttf",  "ISO-8859-9") ;

?>

Php komutlarını çalıştırdıktan sonra 2 adet dosya oluşacaktır. "arial.php" ve "arial.z" isimli 2 adet dosyayı "FPDF" kütüphanesi içerisindeki "font" klasörü içerisine yerleştiriyoruz.

 $pdf->AddFont('arial','','arial.php'); 
 $pdf->SetFont('Arial','',14);
 $turkce_icerik = iconv('utf-8', 'ISO-8859-9', 'ŞüİĞ gibi harfleri artık kullanabiliriz');

Böylece Türkçe karakterleri pdf dosyamızda sorunsuzca kullanabiliriz. Farklı dillerin karakterleri için aşağıdaki tabloyu da paylaşalım.
  • cp1250 (Central Europe)
  • cp1251 (Cyrillic)
  • cp1252 (Western Europe)
  • cp1253 (Greek)
  • cp1254 (Turkish)
  • cp1255 (Hebrew)
  • cp1257 (Baltic)
  • cp1258 (Vietnamese)
  • cp874 (Thai)
  • ISO-8859-1 (Western Europe)
  • ISO-8859-2 (Central Europe)
  • ISO-8859-4 (Baltic)
  • ISO-8859-5 (Cyrillic)
  • ISO-8859-7 (Greek)
  • ISO-8859-9 (Turkish)
  • ISO-8859-11 (Thai)
  • ISO-8859-15 (Western Europe)
  • ISO-8859-16 (Central Europe)
  • KOI8-R (Russian)
  • KOI8-U (Ukrainian)
Son olarak daha önceki makalemde paylaşmış olduğum kodlarımızın güncel halini (oluşturulan font dosyasının ekli olduğu) paylaşayım. 

https://yadi.sk/d/dAq6QGz532FE4z

Umarım yardımcı olabilmişimdir, kolay gelsin.

11 yorum:

  1. selam güzel bir anlatım , var olan pdf i açıp içerisine ekleme yapabiliyor muyuz.

    YanıtlaSil
  2. Merhaba, benim sorunum aşağıdaki karakterleri yazdıramamak veya bozuk yazması, bu konuda yardımcı olabilir misiniz?
    " yerine " yazıyor
    ' yerine ' yazıyor
    + boş alan bırakıyor
    & boş alan geliyor ve sonrasındaki hiç bir karakteri yazmıyor.

    YanıtlaSil
    Yanıtlar
    1. " yerine & q u o t ; yazıyor
      ' yerine & # 0 3 9 ; yazıyor

      Sil
  3. merhaba, öncelikle teşekkürler.
    şöyle bir sorun yaşadım: türkçe karakterleri elle yazınca sorun yok fakat veritabanından çektiklerimde sadece ı harfinde y olarak basıyor. bunun bir çözümü var mıdır? veritabanında da utf8 ayarlı.

    YanıtlaSil
    Yanıtlar
    1. merhaba bende de aynı sorun vardı, farkettim ki bold olarak kullandığımda küçük ı harflerini basmıyor. SetFont('Arial','B'); şeklinde kullanım varsa kaldır düzeliyor.

      Sil
  4. Merhaba öncelikle emeğinize sağlık teşekkür ederim.Yalnız bir sorun yaşıyorum.ı İ gibi Türkçe harfleri hatalı basıyor. Notepade ++ ile yazarken utf-8 bomlu bomsuz denedim ancak bir türlü çözemedim.Şimdiden desteğiniz için teşekkür ederim.

    YanıtlaSil
  5. Bu yorum yazar tarafından silindi.

    YanıtlaSil
  6. Bu yorum yazar tarafından silindi.

    YanıtlaSil
  7. Bu yorum yazar tarafından silindi.

    YanıtlaSil
  8. İyi Günler pdf belgesi içindeki satırlarda hala türkçe karakter sorunu var

    YanıtlaSil
  9. Notepad kuullanlar içinÜST MENÜDEN encoding-->chracter sets-->turkish-->ISO-8859-9 SEÇİN

    YanıtlaSil

Bu Blogda Ara

İletişim

Ad

E-posta *

Mesaj *