Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Polskie czcionki w FPDF - ciąg dalszy
luv
post 29.04.2003, 07:37:02
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 sad.gif
Go to the top of the page
+Quote Post
kasztan
post 13.05.2003, 22:02:50
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"
Go to the top of the page
+Quote Post
dragossani
post 14.05.2003, 14:31:17
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
Go to the top of the page
+Quote Post
domm
post 15.05.2003, 14:01:57
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).
Go to the top of the page
+Quote Post
kasztan
post 15.05.2003, 21:08:21
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 sad.gif

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"
Go to the top of the page
+Quote Post
domm
post 16.05.2003, 06:39:24
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 biggrin.gif
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?
Go to the top of the page
+Quote Post
kasztan
post 16.05.2003, 09:12:08
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"
Go to the top of the page
+Quote Post
domm
post 16.05.2003, 11:26:44
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:
Go to the top of the page
+Quote Post
kasztan
post 16.05.2003, 11:42:09
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"
Go to the top of the page
+Quote Post
luv
post 19.05.2003, 07:02:48
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 smile.gif
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?
Go to the top of the page
+Quote Post
kasztan
post 19.05.2003, 21:42:44
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"
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: 25.04.2025 - 05:58