Fpdf - lecția 7 care adaugă noi fonturi și suport pentru diferite codificări

Astăzi finalizez traducerea gratuită a lecțiilor de pe site-ul oficial al bibliotecii FPDF. Traducerile mele anterioare:

În această lecție, vom examina modul de utilizare a fonturilor Type1 sau TrueType, astfel încât să puteți utiliza nu numai fonturile standard. O altă caracteristică este faptul că puteți alege un font, codificare, care vă va permite să utilizați nu numai limba occidentală, ci și alte limbi (fonturile standard au prea puține caractere disponibile).







Există două moduri de a utiliza un font nou: fonturi imbricate în format PDF sau plug-in. Dacă fontul pe care îl specificați nu este integrat, acesta va fi căutat în sistem. Avantajul fonturilor plug-in este faptul că fișierul PDF este mult mai ușor de cântărit și, pe de altă parte, dacă nu este disponibil, se folosește substituirea fontului standard. Prin urmare, este de dorit ca fontul să fie instalat pe sistemele client. Dacă fișierul este vizualizat nu numai pe computerul local, trebuie să îl inserați în PDF.

Pentru a adăuga noile fonturi TrueTypes, trebuie să faceți trei pași:

  • Generați fișierul metric (.afm)
  • Generați fișierul de definire a fontului (.php)
  • Declarați fontul în scenariu

Generarea unui fișier metric

Luați, de exemplu, fontul Comic Sans MS Normal:
ttf2pt1 -a c: \ windows \ fonts \ comic.ttf comic

Cu ajutorul acestui utilitar, sunt create două fișiere, dintre care unul este un fișier cu extensia .afm de care avem de fapt nevoie.

Generarea unui fișier pentru definirea unui font

Al doilea pas este crearea unui fișier PHP care să conțină toate informațiile necesare pentru FPDF. Pentru a face acest lucru, în directorul font / makefont puteți găsi un script suplimentar în fișierul makefont.php. care conține următoarele funcții:
MakeFont (șir fontfile, șir afmfile [, șir enc [, patch-uri de tip array [, tip șir]]])

Valorile pe care le ia metoda sunt ca parametri:

  • fontfile - Calea către fișierul cu extensia .ttf sau .pfb.
  • afmfile - Calea spre fișierul cu extensia .afm.
  • Enc - Numele codificării utilizate. Implicit cp1252.
  • patch - Modificări suplimentare privind codarea. Implicit este gol.
  • tip - Tipul fontului (TrueType sau Type1). Implicit este TrueType.

Primul parametru trebuie să fie numele și calea spre font. Extensia trebuie să fie .ttf sau .pfb. Dacă aveți un font Type1 în format ASCII cu extensia .pfa, îl puteți converti în format binar utilizând utilitarul t1utils.

Fișierul AFM anterior generat

Codificarea determină relația dintre cod (de la 0 la 255) și caracterul. Primele 128 sunt fixe și corespund ASCII, iar următoarele sunt variabile. Codificările sunt stocate în fișiere .map. Codificările sunt după cum urmează:

  • cp1250 (Europa Centrală)
  • cp1251 (chirilă)
  • cp1252 (Europa de Vest)
  • cp1253 (greacă)
  • cp1254 (turcă)
  • cp1255 (ebraică)
  • cp1257 (Baltic)
  • cp1258 (vietnameză)
  • cp874 (Thai)
  • ISO-8859-1 (Europa de Vest)
  • ISO-8859-2 (Europa Centrală)
  • ISO-8859-4 (Baltic)
  • ISO-8859-5 (chirilă)
  • ISO-8859-7 (greacă)
  • ISO-8859-9 (turcă)
  • ISO-8859-11 (Thai)
  • ISO-8859-15 (Europa de Vest)
  • ISO-8859-16 (Europa Centrală)
  • KOI8-R (rusă)
  • KOI8-U (ucraineană)






Fontul selectat trebuie să conțină caractere care corespund codificării selectate.
În cazuri speciale în care caracterele fontului nu conțin litere, cum ar fi Symbol sau ZapfDingbats, trebuie să treci un șir gol.
În Windows sunt utilizate codificări care încep cu CP. Sistemele Linux folosesc de obicei ISO.
Notă. fonturile standard utilizează codificarea cp1252.

Al patrulea parametru permite modificarea codificării. Uneori puteți adăuga mai mult de un caracter. De exemplu, ISO-8859-1 nu conține simbolul euro. Pentru a o adăuga la poziția 164, trebuie să treci - matrice (164 => 'Euro').

Ultimul parametru este utilizat pentru a transfera tipul de font, în cazul în care nu este încorporat (adică dacă primul parametru este gol).

