Folow me on Pinterest
Prvi ste put ovdje? Pročitajte faq i registrirajte se.
x
  • Registracija
Dobrodošli, ovdje možete postavljati pitanja vezana za problematiku programiranja. Da bi postavili pitanje nije potrebna registracija :)

Hrvatski znakovi u generiranom PDF dokumentu iz php-a

+10 glasova

Pokušavam generirati PDF dokument iz php-a i nikako mi se ne hrvatski znakovi ne prikazuju ispravno uvijek dobijem čudne znakove. Hrvatske znakove sam hardkodirao ali i kad ih povučem iz baze (MySQL) desi se ista stvar baza je utf8/utf8_unicode_ci a i dokumenti su spremljeni kao utf-8 without BOM.

Probao sam sa fdpf-om i dompdf-om koji koliko sam pročitao koristi R&OS CPDF ili PDFLib koji nije beplatan.

Više mi se sviđa fpdf. Da li netko zna što moram napraviti da mi fpdf ispravno prikaže hr znakove.

fpdf

Ovo je primjer iz fpdf manuala:

<?php
require('fpdf.php');

$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Courier','B',16);
$pdf->Cell(40,10,'čćžšđĆČŽŠĐ!');
$pdf->Output();
//output je
//ĕćžšđĆČŽŠÄ

//ako probam ispisati koristeći funkciju utf8_decode();

$pdf->Cell(40,10,utf8_decode('čćžšđĆČŽŠĐ!'));
//output je
//????? ?????
?>

dompdf

Ovo je primjer iz dompdf manuala:

<?php
require_once("dompdf_config.inc.php");

$html =
  '<html>
  <head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"/></head>
  <body>'.
  '<p>čćžšđ '.
  'ČĆŽŠĐ.</p>'.
  '</body></html>';

$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream("sample.pdf");

//output je 
??žš? ??ŽŠ?
?>

Fakat bi bio zahvalan za razotkrivanje ovog misterija jer mi ponestaje ideja. Ako postoji bilo koji drugi library koji bih mogao koristiti ili ako postoji neko rješenja sa ovima (osim PDFLib koji nije besplatan) molim da mi netko kaže.

Hvala

Upit Tra 2, 2012 anonimno  
Ažurirano Tra 3, 2012 primjeri
   

Odgovor 1

+2 glasova

Pvo da primjetim da imaš preduvjete za ispravan prikaz HR znakova:

  1. baza je utf8 :)
  2. php dokument je spremljen kao utf-8 without BOM :)
  3. u zaglavlju HTML-a (ako ispisuješ html u pdf) je meta charset utf-8 :)
  4. još ti fali klasa/library koji podržavaju unicode i unicode fontovi

Koliko ja znam fpdf (koji je odličan) nema podršku za unicode ali tfpdf je klasa koja fpdf klasi dodaje podršku fpdf-u za unicode.

TFPDF - http://fpdf.org/en/script/script92.php

ovo je primjer iz dokumentacije koji je meni radio

<?php
require('tfpdf.php');

$pdf = new tFPDF();
$pdf->AddPage();

// dodaj Unicode font (UTF-8)
$pdf->AddFont('DejaVu','','DejaVuSansCondensed.ttf',true);
$pdf->SetFont('DejaVu','',14);

$txt = 'čćžšđČĆŽŠĐ';
$pdf->Write(8,$txt);

// test standardnih fontova (windows-1252)
$pdf->SetFont('Arial','',14);
$pdf->Ln(10);
$pdf->Write(5,'čćžšđČĆŽŠĐ');

$pdf->Output();
?>

PDF izgleda ovako:

tfpdf

TCPDF - http://www.tcpdf.org/

Meni je ova osobno najdraža i još radi i sa setasign-om :D

<?php
//hrvatski prijevod za tcpdf (ovo je opcija)
require_once('config/lang/hrv.php');
//tcpdf
require_once('tcpdf.php');

// kreiraj novi PDF dokument
$pdf = new TCPDF();

// ukloni header i footer
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);

// dodaj jednu stranicu u pdf dokument
$pdf->AddPage();

$fontovi = array('times', 'freesans', 'courier', 'dejavusans', 'freemono', 'freeserif', 'helvetica');

foreach($fontovi AS $font){
    //tekst koji će se ispisati u pdf-u
    $html = 'Testiram hrvatske znakove ČĆŽŠĐčćžšđ - '.$font;
    //definiraj font za tekst
    $pdf->SetFont($font, '', 12);
    // ispiši
    $pdf->Write(0, $html, '', 0, 'L', true, 0, false, false, 0);
}

// pošalji pdf
$pdf->Output('pdf_sa_hr_znakovima.pdf', 'I');
?>

tcpdf

Od svih meni su ove 2 klase odlično radila sa HR znakovima.

Odgovoreno Tra 2, 2012 Predrag Mušić (560)  
Ažurirano Tra 3, 2012 Predrag Mušić

Molimo prijavite se ili registrirajte da bi mogli odgovoriti na pitanje