TCPDF – polskie czcionki

Jeśli potrzebujemy (a na pewno tak będzie) polskich czcionek w dokumentach PDF generowanych przez php’ową bibliotekę TCPDF, można to osiągnąć w prosty sposób: czcionkę z polskimi znakami, np windowsowy Courier, zapisujemy jako cour.ttf na serwerze, a w pliku, który będzie generował pdf’a:

require_once('tcpdf.php');
$pdf = new TCPDF('L', 'mm', 'A4', false, 'iso-8859-2');
$pdf->SetFont('cour');

z konsoli natomiast wydajemy odpowiednie polecenia (będąc w katalogu TCPDF’a):

ttf2afm cour.ttf > cour.afm
php fonts/utils/makefont.php cour.ttf cour.afm cp1250
cp cour.* fonts/

I cieszymy się polskimi znakami w PDF’ach 🙂

Read more

Usuwanie pustych tagów html

Dzisiaj krótka recepta, na pozbywanie się z tekstu pustych tagów html. Jest to przydatne na przykład gdy używamy TinyMCE, który czasami poza naszą kontrolą wstawia tagi, które mają w CSS’ie ustawiony margines lub padding – wtedy tekst będzie nienaturalnie porozciągany w takich miejscach. Aby to osiągnąć, skorzystamy z funkcji preg_replace i odpowiedniego wyrażenia regularnego.

Read more

Symfony 1.2 wydane

Najlepszy, moim zdaniem, framework PHP Symfony doczekał się stabilnej wersji 1.2. W najnowszej odsłonie, znajdziemy między innymi 2 równoległe ORM’y – propel w wersji 1.3 oraz Doctrine 1.0 – do wyboru. Tym samym Doctrine weszło do Core Symfony, co bardzo dobrze wróży na przyszłość. Poza tym, z okazji wydania wersji 1.2 rusza projekt Jobeet będący 24-odcinkowym tutorialem, pokazującym krok po kroku tworzenie aplikacji w Symfony. Jest to następcą Askeeta, który został stworzony pod Symfony 1.0, które powoli odchodzi na emeryturę 🙂 Polecam ten kurs na początek – bardzo fajnie zapozna każdego laika z frameworkiem.

Do tego polecam też lekturę dokumentacji:http://www.symfony-project.org/doc/1_2/, możemy w niej znaleźć między innymi książkę Definitive Guide to Symfony, książkę na temat Formularzy oraz Doctrine.

Read more

svn:externals – czyli jak utrzymać porządek w wersjonowanym kodzie

Tworząc nowy  projekt w Symfony zdecydowałem się na ORM’a Doctrine. Niestety instalacja tej wtyczki nie przebiega standardowo, za pomocą Pake-Taska, ponieważ trzeba zrobić sobie checkouta z repozytorium Symfony. I tutaj pojawił się pewny problem. Ponieważ cały projekt jest wersjonowany przy pomocy SVN’a, to przy każdym wywołaniu, na przykład svn status otrzymywałem:

?   plugins/sfDoctrinePlugin

Dodawanie tej ścieżki do repozytorium nie pomagało, bo pojawiał się komunikat, że ten folder jest już wersjonowany (bo istotnie tak było – przecież zrobiliśmy checkout z repo Symfony). Z pomocą przyszedł svn:externals.

Read more

Prosty skrypt zwalczający spam

Pewnie nie jednemu programiście aplikacji webowych zdarzyło się, że po wystawieniu swojej księgi gości na świat, po paru dniach znajduje na niej kilkanaście spamowych wpisów. Ja również doświadczyłem tego ostatnio. Większość w takim przypadku decyduje się na zastosowanie CAPTCHA, czyli obrazka z zdeformowanym tekstem, który użytkownik musi podać przy dodawaniu posta. Jest to rozwiązanie średnio przyjemne, coraz mniej skuteczne i bardzo odstraszające potencjalnych gości, którzy są ludźmi. Postanowiłem więc napisać prosty filtr (w tym przypadku został on akurat wykorzystany jako validator w Symfony), który będzie wyszukiwał słowa, które na 99% znajdą się tylko w niechcianych wiadomościach.

Pewnie nie jednemu programiście aplikacji webowych zdarzyło się, że po wystawieniu swojej księgi gości na świat, po paru dniach znajduje na niej kilkanaście spamowych wpisów. Ja również doświadczyłem tego ostatnio. Większość w takim przypadku decyduje się na zastosowanie CAPTCHA, czyli obrazka z zdeformowanym tekstem, który użytkownik musi podać przy dodawaniu posta. Jest to rozwiązanie średnio przyjemne, coraz mniej skuteczne i bardzo odstraszające potencjalnych gości, którzy są ludźmi. Postanowiłem więc napisać prosty filtr (w tym przypadku został on akurat wykorzystany jako validator w Symfony), który będzie wyszukiwał słowa, które na 99% znajdą się tylko w niechcianych wiadomościach.

Read more

Escapowanie % w sprintf

W PHP możemy formatować łańcuchy znaków na kilka sposobów. Najpopularniejszy, to używanie kropek, do łączenia ciągów i ewentualnie konkretnych funkcji do formatowania na przykład liczb zmiennoprzecinkowych. Ta metoda mnie nie do końca przekonuje, bo przy dłuższych ciągach jest średnio czytelna. Dlatego też, często korzystam z sprintf’a, poznanego jeszcze za czasów programowania w C.

Read more
newer