Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] html2fpdf - FPDF error: Font file not found
Forum PHP.pl > Forum > Przedszkole
Agape
Korzystam ze skryptu html2fpdf który umożliwia tworzenie pdf z html'a. Żeby używać polskich znaków trzeba skonwertować odpowiednio czcionki z Windowsa. Skopiowałem więc czcionki z katalogu Fonts z Windows 7, skonwertowałem na .php i .z, umieściłem w katalogu font skryptu i ciągle wyświetla ten błąd, mimo, że mam chmody plików i katalogów na 777. Plik tam jest i zajmuje więcej niż 0 a skrypt ciągle mi wywala błąd ;/

  1. function tworz_pdf($dane_wejsciowe, $plik_wyjsciowy){
  2. require('panel/html2fpdf/html2fpdf.php');
  3. $pdf=new HTML2FPDF();
  4. $pdf->AddFont('arialpl','','arialpl.php');
  5. $pdf->AddFont('arialpl','B','arialbdpl.php');
  6. $pdf->AddFont('arialpl','I','arialipl.php');
  7. $pdf->SetFont('arialpl','',18);
  8. $pdf->AddPage();
  9. $pdf->WriteHTML($dane_wejsciowe);
  10. if($plik_wyjsciowy=='przegladarka') $pdf->Output(); else
  11. $pdf->Output($plik_wyjsciowy);
  12. }


linijka sprawdzająca czy plik istnieje, w skrypcie fpdf.php:
  1. $size=filesize($file);
  2. if(!$size)
  3. $this->Error('Font file not found');


sciana.gif
Pilsener
Cytat
Plik tam jest i zajmuje więcej niż 0 a skrypt ciągle mi wywala błąd
- plik może tam być, a skąd mamy wiedzieć, czy ścieżka jest poprawna? Do sprawdzenia, czy plik istnieje polecam funkcję file_exists

PS. Jeśli pliku nie ma to funkcja filesize powinna wygenerować warning, masz włączone wyświetlanie komunikaty błędów? Jeśli nie to poszukaj na forum, jak je włączyć (było wiele razy, jak zmienić poziom raportowania błędów).
Agape
Folder jest dobry, wg opisów znalezionych w internecie.

Kod
Notice: Undefined variable: e in /........./panel/html2fpdf/html2fpdf.php on line 949

Warning: filesize() [function.filesize]: stat failed for font/arialpl.z in /............/panel/html2fpdf/fpdf.php on line 1813
FPDF error: Font file not found


linijka 1813 to ta która wypisałem w poprzednim poście
Pilsener
Wyświetl ścieżkę do pliku bo na pewno jest zła, skoro filesize zwraca błąd, ewentualnie nie masz dostępu do tego pliku, jeśli jest on na innym serwerze lub w zastrzeżonym folderze.
Agape
plik z czcionka: .../www/strona/panel/html2fpdf/font/arialpl.z

Listing katalogu, plik tu jest:
  1. arialbdpl.php 22-Dec-2009 12:27 4.2K
  2. arialbdpl.z 22-Dec-2009 12:27 27K
  3. arialipl.php 22-Dec-2009 12:27 4.2K
  4. arialipl.z 22-Dec-2009 12:27 28K
  5. arialpl.php 22-Dec-2009 12:27 4.2K
  6. arialpl.z 22-Dec-2009 12:27 27K
  7. courier.php 13-Dec-2009 14:07 257
  8. helvetica.php 13-Dec-2009 14:07 3.1K
  9. helveticab.php 13-Dec-2009 14:07 3.1K
  10. helveticabi.php 13-Dec-2009 14:07 3.1K
  11. helveticai.php 13-Dec-2009 14:07 3.1K
  12. makefont/ 22-Dec-2009 12:32 -
  13. symbol.php 13-Dec-2009 14:07 3.0K
  14. times.php 13-Dec-2009 14:07 3.1K
  15. timesb.php 13-Dec-2009 14:07 3.1K
  16. timesbi.php 13-Dec-2009 14:07 3.1K
  17. timesi.php 13-Dec-2009 14:07 3.1K
  18. zapfdingbats.php 13-Dec-2009 14:07 3.0K


