Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [tcpdf] - nie wyświetla tekstu w pdf
Forum PHP.pl > Forum > PHP
bertog
Witam,
zaczalem zabawe z biblioteka "tcpdf" i mam nastepujacy problem: Pdf generuje się prawidłowo do momentu kiedy w tekscie nie pojawia sie polskie znaki i nie chodzi tu o to, ze w pdf wyswietlane sa krzaki. W momencie kiedy do tekstu dodaje polskie znaki generuje sie czysty pdf, a scislej mowiac nie wyswietla sie tekst zadeklarowany w zmiennej,np:
  1. $html = <<<EOD
  2. <p>żźćńąśłęó zxcnlsaw</p>
  3. EOD;

jezeli w zmiennej nie uzyje sie polskich znakow to pdf jest wszystko OK.
nospor
Z tego co kojarze to tcpdf miał zawsze problemy z utf8. ALbo przerzuc sie na iso-8859-2 (nie wiem czy pomoze) albo kombinuj
http://stackoverflow.com/questions/5333702...-not-showing-up
bertog
To juz probowalem i nie pomaga. Najgorsze jest to, ze po przypisaniu zmiennej tekstu z polskimi znakami nie pokazuje sie w wygenerowanym pdf nic, zaden tekst. jezeli jako wartosc zmiennej dam:
  1. $html = <<<EOD
  2. żołędzie spadają z drzewa
  3. EOD;

to w efekcie w pdf nie bede mial wyswietlone NIC a nie np. "odzie spadaj z drzewa".
nospor
Co juz probowales? Zamienic na iso? Odpalic z parametrami z linka co podałem?
bertog
Po zmianie na
  1. $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, false, 'ISO-8859-1', false);

z tekstu="żołędzie spadają z drzewa"
w pdf wyswietla sie tekst podswietlony w zalaczniku.
nospor
No dobra, ale kodowanie tego:
żołędzie spadają z drzewa
tez masz odpowiednie ustawic.
bertog
Nie bardzo rozumie, gdzies trzeba to jeszcze dopisac?
nospor
W jakim kodowaniu edytujesz swoj plik? W utf8? To przy pomocy iconv() masz skonwertowac wszystkie teksty/zmiennej jakie wstawiasz do tcpdf/
bertog
Ok. rozumiem, przekonwertowalem plik zrodlowy do ISO-8859-1 ale teraz mam nastepujacy blad:
TCPDF ERROR: Some data has already been output, can't send PDF file
nospor
Nie kazalem ci konwertowac pliku, tylko zmienne. Z kodu co pokazales to tekst masz w zmiennych.

Co do bledu to wyraźnie napisali, ze wysylasz coś do przeglądarki wczesniej. Pewnie po kowenrsji doszly jakies białe znaki na poczatek, np BOM dla utf8
bertog
Ok.
Mam w zrodle tak:
  1. // Include the main TCPDF library (search for installation path).
  2. require_once('tcpdf.php');
  3.  
  4. // create new PDF document
  5. $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, false, 'ISO-8859-1', false);
  6.  
  7. .....
  8.  
  9. // Set some content to print
  10. $html = <<<EOD
  11. <h1>Welcome to <a href="http://www.tcpdf.org" style="text-decoration:none;background-color:#CC0000;color:black;">&nbsp;<span style="color:black;">TC</span><span style="color:white;">PDF</span>&nbsp;</a>!</h1>
  12. <i>This is the first example of TCPDF library.ćććććć</i>
  13. <p>This text is printed using the <i>writeHTMLCell()</i> method but you can also use: <i>Multicell(), writeHTML(), Write(), Cell() and Text()</i>.</p>
  14. <p>Please check the source code documentation and other examples for further information.</p>
  15. <p style="color:#CC0000;">TO IMPROVE AND EXPAND TCPDF I NEED YOUR SUPPORT, PLEASE <a href="http://sourceforge.net/donate/index.php?group_id=128076">MAKE A DONATION!</a></p>
  16. EOD;
  17.  
  18. iconv('ISO-8859-1', 'UTF-8', $html);
  19.  
  20. // Print text using writeHTMLCell()
  21. $pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);


i dalej jest jak na obrazku.


co jeszcze jest nie tak.
nospor
http://php.net/manual/en/function.iconv.php
I zobacz co oznacza ktory parametr iconv a nie strzelasz.
bertog
Sorki, ale naprawde nie wiem o co chodzi z tym kodowaniem. Jak wypisuje sobie na ekranie wynik dzialania funkcji iconv() to tekst ze zmiennej sie wyswietla (zamias polskich znakow jakies krzaki) ale w pdf przy tych samych ustawieniach w zrodle dalej tak jak na poprzednim obrazku.
Potrzebuje wiecej wskazowek.
nospor
toz ci mowie... zle podales parametru do iconv... Spojrz w linka, tam masz napisane co jest czym
bertog
No to czytalem, pierwszy parametr wejsciowy czyli jak zakodowany jest tekst, parametr drugi to kodowanie wyjsciowe (docelowe), trzeci to łańcuch znakow, ktory ma byc przekonwertowany i tyle. Dalej nie wiem co jest nie tak.
Pyton_000
A masz jak?
nospor
No i jak to ma sie do tego kodu
iconv('ISO-8859-1', 'UTF-8', $html);
?
No nijak.... wejscie masz w utf8 i chcesz miec wyjscie w iso. W kodzie napisales na odwrot
bertog
przykro mi ale i tak nie kapuje co jest nie tak.
Pyton_000
@nospor idź odpocznij i wróć jutro wink.gif
nospor
@Pyton tak właśnie zrobie smile.gif
phpion
Proponuję skorzystać z mPDF, który nie ma problemów z polskimi znakami, a do tego całkiem nieźle wspiera tworzenie PDF'ów na podstawie HTML + CSS.
remiasz
Witam
Mam podobny problem z polskimi znakami.
Pliki PHP kodowane są w windowsie i cała strona i baza pracują z tym kodowaniem.
Generalnie polskie znaki są. Np. skrypt:
  1. $pdf = new TCPDF('P', 'mm', 'A4');
  2. $pdf->AddPage();
  3. $text=iconv('Windows-1250','UTF-8',"ąćęłńóśźżĄĆĘŁŃÓŚŹŻ");
  4. $pdf->MultiCell(0,0, $text);
  5. $pdf->Output('przyklad.pdf', 'I');

generuje pdf'a z polskimi znakami tak jak trzeba.

Ale już zmiana kodu i wpisanie tekstu z pojedynczym ł powoduje że w PDF'ie tekst jest bialy na bialym - kompletnie niewidoczny mimo że można go zaznaczyć i skopiować
  1. $pdf = new TCPDF('P', 'mm', 'A4');
  2. $pdf->AddPage();
  3. $text=iconv('Windows-1250','UTF-8',"Wrocław");
  4. $pdf->MultiCell(0,0, $text);
  5. $pdf->Output('przyklad.pdf', 'I');


Czy ktoś wie co z takim fantem można zrobić?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.