[ oliver78 @ 05.10.2004. 22:12 ] @
Imam problem sa našim fontovima prilikom kreiranja pdf fajla potrebnog za štampanje. Podatke dovlačim iz baze sa UTF-8 enodingom. Za kreiranje pdf-a koristim klasu fpdf. Problem se javlja prilikom štampanja naših fontova ČĆŠĐŽ.
E sad pomoću funkcije ereg_replace() uspem da svaki kod tipa 'Å' zamenim odgovarajućim '[' (YUTimes je u pitanju), medjutim problem je u tome što uvek imam prazno polje dodatno

npr:
Š tampaj

Probao sam
Code:
 $p = ereg_replace('Å ', '[', $y);

ali onda ne prevodi ništa.
Ako neko zna rešenje ili neku drugu klasu uz pomoć koje se može prevazići problem nek javi.
[ utvara @ 06.10.2004. 11:46 ] @
Prva stvar: zaboravi da je Yuscii ikad postojao (kao sto se niko vise
ne seca ostalih 10 kodnih rasporeda iz dosa).

Drugo: za konverziju imas iconv koji vrlo pristojno radi.

Fpdf klasu sam sreo kasno da bih je primenio u mom projektu, pa sam
koristio pdflib, problem se resava embedovanjem fontova (ili sam bar
ja tako resio).

--
Sve najlepse,
Best regards,
Slobodan mailto:[email protected]
[ oliver78 @ 06.10.2004. 18:36 ] @
Uspeo sam nekako (uz veliku muku) sinoć da rešim problem. Isplati se biti uporan .
Što se tiče pdflib, koliko znam nije free pa mi ne odgovara za ovaj projekat.
Probaću i sa drugim fontovima sada bi trebalo da radi. Radio sam nešto tipa

Code:
$s = utf8_encode($f);
$p = utf8_decode($s);
$r = ereg_replace('ć', '}', $p);
itd.
[ -zombie- @ 10.10.2004. 17:44 ] @
vidim da si rešio, ali ajde da pojasnim..

Citat:
oliver78:
E sad pomoću funkcije ereg_replace() uspem da svaki kod tipa 'Å' zamenim odgovarajućim '[' (YUTimes je u pitanju), medjutim problem je u tome što uvek imam prazno polje dodatno


problem ti se javljao zato što se u utf8 svako naŠe slovo latinice (i svako slovo ćirilice) kodira sa dva bajta, a ti si menjao samo prvi..


a utvara bi mogao malo malo detaljnije da opiše kako je ubacio naša slova preko unikoda (ili već nekog drugog enkodinga -- kog?) pošto koliko ja znam (nisam probao) pdf ne podržava unikod (odnosno ne podržava više od 256 karaktera u fontu)..
[ BlueIce @ 10.10.2004. 19:07 ] @
Mislim da grešiš, PDF je format koji je uspostavila firma Adobe, koja se (u poslednje vreme) kune u UNICODE, a sem toga ako malo pretražiš njihov sajt primetićeš još nekoliko dokaza koji ti ne idu u korist ;)

Što se tiče samog generisanja kvalitetnog PDF-a iz PHP-a (naravno sa podrškom za UNICODE) mislim da je, sadly, za sada jedino približno dobro rešenje Apache FOP, iako oni obećvaju da će započeti uskoro novu granu razvoja koja će u potpunosti biti kompatibilna u skladu sa trenutno važećim W3C standardima.
[ oliver78 @ 10.10.2004. 20:21 ] @
Za zombija:
Pa našto slično, najveći problem je bio što nisam imao ova dva reda:
Citat:

Code:
$s = utf8_encode($f);
$p = utf8_decode($s);


iako su podaci u bazi u utf-8 encodingu. Kako mi je ovo palo napamet ne znam, ali bitno je da funkcioniše. Ako neko zna šta se ustvari tu događa ne bi bilo loše da napiše. Da ponovim:
1. izvlači se podatak iz baze u utf-8 enkodingu
2. radi se encode()
3. radi se decode()
4. zamenjuju se odgovarajući karakteri utf-8 sa odgovarajućim u datim fontovima

Pitanje: Zbog čega je neophodno 2.,3. kad su već podaci u utf-8?
npr:
Citat:
Code:
$r = ereg_replace('ć', '}', $p);
[ utvara @ 11.10.2004. 16:02 ] @
Citat:
-zombie-: vidim da si rešio, ali ajde da pojasnim..
a utvara bi mogao malo malo detaljnije da opiše kako je ubacio naša slova preko unikoda (ili već nekog drugog enkodinga -- kog?) pošto koliko ja znam (nisam probao) pdf ne podržava unikod (odnosno ne podržava više od 256 karaktera u fontu)..


Nasa slova sam ubacio prilicno cupavo :), saljem ih u win-1250 kodnom
rasporedu i koristim CE fontove (moraju da se embeduju), podrska

Kad smo vec kod PDF-a da li je iko uspeo da automatizuje stampu u PHP-u, znaci da se kreira PDF i da se automatski odstampa (bez ogranicenja na operativni sistem).

Dole je klasa koju sam napravio za potrebe stampe.

Code:

    class pprint {
        var $pdf;
        var $page_no;
        var $page_w;
        var $page_h;
        var $ch; //trenutna visina na strani
        var $head_h;
        var $foot_h;
        var $temp_file;
        var $font;
        var $fontb;
        var $colors;
        
        function head(){        
// heder strane
        }

        function foot(){        
// futer strane
        }
        
        function begin_page(){
            ++$this->page_no;
            $this->ch = $this->page_h;
            PDF_begin_page($this->pdf, $this->page_w, $this->page_h);         
        }
        
        function end_page(){
            PDF_end_page($this->pdf);
        }
        
        function end_doc() {
            PDF_close($this->pdf);
            PDF_delete($this->pdf);
            $this->pdf = NULL;
        }

        function pprint() { 
            $this->temp_file = tempnam($_SERVER['DOCUMENT_ROOT'] . "/tmp", "FOO");
            $this->page_w = 595;
            $this->page_h = 842;
            $this->head_h = 87;
            $this->foot_h = 35;
            $this->ch = $this->page_h;
            $this->pdf = PDF_new();    
            $this->page_no = 0;            
            if (PDF_open_file($this->pdf, $this->temp_file) == 0) {
                    die("Error: " . PDF_get_errmsg($this->pdf));
            }        
            $this->font = pdf_findfont($this->pdf, "Arial", "cp1250", 0);
            $this->fontb = pdf_findfont($this->pdf, "Arial Bold", "cp1250", 0);
            PDF_set_info($this->pdf, "Creator", "print.php");
            PDF_set_info($this->pdf, "Author", "Dental IS");
            PDF_set_info($this->pdf, "Title", "Izvestaj");
            $this->begin_page();
        }
    }