skrypt wywalający errory: /www/strona/panel/html2fpdf/fpdf.php

Mój skrypt do generowania pdf o którym mówie znajduje się w katalogu /www/strona/plik.php, zawartosc:
  1. function tworz_pdf($dane_wejsciowe, $plik_wyjsciowy){
  2. require('panel/html2fpdf/html2fpdf.php');
  3. $pdf=new HTML2FPDF();
  4. $pdf->AddFont('arialpl','','arialpl.php');
  5. $pdf->AddFont('arialpl','B','arialbdpl.php');
  6. $pdf->AddFont('arialpl','I','arialipl.php');
  7. $pdf->SetFont('arialpl','',18);
  8. $pdf->AddPage();
  9. $pdf->WriteHTML($dane_wejsciowe);
  10. if($plik_wyjsciowy=='przegladarka') $pdf->Output(); else
  11. $pdf->Output($plik_wyjsciowy);
  12. }



Errory z error_reporting(E_ALL);:
Kod
Notice: Undefined variable: e in .../www/strona/panel/html2fpdf/html2fpdf.php on line 949

Notice: Undefined variable: e in .../www/strona/panel/html2fpdf/html2fpdf.php on line 949

Warning: filesize() [function.filesize]: stat failed for font/arialpl.z in .../www/strona/panel/html2fpdf/fpdf.php on line 1813
FPDF error: Font file not found
Pilsener
Cytat
.../www/strona/panel/html2fpdf/font/arialpl.z
- nie podoba mi się ta ścieżka. Użyj:

c:/www/etc/itp/itd
www/etc/itp/itd
../www/etc/itp/itd
../../www/etc/itp/itd
etc/itp/itd

Ps > Wiem, że plik tam jest, problem jest ze ścieżką lub dostępem do pliku

Coś tam includujesz, plik includowany też coś tam includuje i łatwo się pogubić. Pamiętaj, że ścieżka ma się odnosić względem uruchamianego skryptu, aby się dowiedzieć w jakiej lokalizacji skrypt jest uruchamiany dodaj kod:
  1. print_r($_SERVER);
- powinno wyświetlić wszystkie ścieżki.

Agape
Miałeś racje z tymi ścieżkami. Trzeba było do pliku fpdf.php, zaraz po linijce
  1. function AddFont($family,$style='',$file='')

dodać:
  1. $pdf->AddFont('arialpl','','arialpl.php');
  2. $pdf->AddFont('arialpl','B','arialbdpl.php');
  3. $pdf->AddFont('arialpl','I','arialipl.php');

wtedy bierze fonty ze swojego katalogu (html2fpdf/)


Mam jednak jeszcze jeden problem, mianowicie z kodowaniem.
Skonwertowałem czcionki z windows do skryptu do kodowania iso-8859-2 (podobnież tylko ten obsługuje polskie znaki w tej klasie). Poustawiałem wszędzie kodowanie utf-8, w pliku w head, w mysql w polach oraz całej bazie, metode porównywania napisów też i teraz konwertuje znaki do ISO8859-2:
  1. $dane_wejsciowe = iconv("UTF-8", "ISO8859-2", $dane_wejsciowe);


PDF się tworzy, ale niestety nie ma polskich znaków. np:
Kod
ś = ¶,  ą = ±


Próbowałem zmienić kodowanie na to które poleca autor windows-1252 ale z tego co pamiętam tam i tak nie ma polskich znaków. UTF-8 też nie przejdzie. Wyświetlają się same ?
Męcze się z tym dziś już spory czas i nie wiem co jest nie tak, robię wszystko jak piszą w tutorialach wykorzystania klasy i mimo to nie działa :| sciana.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.