După ce ați completat toți parametrii funcției, puteți crea un fișier nou conectând makefont.php sau pur și simplu adăugați un apel de funcții direct la fișierul principal. După executarea funcției, vor fi create mai multe fișiere: .php și .afm. Dacă doriți, puteți redenumi fișierul. În plus, scriptul creează un fișier cu extensia .z, care este comprimată (cu excepția cazului în care funcția de compresie nu este disponibilă, necesită Zlib). Puteți să îl redenumiți, de asemenea, dar în acest caz trebuie să modificați variabila de fișier $ într-un fișier .php, cu numele corespunzător.

Exemplul de mai sus creează două fișiere: comic.php și comic.z.

Când primiți aceste fișiere, acestea trebuie copiate în directorul cu fonturi. Dacă fișierul de fonturi nu se dovedește a fi comprimat, copiați fișierele cu extensia .ttf sau .pfb. în loc de .z.

Ultimul pas este cel mai simplu. Trebuie doar să apelați metoda AddFont (). De exemplu:

Codificarea ISO-8859-1 este larg distribuită, dar nu include semnul euro. Dacă aveți nevoie de ea, cel mai simplu lucru pe care îl puteți face este utilizarea cp1252 sau ISO-8859-15 în loc de codificare, deoarece acestea sunt aproape identice, dar conțin simbolul prețios.
În loc de ISO-8859-2, puteți utiliza ISO-8859-16, dar această codificare conține multe diferențe. Prin urmare, este mai ușor să adăugați acest caracter la codificare, așa cum este descris mai sus. Același lucru este valabil și pentru alte codificări.

Conectarea fonturilor în Windows

Dacă fontul pe care l-ați selectat nu este disponibil într-un stil sau altul, Windows îl poate conecta la versiunea obișnuită. De exemplu, nu există Comic Sans MS Italic, dar poate fi construit din Comic Sans MS Regular. Această funcție poate fi utilizată într-un fișier PDF, dar, din nefericire, este necesar ca în sistem să fie prezentat un font normal. Iată cum se face:

  • Creați un fișier pentru a defini un font normal fără atașament (îl puteți redenumi pentru a reflecta stilul dorit)
  • Deschideți-l și adăugați stilul dorit (Italic, Bold sau BoldItalic) la variabila nume $ după virgulă.

De exemplu, pentru comici.php, ar arata astfel:

Apoi îl puteți folosi ca un font normal:

Reducerea mărimii fonturilor TrueType

Fișierele de fonturi sunt adesea foarte voluminoase în dimensiuni (mai mult de 100, și chiar 200 KB), datorită faptului că acestea conțin simboluri care corespund multor codificări. Compresia Zlib le reduce, dar ele rămân destul de mari. DAR încă mai există o tehnică care va ajuta la reducerea. Tehnica constă în faptul că conversia de fonturi Type1 folosind ttf2pt1 trebuie să specificați codificarea de care aveți nevoie, și toate caracterele corespunzătoare altor codificări vor fi ignorate.
De exemplu, fontul arial.ttf livrat cu Windows 98 cântărește 267 KB (conține 1296 de caractere). După comprimare, va fi 147. Să o convertim în Type1, salvând doar caracterele necesare pentru codarea cp1250:
ttf2pt1 -b -L cp1250.map c: \ windows \ fonturi \ arial.ttf arial

Fișierele .map sunt în directorul font / makefont /. La executarea comenzii, vor fi create câteva fișiere, inclusiv: arial.pfb și arial.afm. Greutatea fișierului arial.pfb înainte de comprimare a fost de 35KB, iar după 30KB.

Puteți merge mai departe. Dacă sunteți interesat doar de anumite caractere dintr-un total de 217 de caractere, puteți deschide un fișier cu extensia .map și puteți șterge linii inutile, ceea ce va reduce în mod corespunzător greutatea fișierului.

Mult noroc pentru tine!

Dragă Mihail! Mulțumesc foarte mult. Trebuie să generez un document. care este trimis pentru raportul institutului și în același timp să includă în baza de date toate datele privind raportul la conferința angajatului nostru.
Am luat PDFLib - totul este clar, dar cum rămâne cu limba rusă.
Doar ați găsit un răspuns clar.
Acum voi încerca să obțin rezultatul, vin la St. Petersburg, te pot lua cu mine.
Veronika Nikolaevna - Am un website și o bază de date a Institutului fizico-tehnic al Academiei de Științe din Rusia.

Humane Veronica. mereu fericit să vă ajute. Dacă sunt în St. Petersburg, voi încerca să vin la tine.

Humane Veronica. în modul în care am vorbit în articol FPDF - biblioteca pentru crearea fișierelor PDF în PHP există într-adevăr o astfel de problemă. Trebuie să utilizați documentul FPDF modificat - tFPDF. Acesta poate fi găsit pe site-ul oficial FPDF, în secțiunea Scripturi.







Trimiteți-le prietenilor: