Zend_Pdf & Cirilica
Pastaruoju metu nemažai tenka dirbti su “Zend Framework” komponentais. Tad gal ir dažniau pasidalinsiu sunkumais ir sprendimais su kuriais susidūriau. Šiandien ant operacinio stalo Zend_Pdf komponentas.
Problema. Reikia sugeneruoti pdf’ą failą naudojant pdf šabloną, bei jį užpildyti kirilicos simboliai. Problema ta, kad ‘by default’ Zend_Pdf nepalaiko kirilica simbolių. Pavyzdinis kodas:
$pdf = new Zend_Pdf();
$pdf->pages[] = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);
$pdfPage = $pdf->pages[0];
$pdfPage->setFont(
Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA), 12);
$pdfPage->drawText(’This is my text.’, 72, 740, ‘UTF-8′);
$pdf->save('/somehere/on/the/machine/document.pdf');
Sprendimas. embed’inti šriftus. Siūlau naudoti šiuos šriftus. Tada eilutę ‘Zend_Pdf_Font::fontWithName()’ keičiam į ‘Zend_Pdf_Font::fontWithPath(‘/var/blah/dah/FreeSerif.ttf’)’ ir vuolia
Po visos procedūros kodas tūrėtų atrodyti taip:
$pdf = new Zend_Pdf();
$pdf->pages[] = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);
$pdfPage = $pdf->pages[0];
$pdfPage->setFont(
Zend_Pdf_Font::fontWithPath('/var/blah/dah/FreeSerif.ttf'), 12);
$pdfPage->drawText(’This is my text.’, 72, 740, ‘UTF-8′);
$pdf->save('/somehere/on/the/machine/document.pdf');
Viso šio sprendimo minusas yra tas, jog gautas failo dydis pakinta keliais šimtais kilobaitų. Tačiau, lyginant su prieš tai tūrėtomis alternatyvomis, tai gautas failo dydis vistiek buvo ženkliai mažesnis.
Naudoti šaltiniai:






medwezys
15 vasario, 2010
Joo, pdf generavimas ne pats įdomiausias darbas, bet tenka visiems su tuo susidurt. Rails plugine prawn tai visada reikia savo fontų path’ą nurodyt, tai matyt su kirilica net negalvočiau, iškart aišku būtų
Andrius V.
17 vasario, 2010
Embed’as turi vieną bėdą
Jis prideda ~200 KB. Ir kelių KB pdf’as staiga virsta keliasdešimt kartų didesnis. Aišku yra galimybė kompresinti ir dar viskas priklauso nuo pačio fonto, bet šiai dienai kitos išeities nėra… Nors dabar žiūrau pdf supported charset’us, tai lyg ir palaiko crilica. Vadinasi, pats Zend’o pdf’as š mala
aur1mas
17 vasario, 2010
Andriau, pabaigoje tą ir tūrėjau omenyje, kad minusas dėl dydžio pakitimo.
O dėl Zend_PDF ir kirilicos support’o. Tai manau, čia laikina problema. Nes dabar apskritai mažai šriftų jis dar palaiko
Andrius V.
18 vasario, 2010
My bad, nedaskaičiau
Vaidas
1 rugsėjo, 2010
Koks greitis generuojat cyrlica su zend pdf, man generuojasi 8-10s paprasti pavyzdžiai
aur1mas
1 rugsėjo, 2010
@Vaidas
Aš su Zend_PDF dokumento nuo 0 negeneravau
Naudojau šabloną ir į jį sudėjai tai ko man reikėjo
Šiaip, pdf generavimą aš nelabai mėgstu – tad, kai galiu stengiuosi išsisukti nuo to.
Dabar išsisukinėju panaudodamas:
http://code.google.com/p/wkhtmltopdf/
Jis iš HTML paverčia į PDF. Labai patogu ir mažai vargo