witam używam dompdf do generowania PDF. w klasie tej jest pewien błąd chodzi o styl
line-trough czyli tekst przekreślony, za każdym razem przekreśla niżej albo wyżej aby to poprawić należy otworzyć plik
text_renderer.cls.php, a następnie odnaleźć ten fragment kodu
<?php
case "underline":
$deco_y += $height * (1 + self::UNDERLINE_OFFSET);
break;
case "overline":
$deco_y += $height * self::OVERLINE_OFFSET;
break;
case "line-through":
$deco_y -= $height * ( 0.25 + self::LINETHROUGH_OFFSET);
break;
?>
i zmienić linię przedostatnią na
<?php
$deco_y -= $height * ( -0.75 + self::LINETHROUGH_OFFSET);
?>
z polskimi fontami próbowałem sobie radzić w ten sposób iż skonwertowałem tekst na windows-1250 i uzyskałem jakieś tam polskie litery i jest git, ale pojawił się inny problem, polskie litery przesuwają się na siebie tzn jak mam śćę to one nakładają sie na siebie i jest problem z ich poprawką. Czy ktoś już rozwiązywał problem polskich liter w dompdf (IMG:
http://forum.php.pl/style_emoticons/default/questionmark.gif) ?
PROSZĘ O POMOC!!!
Zasada uzyskania polskich liter w dompdf (niezbyt dobry ale działa):
1. Należy ściągnąć ten plik
http://pdf.brabosoft.com/class.pdf.php.zip i zastąpić nim plik w pdf/lib
2. podczas tworzenia dokumentu przy pomocy DOMPDF
Należy wykonać to tak:
<?php
require_once("pdf/dompdf_config.inc.php");
require_once("konwersja/konv.php");
$dompdf = new DOMPDF();
$tablica = array("ą","Ą","ć","Ć","Ś","ś","ę","Ę","ż","Ż","ę ", "ż ", "ć "); $tablicaspacji = array("ą ","Ą ","ć ","Ć ","Ś ","ś ","ę ","Ę ", "ż ","Ż ","ę ", "ż ", "ć ");
$pdf = UTF8_2_WIN1250($pdf);
$dompdf->load_html($pdf);
$dompdf->set_paper("a4", "portrait");
$dompdf->render();
$pdf = $dompdf->output();
file_put_contents("strona1.pdf", $pdf);
?>
3. wygląd pliku konv.php
<?php
//funkcja zapo�yczona z <a href="http://4programmers.net/PHP/FAQ/Jak_zmieni%C4%87_kodowanie_tekstu_nie_maj%C4%85c_dost%C4%99pu_do_funkcji_iconv_" target="_blank">http://4programmers.net/PHP/FAQ/Jak_zmieni..._funkcji_iconv_</a>
function win2utf(){
"xb9" => "xc4x85", "xa5" => "xc4x84", "xe6" => "xc4x87", "xc6" => "xc4x86",
"xea" => "xc4x99", "xca" => "xc4x98", "xb3" => "xc5x82", "xa3" => "xc5x81",
"xf3" => "xc3xb3", "xd3" => "xc3x93", "x9c" => "xc5x9b", "x8c" => "xc5x9a",
"x9f" => "xc5xbc", "xaf" => "xc5xbb", "xbf" => "xc5xba", "xac" => "xc5xb9",
"xf1" => "xc5x84", "xd1" => "xc5x83");
return $tabela;
}
function iso2utf(){
"xb1" => "xc4x85", "xa1" => "xc4x84", "xe6" => "xc4x87", "xc6" => "xc4x86",
"xea" => "xc4x99", "xca" => "xc4x98", "xb3" => "xc5x82", "xa3" => "xc5x81",
"xf3" => "xc3xb3", "xd3" => "xc3x93", "xb6" => "xc5x9b", "xa6" => "xc5x9a",
"xbc" => "xc5xbc", "xac" => "xc5xbb", "xbf" => "xc5xba", "xaf" => "xc5xb9",
"xf1" => "xc5x84", "xd1" => "xc5x83");
return $tabela;
}
function ISO88592_2_UTF8($tekst){
return strtr($tekst, iso2utf
()); }
function UTF8_2_ISO88592($tekst){
}
function WIN1250_2_UTF8($tekst){
return strtr($tekst, win2utf
()); }
function UTF8_2_WIN1250($tekst){
}
function ISO88592_2_WIN1250($tekst){
return strtr($tekst, "xa1xa6xacxb1xb6xbc", "xa5x8cx8fxb9x9cx9f"); }
function WIN1250_2_ISO88592($tekst){
return strtr($tekst, "xa5x8cx8fxb9x9cx9f", "xa1xa6xacxb1xb6xbc");
}
?>
Pozdrawiam i jeśli zrobił to ktoś w inny lepszy sposób to proszę pisać.
P.S. oczywiście cały bład tkwi WinAnsiEncoding. Natomiast błąd nakładani się liter jest wynikiem definicji znaków w WinAnsiEncoding, np. nakładały mi się znaki ŚĆ ponieważ w WinAnsiEncoding Ś to znak | jego szerokośc nie jest równa szerokości Ś więc kiedy wyświetliłem znaki ŚĆ to one się nałożyły na siebie ponieważ w klasie DomPDF były one definiowen jako |Ć
POZDRO i szukam lepszych rozwiązań od powyższego.
Ten post edytował yaotzin 6.05.2007, 00:22:52