PHP – Kreiranje PDF datoteke – DOMPDF – TCPDF
Kreiranje PDF datotek v PHP svetu ni nič novega, vendar pa na forumih opažam, da se večkrat zaplete pri generiranju PDF-jev z UTF-8 podporo. Kot smo nekaj časa nazaj pogledali kako kreirati Excel z UTF-8 podporo si bomo danes ogledali še kako kreirati PDF datoteko z UTF-8 podporo.
Na internetnu obstaja več rešitev kako kreirati PDF. Od PHP PDF funkcij, do online projektov HTML to PDF (uporabo za ne UTF-8 spletne strani), knjižnic kot je TCPDF (ki že podpira UTF-8 način) in DOMPDF. Zakaj ne bi uporabili TCPDF? Ker ne podpira kreiranje PDF-jev z uporabo CSS stilov. Prav to pa podpira DOMPDF, zato se bomo danes osredotočili kako omogočiti UTF-8 podporo v DOMPDF knjižnici.
Nekaj brskanja po googlu nam pokaže, da so kolegi iz češke (Martin Všetička) že rešili težave. Zadeva žal ne deluje v mojem primeru. Njegov postopek je nekdo malce bolj podrobno že opisal (prav tako češki sosed). Tretja rešitev je uporaba ConvertCharset objekta, kot predlagajo na codeignator forumu. Žal mi tudi ta rešitev ni delovala.
Končna rešitev je uporaba popravkov Martin Všetička ter popravljenega class.pdf.php razreda. Dodatno pa sem generiral še fonte v CP1250 encodingu. Primeri uporabe:
1.) Code ignator - NE DELUJE
Potrebujete ConvertCharset ter DomPdf.
-
-
require_once("dompdf/dompdf_config.inc.php");
-
require_once("convertcharset/ConvertCharset.class.php");
-
-
$dompdf = new DOMPDF();
-
$convertcharset = new ConvertCharset();
-
$html = $convertcharset->Convert(file_get_contents('dom_pdf_template.html'), 'UTF-8', 'ISO-8859-2');
-
-
$dompdf->load_html($html);
-
$dompdf->render();
-
$dompdf->stream("test.pdf");
2.) Martin Všetička - NE DELUJE
Potrebujete popravljen DOMPDF.
-
-
require_once("dompdf/dompdf_config.inc.php");
-
-
// it's neccessary to convert string to iso-8859-2
-
-
$dompdf = new DOMPDF();
-
$dompdf->load_html($html);
-
$dompdf->render();
-
$dompdf->stream("test.pdf");
3.) Združen način - DELUJE
Potrebujete popravljen class.pdf.php, ki ga prepišete čez Martin Všetička DOMPDF. Dodatno v lib/fonts dodajte še CP1250 fonte.
-
-
require_once("dompdf/dompdf_config.inc.php");
-
-
-
$dompdf = new DOMPDF();
-
$dompdf->load_html($html);
-
$dompdf->render();
-
$dompdf->stream("test.pdf");
V primeru, da boste naleteli na težavo, da vam brskalnik (naprimer IE 5.5, IE 6.0) ne ponudi pravilno Open/Save As dialoga za PDF, potem PDF najprej shranite in nato uporabnika preusmerite ne PDF, primer:
-
file_put_contents("test.pdf", $dompdf->output());
Dodatne informacije:
- Nekaj nasvetov pri generiranju PDF-jev s pomočjo DOMPDF
- Kreiranje PDF-jev s pomočjo PHP pdf funkcij
- TCPDF uradna spletna stran
- TRSPLET - DOM PDF template uporabljen pri generiranju
- TRSPLET - Končni PDF UTF-8 delujoč paket z vsemi potrebnimi spremembami
Ste tudi vi kdaj generirali PDF-je preko PHP-ja? Katero knjižnico uporabljate? Delite nasvete in težave z nami.
Podobni članki:
- Preprosta skripta – kreiranje Excel datoteke iz PHP tabele/array
- Predogled PDF-ja – pretvorba PDF v jpeg s pomočjo PHP-ja
- PHP – Kreiranje Excel datoteke – Pisanje v Excel datoteko – PHP – xls
- Safari podpira predogled PDF-ja skozi IMG tag (inline PDF document support)
- PHP – pošiljanje emaila – epošte – sending email – HTML Mime Mail
- Rezanje teksta po koncu besede – php funkcija – substr – cut text – UTF-8
- Uporabni HTML meta tagi – PHP header
- PHP – branje Excel (.xls) datoteke – Excel UTF8 branje
- Stalni UTF-8 problemi – utf8 mysql php – čšž šumniki težave – iskanje znaki – mysql like
- PHP – kako ugotoviti tip datoteke (get file extension type)



July 19th, 2009 ob 10:00 pm
Sem malo pogledal zadevo in zgleda zelo kul.
Moti me samo to, da mi noče v PDFju pokazat slike, če uporabim
July 19th, 2009 ob 10:00 pm
Edit: ... če uporabim
July 20th, 2009 ob 6:58 am
Pazi, da uporabiš absolutno pot. Deluje potem?
July 22nd, 2009 ob 11:10 pm
Delajo samo JPG slike z določeno kakovostjo.
July 23rd, 2009 ob 8:21 pm
Hmm ... FPDF podpira tudi GIF pa mislim, da tudi celo PNG (vendar brez alpha transparence).
http://www.fpdf.org/
Ima pa probleme szi UTF-8 :S Je treba pretvoriti iz UTF-8 v ANSI
July 24th, 2009 ob 7:50 am
Vbistvu lahko uporabiš iz UTF8 v cp1250, pa še fonte generiraš:
http://www.fpdf.org/en/tutorial/tuto7.htm
July 24th, 2009 ob 8:24 pm
Tudi, samo rabiš še vedno UTF-8 pretvarjat, če maš v bazi na UTF-8 encoding
September 10th, 2009 ob 8:09 pm
Uporabljam bambooinvoice, ki ima plugin za kreiranje pdf DOMPDF. Z bloga sem potegnil naslednji paket
TRSPLET - Končni PDF UTF-8 delujoč paket z vsemi potrebnimi spremembami;
vendar mi še vedno namesto šumnikov izpisuje vprašaj (?). mi lahko mogoče pogmagaš.
tnx
September 11th, 2009 ob 2:44 pm
Kakšen charset imaš podatke?
June 2nd, 2011 ob 2:18 am
Nikakor mi ne uspe zrihtat tega.
Kje se dobi : class.pdf.php?
Poskusu sem brez tega fajla pa mi vrne napako :
iconv() .... Unable to stream pdf: headers already sent