![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 24.04.2003 Skąd: Chorzów Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Wracam do moich problemów z uzyskaniem polskich czcionek w FPDF-ie. Wciąż - robiąc tak jak jest napisane w tutorialu nie wychodzą mi polskie czcionki. :cry: Postaram się opisać kroki w jaki sposób to robię: 1) Generuję plik .afm: ttf2pt1 -a c:windowsfontsarial.ttf arial 2) Generuję plik .php tworząc skrypt i uruchamiając funkcję: [php:1:dd3909ed92]<? require('makefont.php'); MakeFont('arial.ttf','arial.afm','cp1250'); ?>[/php:1:dd3909ed92] 3) Deklaruję w skrypcie [php:1:dd3909ed92]<? define('FPDF_FONTPATH','font/'); require('fpdf.php'); $pdf=new FPDF(); $pdf->Open(); $pdf->AddPage(); $pdf->SetFont('arial','',16); $pdf->Cell(0,10,'ąęśćżźółń frrggtrgtr'); $pdf->Output(); ?>[/php:1:dd3909ed92] Uzyskany winik to zamiast polskich znaków "krzaki"!!! PROSZĘ O POMOC ![]() |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 19 Pomógł: 0 Dołączył: 9.05.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Hej,
Wszystko robisz dobrze, generujesz czcionke, o.k., plik .php tez o.k. Mam nadzieję, że nie masz przy tym żadnych błędów. Ale... Patrząc na ten Twój skrypt tu masz błąd. Przed ustawieniem czcionki musisz ja najpierw dodać (a pisałeś, że robisz tak jak w tutorialu...). Czyli (poprawny skrypt wygląda tak): [php:1:222401b05f] <?php define('FPDF_FONTPATH','font/'); require('fpdf.php'); $pdf=new FPDF(); $pdf->Open(); $pdf->AddPage(); //$pdf->SetFont('arial','',16); //TWOJA LINIJKA $pdf->AddFont('Arialmt', '','arial.php'); //TA BRAKUJĄCA $pdf->SetFont('Arialmt', '', 16); //NO I USTAWIENIE WŁAŚCIWEJ CZCIONKI $pdf->Cell(0,10,'ąęśćżźółń frrggtrgtr'); $pdf->Output(); ?> [/php:1:222401b05f] Zauważ, że nazwa czcionki to nie arial, tylko Arialmt; jak sobie wyedytujesz wygerowany przez MakeFont(...) plik arial.php, to na początku zobaczysz, że taka jest właśnie nazwa. No i jeszcze jedno: w katalogu font oprócz pliku arial.php musi się jeszcze znajdować plik arial.z (tworzony razem z arial.php po generacji przez MakeFont(...) ) Mam nadzieję, że Ci zadziała. Jedyny problem, którego nie umiem rozwiązać, to dlaczego po wygenerowaniu pdf'a zajmuje on tyle miejsca? Na dzień dobry ponad 150 KB. Oczywiście zrobiłem jak w tutorialu radzili i wywaliłem wszystkie znaki z pliku *.map, oprócz tych z "polskimi ogonkami". I co? I nic->nadal cała czcionka jest "upchana" w pdf'ie i zajmuje on tyle miejsca. -------------------- "There are no problems, only opportunities"
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 398 Pomógł: 0 Dołączył: -- Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Pradopodobnie wyłączona jest kompresja LZW. Nie wiem jak to wygląda w FPDF, używam PdfLIB.
-------------------- cease this long, long rest / wake and risk a foul weakness to live / when it all comes down / watch the smoke and bury the past again / sit and think what will come / raise your fears and cast them all away
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 33 Pomógł: 0 Dołączył: 19.03.2002 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
Generacją dokumentów w FPDF-ie zajmowałem się dość dawno, ale z tego co pamiętam to duży rozmiar mógł być spowodowany zagnieżdżaniem w nich czcionek. Tutorial FPDF opisuje funkcję MakeFont() następująco:
Cytat MakeFont(string fontfile, string afmfile [, string enc [, array patch [, string type]]])
fontfile Path to the .ttf or .pfb file. afmfile Path to the .afm file. enc Name of the encoding to use. Default value: cp1252. patch Optional modification of the encoding. Empty by default. type Type of the font (TrueType or Type1). Default value: TrueType. The first parameter is the name of the font file. The extension must be either .ttf or .pfb and determines the font type. If you own a Type1 font in ASCII format (.pfa), you can convert it to binary format with t1utils. If you don't want to embed the font, pass an empty string. In this case, type is given by the type parameter. Note: in the... Może o to chodzi? Spróbuj (o ile tak nie próbowałeś) wywołać funkcję w stylu: MakeFont('','arial.afm','cp1250'), czyli pozostawić pierwszy parametr pusty, tak jak sugerują w tutorialu. Arial jest czcionką systemową którą każdy powinien mieć i chyba nie trzeba jej umieszczać w dokumencie. Moje pliki generowane w FPDF-ie mają średnio po 25 kB (3 strony A4). |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 19 Pomógł: 0 Dołączył: 9.05.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Niestety.
Jak zrobiłem tak, jak pisałeś, to wówczas rozmiar pdf'a jest oczywiście dużo mniejszy, jednak w miejscu polskich literek są spacje ![]() Te rzeczy które radzą w tutorialu już wszystkie przerobiłem. Nadal pdf, który ma 1 (jedną) linijkę tekstu ma 163KB. A co dopiero będzie, jak będę chciał w jednym dokumencie użyć wielu rodzajów czcionek? Może są jakieś inne rady :?: :?: :?: Przecież na pewno wielu z Was musiało korzystać z FPDF'a (w końcu jest to jedna z nielicznych darmowych bibliotek do generowania pdf'ów w locie). -------------------- "There are no problems, only opportunities"
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 33 Pomógł: 0 Dołączył: 19.03.2002 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
Tak, :wink: ja korzystałem z FPDF-a. System oparty właśnie między innymi na FPDF-ie robiłem grubo ponad pół roku temu i działa on do dziś z powodzeniem
![]() Niesetety nie pamiętam szczegółów każdego kroku, mogę jedynie powiedzieć, że nie miałem większych problemów z czcionkami i wszystko przebiegło bez zakłóceń. Tak jak pisałem, dokument na 3 strony A4 z kilkoma bitmapami w gray-u i z 4-ma czcionkami (z polskimi znaczkami :wink: ) zajmuje średnio 25 kB. Co do dużego rozmiaru dokumentu, to według mnie chodziło o to, czyli o zagnieżdżanie czcionek. Dlaczego nie masz polskich literek? Zakładam że stronę kodową w MakeFont(...) podałeś poprawnie, może błąd wystąpił podczas generacji pliku afm? W sumie jeżeli jednak przy zagnieżdżaniu polskie znaczki były, to i powinny być bez zagnieżdżania. Mogę podesłać Ci na priva wygenerowane przeze mnie czcionki ArialNarrow, ArialNarrowItalic, ArialNarrowBold, ArialNarrowBoldItalic bo z takich korzystałem. Jak chcesz to możesz spróbować czy będzie działało, przynajmniej rozświetli to trochę sytuację. Nasuwa się jeszcze jedno: nie wiem jak wygląda sprawa z czcionkami OpenType i czy mogą być z nimi problemy. Opisując funkcję MakeFont(...) tutorial FPDF podaje: Cytat type
Type of the font (TrueType or Type1). Default value: TrueType. nic nie mówiąc o OpenType. Czcionką OpenType np. pod Win2k jest m.in. rodzina Timesa i Ariala (nie Narrow). Jakiej czcionki używasz? |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 19 Pomógł: 0 Dołączył: 9.05.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
W sumie próbowałem tylko z Arialem (zwykłym-"Normalny", plik Arial.ttf), no ale ta czcionka jest przecież TrueType.
Jak możesz, to podeślij mi te wygenerowane przez Ciebie, zobaczę czy to coś zmieni. -------------------- "There are no problems, only opportunities"
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 33 Pomógł: 0 Dołączył: 19.03.2002 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
To że font ma rozszerzenie *.ttf nie świadczy że jest TrueType. Możesz poczytać o tym na:
http://fonty.pl/fonty.php?str=porady&pid=story09 Być może przyczyna braku polskich znaków leży gdzie indziej, ale warto to sprawdzić. FPDF-owe czcionki ArialNarrow oczywiści chętnie Ci prześlę, podaj tylko adres maila :wink: |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 19 Pomógł: 0 Dołączył: 9.05.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Cytat To że font ma rozszerzenie *.ttf nie świadczy że jest TrueType.
To wiem, ale po otwarciu tego pliku widzę, że jest to TrueType. Cytat FPDF-owe czcionki ArialNarrow oczywiści chętnie Ci prześlę, podaj tylko adres maila :wink:
Mojego mejla wysłałem Ci przez PW. -------------------- "There are no problems, only opportunities"
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 24.04.2003 Skąd: Chorzów Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Zrobiłem tak jak pisałeś kasztan, ale dalej nie wychodzą mi polskie czcioki. Ale zauważyłem pewien błąd. A mianowicie: Pisałeś, że w katalogu font oprócz pliku arial.php musi się jeszcze znajdować plik arial.z (tworzony z arial.php po generacji przez MakeFont(...)). No właśnie i ten plik nie jest generowany. Nie wiem do czego ten plik jest potrzebny, ale jeżeli napisałeś , że musi być to widocznie jest ważny ![]() Po uruchomieniu funkcji MakeFont otrzymuję następujący komunikat: Notice: font file could not be compressed (gzcompress not available) Font definition file generated (arial.php) Jak rozwiązać ten problem? |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 19 Pomógł: 0 Dołączył: 9.05.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Witam,
domm nie wiem, jak Ty to zrobiłeś, ale dzisiaj użyłem tych czcionek, które mi podesłałeś i one po prostu działają normalnie - tzn. są polskie znaki i wygenerowany pdf ma sensowny rozmiar. Gdy użyłem w jednym pdf'ie wszystkich czterech czcionek, które od Ciebie dostałem, wówczas pdf miał niecałe 7KB! Teraz kolejna prośba do Ciebie - przypomnij sobie JAK generowałeś te swoje czcionki. (rzeczywiście plik *.z nie był przy nich potrzebny). Chodzi o to, że przydałoby mi się to na przyszłość; poza tym zauważyłem, że użyłeś w tych czcionkach kodowania windows-1250, a ja we wszystkich moich stronkach i skryptach php używam iso-8859-2 (bez sensu, żebym wszystko zmieniał). Wielkie dzięki. -------------------- "There are no problems, only opportunities"
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 25.04.2025 - 05:58 |