Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [*.pdf - polskie czcionki]
Forum PHP.pl > Forum > PHP
itsme
co jakis czas pojawia się problem polskich czcionek w pdf-ie. W zwiąku z tym, że ja też zacynam coraz mocniej drążyć tą tematykę proszę o podanie przykładów poradzenia sobie z tym problemem przy http://www.fpdf.org/ oraz http://www.ros.co.nz/pdf/.

Temat pozostawiam jako przyklejony na okres rozwiązania problemu.
W okresie późniejszym zostanie stworzony małe faq lub kurs.

Pozdrawiam.
KaMeLeOn
Oto krótki tutorial jak tworzyć polskie czcionki i jak z nich korzystać w dokumentach PDF, tworzonych przez darmową klasę (FPDF). Użyjemy do tego narzędzia (Makefont) zawartego w dystrybucji FPDF. Służy ono do generowania czcionki, którą później będziemy wykorzystywać w naszym dokumencie PDF.

Najpopularniejsze formaty czcionek to: Type1 i TrueType.
Są typowymi czcionkami wektorowymi stosowanymi w środowiskach graficznych niezależnie od platformy. Twórcą formatu Type1 jest firma Adobe, a formatu TrueType firmy Apple i Microsoft. Aby uzyskać polskie ogonki w PDF'ie należy przekonwertować czcionkę z formatu TrueType do formatu Type1.

_______________________________
1. Krok pierwszy (generowanie metrycznego pliku *.afm).
Aby wygenerować plik *.afm przydatne będzie darmowe narzędzie ttf2pt1 konwertujące czcionkę w formacie TrueType do formatu Adobe Type1.

Dostępne jest pod adresem: http://ttf2pt1.sourceforge.net/download.html
Binaria Windows dostępne są pod adresem: http://www.fpdf.org/fr/dl.php?id=22

W linii poleceń wpisujemy:
Cytat
ttf2pt1 –a nazwa_czcionki.ttf nazwa_pliku_afm

np. dla czcionki arial.ttf
Cytat
ttf2pt1 –a arial.ttf arialpl

Powinieneś otrzymać pliki: arialpl.afm i arialpl.t1a.

To najważniejszy moment w budowaniu czcionek. Ponieważ są one dołączane do pliku PDF w tym momencie musimy zadbać o rozmiar generowanych plików. Aby ograniczyć czcionkę do konkretnego kodowania można użyć zawartych w katalogu /font/makefont/ plików *.map zawierających mapę znaków dla konkretnego kodowania.
Generowanie czcionki arialpl dla kodowania ISO-8859-2:
Cytat
ttf2pt1 –b -L iso-8859-2.map arial.ttf arialpl

Można również usunąć z pliku mapy znaki, których nie będziemy używali. To również spowoduje zminiejszenie rozmiaru wynikowego pliku czcionki, ale ta metoda nie jest polecana zwłaszcza przy dynamicznym generowaniu PDF'ów.

_______________________________
2. Krok drugi (generowanie pliku czcionki za pomocą narzędzia Makefont)
Tworzymy krótki skrypt php.
[php:1:b5574f368e]<?php
require('sciezka_do_narzedzia_makefont/makefont.php');
Makefont('nazwa_czcionki.ttf', 'nazwa_pliku_afm.afm', 'kodowanie');
?>[/php:1:b5574f368e]
np. dla czcionki arial.ttf i utworzonego wczesniej pliku arialpl.afm
[php:1:b5574f368e]<?php
require('sciezka_do_narzedzia_makefont/makefont.php');
Makefont('arial.ttf', 'arial.afm', 'iso-8859-2');
?>[/php:1:b5574f368e]

Powinieneś otrzymać pliki: arialpl.php i arialpl.z.
Oba pliki tworzą czcionkę, która możesz wykorzystywać w dokumencie PDF.
Należy pamiętać, że stylem wygenerowanej czcionki arialpl jest REGULAR.
Dla stylu BOLD i ITALIC istnieja inne pliki ttf:
-- arialbd.ttf (BOLD)
-- ariali.ttf (ITALIC),
-- arialbi.ttf (ITALIC BOLD),

_______________________________
3. Krok trzeci (Instalacja czcionki).
Przekopiuj wcześniej utworzone pliki *.php i *.z do katalogu z fontami (domyślnie w FPDF to 'font/'):
[php:1:b5574f368e]<?php
define('FPDF_FONTPATH','font/');
require('fpdf.php');

$pdf=new FPDF();
$pdf->Open();
$pdf->AddPage();
$pdf->AddFont('nazwa_czcionki','styl_czcionki','plik_czcionki.php');
$pdf->SetFont('nazwa_czcionki','styl_czcionki', rozmiar);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output();
?>[/php:1:b5574f368e]
przykład dla naszej czcionki arialpl:
[php:1:b5574f368e]<?php
define('FPDF_FONTPATH','font/');
require('fpdf.php');

$pdf=new FPDF();
$pdf->Open();
$pdf->AddPage();
$pdf->AddFont('arialpl', '', 'arialpl.php');
$pdf->SetFont('arialpl', '', 12);
$pdf->Cell(40, 10, 'Hello World!');
$pdf->Output();
?>[/php:1:b5574f368e]
Od tego momentu każdy wypisany tekst w dokumencie PDF, będzie używał czcionki arialpl o rozmiarze 12.

PAMIĘTAJ: Jeśli ustalisz kodowanie na ISO-8859-2, tekst przekazywany do PDF'a również musi być w formacie ISO-8859-2.

_______________________________
A oto efekt: test.pdf
Wykorzystałem czcionkę Verdana: REGULAR, BOLD i ITALIC
Do ściągnięcia: tutaj.
Inne czcionki to wasze zadanie domowe :wink:
tomkoz
witam
probowalem ta sama metoda stworzyc fonty do ros'a ale, ostatecznie nic z tego nie wyszlo. po wygenerowaniu pdf jest : The font 'timespl' contains a bad /BBox czyli nie wrzucil fontow sad.gif

wyglada to tak:
[php:1:98b9542082]<?php
include ('class.ezpdf.php');
$pdf =& new Cezpdf();
$diff=array(164=>'Aogonek');

$pdf->selectFont('./fonts/timespl.afm'
,array('encoding'=>'WinAnsiEncoding','differences'=>$diff));

$pdf->ezText('powinno byc Ą',10);
?>[/php:1:98b9542082]

znalazl ktos na to sposob ?
pozdrawiam
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.