Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Klasa] Problem z kodowaniem pobieranych danych w klasie FPDF
wilczekpl
post 22.02.2010, 17:05:15
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 22.02.2010
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Witam,
w oparciu o klasę FPDF stworzyłem skrypt generujący PDF z danych, pobieranych z bazy PostgreSQL. Mam jednak problem z wyświetlaniem polskich fontów. Przygotowałem zatem odpowiednią czcionkę. Jednak nie przyniosło to oczekiwanych zmian. Sądzę więc, że problem leży w kodowaniu znaków. W bazie mam UTF-8 (nie mogę zmienić), natomiast FPDF koduje w ISO.
Poniżej zamieszczam kod klasy, w której użyłem funkcji iconv(). Z nie wiadomych mi przyczyn, zwraca mi jednak błąd informujący o niewłaściwym kodowaniu wyjściowym.

Gdybym mógł prosić o poradę, jak rozwiązać ten problem, byłbym wdzięczny.
  1. <?php
  2. define('FPDF_FONTPATH','fpdf/font/'); //definiuje katalog z czcionkami komponentu
  3. require('fpdf/fpdf.php'); //odniesienie do skryptu komponentu
  4.  
  5. include ("./aktualnoscibd.php");
  6.  
  7. class mPDF extends FPDF
  8. {
  9. private $binShowHeader = true;
  10. private $binShowFooter = true;
  11. private $strHeader = '';
  12.  
  13. public function Header()
  14. {
  15. if ($this->binShowHeader)
  16. {
  17. $this-> Image('/pdf_logo.jpg', 40, 10, 125, 55);
  18. }
  19. }
  20.  
  21. public function Footer()
  22. {
  23. if ($this->binShowFooter)
  24. {
  25. $this->AliasNbPages();
  26. $this-> SetTextColor(189,189,189);
  27. $this-> AddFont('arialpl', '', 'arialpl.php');
  28. $this->SetFont('arialpl', '', 8);
  29. $this-> SetFontSize(8);
  30. $this->SetXY(45, -20);
  31. $this->Cell(20, 8, '"Promyczek"');
  32.  
  33. $this->Ln(20);
  34. }
  35. }
  36.  
  37. public function setHeader($strHeader)
  38. {
  39. $this->strHeader = $strHeader;
  40. }
  41. public function enableHeader()
  42. {
  43. $this->blnShowHeader = true;
  44. }
  45. public function disableHeader()
  46. {
  47. $this->blnShowHeader = false;
  48. }
  49. public function enableFooter()
  50. {
  51. $this->blnShowFooter = true;
  52. }
  53. public function disableFooter()
  54. {
  55. $this->blnShowFooter = false;
  56. }
  57. }
  58.  
  59. $pdf = new FPDF();
  60. $pdf = new mPDF();
  61. $pdf->Open();
  62. $pdf->AddPage();
  63. $pdf->SetTitle('Aktualnosci');
  64.  
  65. $pdf-> AddFont('arialpl', '', 'arialpl.php');
  66. $pdf->SetFont('arialpl', '', 36);
  67. $pdf->SetTextColor(4, 4, 180);
  68. $pdf-> SetFillColor(4, 4, 180);
  69. $pdf-> SetDrawColor(4,4,180);
  70. $pdf-> SetXY(50, 45);
  71. $pdf-> Cell(120, 36, 'Aktualności', 0, 0, 'C');
  72. $pdf-> SetLineWidth(0.1);
  73. $pdf-> Line(10, 68, 200, 68);
  74.  
  75. $uchwyt_polaczenia='host = *** port = 5433 dbname = *** user = *** password = ***';
  76. $polacz=pg_connect($uchwyt_polaczenia) or die('Nie mozna pobrac aktualnosci');
  77. $rezultat=pg_exec($polacz, 'SELECT * FROM aktualnosci ORDER BY data DESC');
  78. $numregs=pg_numrows($rezultat);
  79.  
  80. //table
  81. $fill=0;
  82. $i=0;
  83. while($i < $numregs)
  84. {
  85. $tytul = pg_result($rezultat, $i, 'tytul');
  86. $data=pg_result($rezultat, $i, 'data');
  87. $tekst=pg_result($rezultat, $i, 'tresc');
  88. $tekst = iconv('iso-8859-2', 'windows-1250', $tekst);
  89. $pdf->SetFont('arialpl', '', 10);
  90. $pdf->SetTextColor(4,4,180);
  91. $pdf-> SetXY(10, 70);
  92. $pdf-> Cell(90, 5, $tytul, 0, 0, 'L', $fill, '\n');
  93. $pdf->SetFont('arialpl', '', 5);
  94. $pdf->SetTextColor(189,189,189);
  95. $pdf-> SetXY(10, 75);
  96. $pdf-> Cell(30, 5, $data, 0, 0, 'L', $fill);
  97. $pdf->SetFont('arialpl', '', 10);
  98. $pdf-> SetTextColor(0,0,0);
  99. $pdf-> SetXY(10, 80);
  100. $pdf-> MultiCell(190, 5, $tekst, 0, 'L', $fill);
  101. $fill=!$fill;
  102. $i++;
  103. }
  104.  
  105. $pdf-> Output();
  106. ?>


--------------------
Wilczekpl pozdrawia :)
Go to the top of the page
+Quote Post
seeb
post 30.12.2012, 15:19:39
Post #2





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 6.12.2007
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Jesteś pewien?
  1. $tekst = iconv('iso-8859-2', 'windows-1250', $tekst);

skoro masz utf-8 to iconv powinien wygladać inaczej. [Wersja z wędką a nie z rybą]
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 08:55