Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: generowanie plików *.pdf + polskie czcionki
Forum PHP.pl > Forum > PHP
Stron: 1, 2, 3, 4, 5
itsme
Witam Szanowne Grono ...

Idziemy do przodu dlatego też zaczynam (mam nadzieje) nowy rozdzial w zyciu forum.php.pl :-).

Chce podzielić się swoimi 3 godzinnymi doświadczeniami z produktem generejucym pliki pdf.

Produkt ten ukrywal sie pod adresem www.ros.co.nz/pdf/ lecz Nalfein][WR znalazl łobuza i podzielił się adresem na #php.pl irc.php.pl (polecam czasami tam sie wiele można dowiedzieć).
====================================
moj sprzęcik winXP, PIII 750 MHz, 396 MB RAM, FoxServ 3.0 www.foxserv.net

zassałem pliki stąd. Plki są ładnie spakowane i niewielkie. Znajduje się tam dokumentacja i zródła. Rozpakowałem i skopiowałem do katalogu C:/FoxServ/www/pdf/.
Pierwszym pisanym adresem był http://localhost/pdf/readme.php - pojawi sie ładny plik *.pdf 34 strony w około 15 s. całkiem całkiem biorąc pod uwagę że przedmiotowa klasa jest pisana w php.

W dokumentacji można odnaleść kaweł kodu typu Witam Świat
  1. <?php
  2. include ('class.ezpdf.php');
  3. $pdf =& new Cezpdf();
  4. $pdf->selectFont('./fonts/Helvetica.afm');
  5. $pdf->ezText('Hello World!',50);
  6. $pdf->ezStream();
  7. ?>
i oto ukazał się mi mój pierwszy pdf utworzony za pomocą php laugh.gif .
i inny kawałek kodu który tworzy tabele
  1. <?php
  2. include ('class.ezpdf.php');
  3. $pdf =& new Cezpdf();
  4. $pdf->selectFont('./fonts/Helvetica.afm');
  5. $data = array(
  6. array('num'=>1,'name'=>'gandalf','type'=>'wizard')
  7.  ,array('num'=>2,'name'=>'bilbo','type'=>'hobbit', 'url'=>'http://www.ros.co.nz/pdf/')
  8.  ,array('num'=>3,'name'=>'frodo','type'=>'hobbit')
  9.  ,array('num'=>4,'name'=>'saruman','type'=>'bad dude', 'url'=>'http://sourceforge.net/projects/pdf-php')
  10.  ,array('num'=>5,'name'=>'sauron','type'=>'really bad dude')
  11. );
  12. $pdf->ezTable($data);
  13. $pdf->ezStream();
  14. ?>


Oczywiście są wady tej clasy (np interfejs - ps. Jutro tj 04.09.2003 czwartek - jest spotkanie na #php.pl w sprawie stworzenia interfejsu w XML-u - pomysl jest Nalfein][WR zobaczymy ..... robi się obiecujaco) i zalety wszystko pozostawiam Waszej ocenie.
teraz parę linków dla zainteresowanych
strona: www.ros.co.nz/pdf/
dokumentacja: www.ros.co.nz/pdf/readme.pdf
downloadzik: www.ros.co.nz/pdf/downloads.php?f=pdfClassesAndFonts_009e.zip

czego oczekuje??
1. Oczekuje od Was moi mili, iż przestaniecie się bać pdf-a...
2. Zaczniecie się tym bawić (a jest czym zapewniam Was)
3. Podzielicie się swoimi doświadczeniami (KODAMI)
4. Ci którzy już z tym walczyli zapraszam ze swoimi przykładami ...

ps. nie dałem tego na PRO php gdyż nie ma sensu z tego robić czegoś nadzwyczajnego ....
ps2. nalezy miec zainstalowany Acrobat Reader
itsme
czas na lekka kontynuacje ...
ponizej przedstawiam drugi projekt, ktory moze wzbudzic u Was większe zainteresowanie.

http://www.fpdf.org/

zrodełka: http://www.fpdf.org/en/dl.php?v=151&f=zip
manual w jezyku polskim: http://www.fpdf.org/en/dl.php?id=57
Tutorials: http://www.fpdf.org/en/tutorial/index.php
skrypty: http://www.fpdf.org/en/script/index.php

  1. <?php
  2. define('FPDF_FONTPATH','font/');
  3. require('fpdf.php');
  4.  
  5. $pdf=new FPDF();
  6. $pdf->Open();
  7. $pdf->AddPage();
  8. $pdf->SetFont('Arial','B',16);
  9. $pdf->Cell(40,10,'Hello World!');
  10. $pdf->Output();
  11. ?>

oto kawelek kodziku Hello World! http://www.fpdf.org/en/tutorial/tuto1.php

  1. <?php
  2. define('FPDF_FONTPATH','font/');
  3. require('fpdf.php');
  4.  
  5. class PDF extends FPDF
  6. {
  7. //Page header
  8. function Header()
  9. {
  10. //Logo
  11. $this->Image('logo_pb.png',10,8,33);
  12. //Arial bold 15
  13. $this->SetFont('Arial','B',15);
  14. //Move to the right
  15. $this->Cell(80);
  16. //Title
  17. $this->Cell(30,10,'Title',1,0,'C');
  18. //Line break
  19. $this->Ln(20);
  20. }
  21.  
  22. //Page footer
  23. function Footer()
  24. {
  25. //Position at 1.5 cm from bottom
  26. $this->SetY(-15);
  27. //Arial italic 8
  28. $this->SetFont('Arial','I',8);
  29. //Page number
  30. $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
  31. }
  32. }
  33.  
  34. //Instanciation of inherited class
  35. $pdf=new PDF();
  36. $pdf->Open();
  37. $pdf->AliasNbPages();
  38. $pdf->AddPage();
  39. $pdf->SetFont('Times','',12);
  40. for($i=1;$i<=40;$i++)
  41. $pdf->Cell(0,10,'Printing line number '.$i,0,1);
  42. $pdf->Output();
  43. ?>
wynik: http://www.fpdf.org/en/tutorial/tuto2.php
kod i przyklady ^c ^v z http://www.fpdf.org/
mam nadzieje ze zacheci Was to do dzialania
adres podal mi dragossain zas przypomnial kameleon

@kameleon: cos tam robisz - podziel sie tym z Nami.

Pozdrawiam wszystkich chetnych wiedzy :-)
Puciek
Ja chciałbym tylko dodać że ostatnio popełniłem tłumaczenie FPDF-a i postatram sie je w piątek gdzieś zamieścić
KaMeLeOn
Oto krótki tutorial jak tworzyć polskie czcionki i jak z nich korzystać w dokumentach PDF, tworzonych przez darmową klasę (FPDF). Użyjemy do tego narzędzia (Makefont) zawartego w dystrybucji FPDF. Służy ono do generowania czcionki, którą później będziemy wykorzystywać w naszym dokumencie PDF.

Najpopularniejsze formaty czcionek to: Type1 i TrueType.
Są typowymi czcionkami wektorowymi stosowanymi w środowiskach graficznych niezależnie od platformy. Twórcą formatu Type1 jest firma Adobe, a formatu TrueType firmy Apple i Microsoft. Aby uzyskać polskie ogonki w PDF'ie należy przekonwertować czcionkę z formatu TrueType do formatu Type1.

_______________________________
1. Krok pierwszy (generowanie metrycznego pliku *.afm).
Aby wygenerować plik *.afm przydatne będzie darmowe narzędzie ttf2pt1 konwertujące czcionkę w formacie TrueType do formatu Adobe Type1.

Dostępne jest pod adresem: http://ttf2pt1.sourceforge.net/download.html
Binaria Windows dostępne są pod adresem: http://www.fpdf.org/fr/dl.php?id=22

W linii poleceń wpisujemy:
Cytat
ttf2pt1 –a nazwa_czcionki.ttf nazwa_pliku_afm

np. dla czcionki arial.ttf
Cytat
ttf2pt1 –a arial.ttf arialpl

Powinieneś otrzymać pliki: arialpl.afm i arialpl.t1a.

To najważniejszy moment w budowaniu czcionek. Ponieważ są one dołączane do pliku PDF w tym momencie musimy zadbać o rozmiar generowanych plików. Aby ograniczyć czcionkę do konkretnego kodowania można użyć zawartych w katalogu /font/makefont/ plików *.map zawierających mapę znaków dla konkretnego kodowania.
Generowanie czcionki arialpl dla kodowania ISO-8859-2:
Cytat
ttf2pt1 –b -L iso-8859-2.map arial.ttf arialpl

Można również usunąć z pliku mapy znaki, których nie będziemy używali. To również spowoduje zminiejszenie rozmiaru wynikowego pliku czcionki, ale ta metoda nie jest polecana zwłaszcza przy dynamicznym generowaniu PDF'ów.

_______________________________
2. Krok drugi (generowanie pliku czcionki za pomocą narzędzia Makefont)
Tworzymy krótki skrypt php.
  1. <?php
  2. require('sciezka_do_narzedzia_makefont/makefont.php');
  3. Makefont('nazwa_czcionki.ttf', 'nazwa_pliku_afm.afm', 'kodowanie');
  4. ?>

np. dla czcionki arial.ttf i utworzonego wczesniej pliku arialpl.afm
  1. <?php
  2. require('sciezka_do_narzedzia_makefont/makefont.php');
  3. Makefont('arial.ttf', 'arial.afm', 'iso-8859-2');
  4. ?>


Powinieneś otrzymać pliki: arialpl.php i arialpl.z.
Oba pliki tworzą czcionkę, która możesz wykorzystywać w dokumencie PDF.
Należy pamiętać, że stylem wygenerowanej czcionki arialpl jest REGULAR.
Dla stylu BOLD i ITALIC istnieja inne pliki ttf:
-- arialbd.ttf (BOLD)
-- ariali.ttf (ITALIC),
-- arialbi.ttf (ITALIC BOLD),

_______________________________
3. Krok trzeci (Instalacja czcionki).
Przekopiuj wcześniej utworzone pliki *.php i *.z do katalogu z fontami (domyślnie w FPDF to 'font/'):
  1. <?php
  2. define('FPDF_FONTPATH','font/');
  3. require('fpdf.php');
  4.  
  5. $pdf=new FPDF();
  6. $pdf->Open();
  7. $pdf->AddPage();
  8. $pdf->AddFont('nazwa_czcionki','styl_czcionki','plik_czcionki.php');
  9. $pdf->SetFont('nazwa_czcionki','styl_czcionki', rozmiar);
  10. $pdf->Cell(40,10,'Hello World!');
  11. $pdf->Output();
  12. ?>

przykład dla naszej czcionki arialpl:
  1. <?php
  2. define('FPDF_FONTPATH','font/');
  3. require('fpdf.php');
  4.  
  5. $pdf=new FPDF();
  6. $pdf->Open();
  7. $pdf->AddPage();
  8. $pdf->AddFont('arialpl', '', 'arialpl.php');
  9. $pdf->SetFont('arialpl', '', 12);
  10. $pdf->Cell(40, 10, 'Hello World!');
  11. $pdf->Output();
  12. ?>

Od tego momentu każdy wypisany tekst w dokumencie PDF, będzie używał czcionki arialpl o rozmiarze 12.

PAMITAJ: Jeśli ustalisz kodowanie na ISO-8859-2, tekst przekazywany do PDF'a również musi być w formacie ISO-8859-2.

_______________________________
A oto efekt: test.pdf
Wykorzystałem czcionkę Verdana: REGULAR, BOLD i ITALIC
Do ściągnięcia: tutaj.
Inne czcionki to wasze zadanie domowe :wink:

PS. Sorry Itsme...
itsme
jedna wspaniała wiadomość otoż tłumaczeniem dokumentacji http://www.ros.co.nz/pdf/ czyli R&OS zajmie się rzseattle. Znając jego osobe i wcześniejsze tłumaczenie dokumentacji smarty wiem ze to bedzie dobre. Na początku zostaną przetłumaczone funkcjie nastepnie reszta. Czas realizaji (funkcje około 2 tygodni). Termin na pozostała cześć zostanie podany na forum po sprecyzowaniu przez rzseattle.


DZIĘKUJEMY CI rzseattle. :-)

czekamy ...........
tomkoz
co do polskich liter w R&OS po wielu probach UDAŁO sie smile.gif
a wiec tak:

1) uzycie programu ttf2pt1 do wygenerowania fonu
ttf2pt1 -b -l latin2 c:windowsfontstahoma.ttf tahoma

2) wpisanie kodu:

  1. <?php
  2. <?php
  3.  
  4. include ('class.ezpdf.php'); 
  5. $pdf =& new Cezpdf('a4');
  6.  
  7. $diff=array(177=>'aogonek',161=>'Aogonek',230=>'cacute',198=>'Cacute',234=>'eogonek',202=>'Eogonek',
  8. 241=>'nacute',209=>'Nacute',179=>'lslash',163=>'Lslash',182=>'sacute',166=>'Sacute',
  9. 188=>'zacute',172=>'Zacute',191=>'zdot',175=>'Zdot');
  10.  
  11. // a  /  c /  e /  n / o  / l  /  s /  zi /  zy /
  12. // 177 / 230 / 234 / 241 / 243 / 179 / 182 / 188 / 191 /
  13. // 161 / 198 / 202 / 209 / 211 / 163 / 166 / 172 / 175 /
  14.  
  15. $pdf->selectFont('./fonts/tahoma.afm',array('encoding'=>'WinAnsiEncoding','differences'=>$diff));
  16.  
  17. $wstaw1='witaj polski :) &para;wiecie'.&#092;"nn\".'a&plusmn;ˇ-cćĆ-s&para;&brvbar;-nńŃ-lłŁ-oóÓ-eę-zĽ&not;-zżŻ ';
  18. $pdf->ezText($wstaw1,10,array('justification'=>'right')); 
  19.  
  20. $pdf->stream();
  21. ?>
  22.  
  23. ?>


3) gotowe biggrin.gif

------------------------------------------------------------------------

tekst napisany jest pod iso 8859-2

jezeli wyslietli sie wam komunikat:
The font 'Tahoma' contains a bad /BBox
zmiencie wielkosc liter w nazwie czcionki

folder z fontami musi miec prawa do zapisu (przy pierwszej generacji tworzony jest plik php_tahoma.afm)

wygenerowany plik ma 30k i jest elegancki.. laugh.gif

pozdrawiam
kasztan
Cytat
A oto efekt: test.pdf


Tak wlaśnie przeglądam sobie forum, patrzę, a temat powrócił. Jakiś czas temu sam uczestniczyłem w <b>dyskusji</b> o generowaniu pdf'ów, więc postanowiłem się wtrącić też tutaj.
Wszystko pięknie KaMeLeOn opisałeś: krok po kroku (sam osobiście nie sprawdzałem poprawności tego co napisałeś, ale zakładam, że wszystko jest ok).
Zauważ tylko, że rozmiar wygenerowanego przez Ciebie pdf'a to - 249KB. Nie sądzisz, że na te 3 linijki tekstu, to dużo za dużo?questionmark.gif
KaMeLeOn
Cytat
Zauważ tylko, że rozmiar wygenerowanego przez Ciebie pdf'a to - 249KB. Nie sądzisz, że na te 3 linijki tekstu, to dużo za dużo?questionmark.gif

Nigdzie nie napisałem, że rozmiar będzie mały.
Napisałem za to, że czcionki są dołączane do PDF'a, a jak nam wszystkim wiadomo czcionki wektorowe to dość duża zabawka.
Można oczywiście ograniczyć wielkość pliku wynikowego, ale to trzeba robić z głową. Najważniejszy jest zestaw znaków, który będziemy używać - resztę można usunąć ręcznie podczas budowania pliku czcionki. Do tego dochodzi styl czcionki. Jak wiemy są 4 podstawowe: REGULAR, ITALIC, BOLD, BOLD ITALIC. Każdy z tych stylów to osobny plik, który trzeba dołączyć, więc wszystko rośnie.

Niestety coś kosztem czegoś... stawiasz na jakość albo na rozmiar.
Jeśli chcesz aby, w każdym miejscu na świecie Twój PDF wyglądał tak samo... hmm, ja wybieram jakość.

Dodam tylko, że ten rozmiar to wynik dołączenia tych 3 czcionek, sama zawartość PDF'a zajmuje bardzo malutko. No Chyba, że nawciskasz tam grafikę.
foe
jak uzwac ttf2pt1.1? to tylko kod w C. Co z tym zrobic? ma ktos kompilacje pod Winzgroze?
KaMeLeOn
Udostępniam program pod Windowsa bo widzę, że link nie działa: ttf2pt1
foe
co polskich czcionek w ezpdf - za chiny mi nei dzialaja w 100%. Wyswietla mi sie cos takiego :

witaj polski smile.gif &para;wiecie
a&plusmn;A-ccC-s&para;&brvbar;-nnN-lłŁ-oóÓ-eeE-zz&not;-z&iquest;&macr;

poza tym nie moge za chuiny pozbuc sie komunikatu o zlym BBOXIE czcionki.
andrzejs
Witam,

R&OS jest wykorzystywane do generowania PDF'ów z poziomu b. dobrego open sourcowego CMS'a - MamboServer (www.mamboserver.com).

Tradycyjnie pojawił się problem z polskimi literami.

Zrobiłem dokładnie, tak jak było to opisane poniżej (łączenie z wyborem czcionki) - jednak cały czas mam krzaczki - czy ktoś ma pomysł co zostało pominięte.

Pozdrawiam,
Andrzej

Cytat
co do polskich liter w R&OS po wielu probach UDAŁO sie smile.gif
a wiec tak:

1) uzycie programu ttf2pt1 do wygenerowania fonu
ttf2pt1 -b -l latin2 c:windowsfontstahoma.ttf tahoma

2) wpisanie kodu:

  1. <?php
  2. <?php
  3.  
  4. include ('class.ezpdf.php'); 
  5. $pdf =& new Cezpdf('a4');
  6.  
  7. $diff=array(177=>'aogonek',161=>'Aogonek',230=>'cacute',198=>'Cacute',234=>'eogonek',202=>'Eogonek',
  8. 241=>'nacute',209=>'Nacute',179=>'lslash',163=>'Lslash',182=>'sacute',166=>'Sacute',
  9. 188=>'zacute',172=>'Zacute',191=>'zdot',175=>'Zdot');
  10.  
  11. // a  /  c /  e /  n / o  / l  /  s /  zi /  zy /
  12. // 177 / 230 / 234 / 241 / 243 / 179 / 182 / 188 / 191 /
  13. // 161 / 198 / 202 / 209 / 211 / 163 / 166 / 172 / 175 /
  14.  
  15. $pdf->selectFont('./fonts/tahoma.afm',array('encoding'=>'WinAnsiEncoding','differences'=>$diff));
  16.  
  17. $wstaw1='witaj polski :) &para;wiecie'.&#092;"nn\".'a&plusmn;ˇ-cćĆ-s&para;&brvbar;-nńŃ-lłŁ-oóÓ-eę-zĽ&not;-zżŻ ';
  18. $pdf->ezText($wstaw1,10,array('justification'=>'right')); 
  19.  
  20. $pdf->stream();
  21. ?>
  22.  
  23. ?>


3) gotowe  biggrin.gif

------------------------------------------------------------------------

tekst napisany jest pod iso 8859-2

jezeli wyslietli sie wam komunikat:
  The font 'Tahoma' contains a bad /BBox
zmiencie wielkosc liter w nazwie czcionki

folder z fontami musi miec prawa do zapisu (przy pierwszej generacji tworzony jest plik php_tahoma.afm)

wygenerowany plik ma 30k i jest elegancki..  laugh.gif

pozdrawiam
Darek
Witajcie !

Cytat
co polskich czcionek w ezpdf - za chiny mi nei dzialaja w 100%. Wyswietla mi sie cos takiego :

witaj polski smile.gif &para;wiecie
a&plusmn;A-ccC-s&para;&brvbar;-nnN-lłŁ-oóÓ-eeE-zz&not;-z&iquest;&macr;

poza tym nie moge za chuiny pozbuc sie komunikatu o zlym BBOXIE czcionki.


Mam podobny problem ale w FPDF.
Czy moze ktos z Was podeslac mi jedna przerobiona czcionke z polskimi znaczkami, np. Arialpl?
Te ktore wygenerowalem wg opisu podanego na forum nie wyswietlaja mi polskich znaczkow.
Potrzebuje w celach testowych.

Darek
hawk
Cytat
Dodam tylko, że ten rozmiar to wynik dołączenia tych 3 czcionek, sama zawartość PDF'a zajmuje bardzo malutko. No Chyba, że nawciskasz tam grafikę.

Wydaje mi się jednak, że coś jest nie tak. Dla przykładu, mam przed sobą 8-stronicowy dokument, który wygenerowałem przez docbook -> saxon -> FOP. Wyłącznie moje własne czcionki, 3 różne kroje. Wynik: 80 kB.
250 kB to jednak dużo, ale istotnie, jest to prawdopodobnie wynik dołączania czcionek, które nie wygląda mi na optymalne.
matid
A jak można za pomocą klasy FPDF wygenerować ciągły tekst? Bo mam w bazie danych pod polem typu 'text' i jak to wrzucam do PDF'a to mam to wszystko w jednej linii.
Oto kod:
  1. <?
  2. require(&#092;"config.php\"); // pobiera niezbęde funkcje, obsługę bazy danych itp.
  3. $res = mysql_fetch_array($mysql->query(&#092;"SELECT 'text' FROM 'arts' WHERE id = '\" . $_GET['aid'] . \"'\")); // pobiera tekst z bazy danych
  4.  
  5. // to jest kod znaleziony gdzieś w tym topicu
  6. define('FPDF_FONTPATH','font/');
  7. require('fpdf.php');
  8. $pdf=new FPDF();
  9. $pdf->Open();
  10. $pdf->AddPage();
  11. $pdf->AddFont('arialpl', '', 'arialpl.php');
  12. $pdf->SetFont('arialpl', '', 12);
  13. $pdf->Text(10, 10, text($res['text'])); // zamieniłem Cell na Text, lecz wciąż nie działa...
  14. $pdf->Output();
  15. ?>
KaMeLeOn
Cytat
A jak można za pomocą klasy FPDF wygenerować ciągły tekst? Bo mam w bazie danych pod polem typu 'text' i jak to wrzucam do PDF'a to mam to wszystko w jednej linii.

Użyj metody MultiCell()...
brajan
Witam!
Czy istnieje taki konwerter który przerobiłby html na PDFa?
Chodzi mi o możliwość dynamicznego tworzenia takich plików gdzie źródło pobierane jest z mySQL'a. Narazie udaje mi się jedynie umieścić kod źródłowy strony w PDFie, ale będę wdzięczny za informacje czy da się zinterpretować tego HTML'a i stworzyć ładnie wyglądający pliczek bez widocznych tagów.

Z góry dziękuję za informacje.
krysk
Pobaw się tym: http://www.hotscripts.com/Detailed/13301.html
maulus
dobra tylko jak używać tego programu ttf2pt1??
krysk
Jeśli masz dostęp do shell_exec(); to PDFy bardzo łatwo wygenerować, niestety dziś już mało takich serwerów sad.gif postaram się o tym napisać na php.pl - może ekipa doda smile.gif jakby co - prv.
maulus
chodzi mi program do czcionek, do odpalenia na winie
maulus
hm więc ktoś mi pomoże czy jest to niemożliwe??
tomkoz
Cytat
jak używać tego programu ttf2pt1

przeciez jest opisane wszystko
http://forum.php.pl/viewtopic.php?t=5438#35757

a co tu skomplikowanego smile.gif
maulus
no tak czytałem ten temat tylko mi wywala jak wchodze do wiersza poleceń na win XP że nie ma takiego polecenia, jak to mam zaistalować??
dado
Cytat(krysk @ 2004-03-14 23:27:39)

a ktoś wie jak to uruchomi bo w plidu readme niewiele pisze
Goral
Gdzieś wcześniej była rozmowa na temat wielkości wygenerowanego przez FPDF pliku zawierającego własne czcionki.

Problem tkwi pewnie w zastosowanych czcionkach.

Zrobiłem sobie swoje czcionki poleceniem:
Cytat
ttf2pt1 -b -L iso-8859-2.map arial.ttf arialpl

w wyniku czego otrzymałem 2 pliki:
arialpl.apm i arialpl.pfb

przekopiowałem je sobie na serwerek (razem z plikiem arial.ttf)

Jeśli użyję w makefont() czcionki True Type:
Cytat
makefont('arial.ttf','arialpl.apm','iso-8859-2');

to otrzymuję 2 pliki: arialpl.php oraz skompresowany obraz fonta arialpl.z, który ma wielkość 170383 B. Ten obraz właśnie jest dołączany do pliku PDF. Plik z napisem "Witaj Świecie" zajmuje 173kB!

Natomiast jeśli użyję w makefont() czcionki Type 1:
Cytat
makefont('arialpl.pfb','arialpl.apm','iso-8859-2');

to także otrzymuję 2 pliki: arialpl.php oraz skompresowany obraz fonta arialpl.z, ale tym razem ma wielkość 27513 B!.
Plik z napisem "Witaj Świecie" zajmuje teraz tylko 30kB!
Dabroz
Eeeh, pisałem już o tym na forum.

http://forum.php.pl/index.php?showtopic=17189
madalena
Moze zrobilibyscie z tego jakis artykul na stronce, skonczyly by sie wtedy pytania o pdf
Dabroz
Hmm... ja się mogę ewentualnie podjąć napisania artykułu (PDF + polskie czcionki). Co na to ekipa php.pl?
madalena
Witajcie
A co zrobic z faktem ze plik pdf sie generuje a nastepnie zapisuje sie gdzies na dysku, jesli uzyje sie takiego zapisu
Kod
$pdf->output('nazwa.pdf');

ale jesli uzyje takiego zapisu
Kod
$pdf->output('nazwa.pdf',true);

lub takiego
Kod
$pdf->output();

spodziewałabym sie ze plik wyswietli sie w przegladarce albo pojawi sie komunikat o zapisie lub otwarciu

NIESTETY w pierwszym przypadku okno przegladarki jest puste a pliku musze szukac na dysku

w drugim i trzecim w oknie przegladarki pojawia mi sie pdf yulko ze jego kod, składnia czy nie wiem jak to nazwac poprostu krzaki (nie chodzi o brak polskich znaków)

CO z tym zrobic
butthead
W bólach, ale udało mi się odpalić polskie krzaczki w pdf-ie generowanym przez R&OS. No i teraz pozostał już tylko jeden problem - czy da się jakoś zrobić, żeby te polskie literki nie nachodziły na inne znaki w tekście? Jakiś kerning, albo coś w tym stylu? Szczególnie nieciekawie to wygląda w przypadku zbitki 2 polskich literek obok siebie sad.gif
Andykaz
Cytat(andrzejs @ 2003-12-30 23:39:11)
Zrobiłem dokładnie, tak jak było to opisane poniżej (łączenie z wyborem czcionki) - jednak cały czas mam krzaczki - czy ktoś ma pomysł co zostało pominięte.


Trzeba jeszcze skopiować plik PFB do katalogu /fonts ezPDFa, który również został wygenerowany tym poleceniem.
carramba
wie ktos z was moze jak stworzyc czcionke ktora mi obsluzy
utf-8 lub uincode questionmark.gif mam z tym spory problem.

=======================================

ehhh poddaje sie, czy moglby mi ktos z was udostępnić
arial,arialb,ariali,arialbi za nic na swiecie nie chce mi przekonwertowac
na ISO-8859-2 kursywy i pogrobienia, normalna czcionka sie
konwertuje na arialpl.php a pozostałe powoduja bledy sad.gif
chodzi mi o konwersje dla fpdf ISO-8859-2 calego zestawu
czcioneki ariala - normalnej, kursywy, pogrobionej i pogrobionej kursywy.
mirksonek
A czy ktoś może wie czy jest możliwe otwarcie *.pdf na serwerze, dopisanie do niego kilka zdań i zapisanie? Próbowałem, ale niestety z brakiem efektów, jedyne co udało mi się uzyskać, to zapis na serwerze nowego dokumentu pdf, a chodzi mi jedynie o nadpisanie już istniejącego, czyli aby zawierał pierwotną treść + nową...
crow013
Mam być może głupie pytanie, ale dopiero zaczynam i trochę się pogubiłam. Otóż, czym rózni się ezPdf od fpdf. Walczę z polskimi znaczkami. Zrobiłam wszystko tak jak opisaliście i wszystko byłoby ok gdyby nie taka drobnostka - w kodzie piszecie $pdf->new FPDF(), ja korzystam z $pdf->new PDF(). Próbowałam przez $pdf->new FPDF() ale w tym nie działa funkacja LoadData, która jest mi potrzebna. Hmmm mam nadzieję, że chciaż ktoś zrozumie o co mi chodzi winksmiley.jpg. Napisze jeszcze, że to co ma być w PDF'ie pobieram z bazy MySQL.
carramba
rozwiazaniem problemu UTF-8 i generowania PDF jest biblioteka iconv.
Pozwala na konwertacje pomiedzy roznymi zestawami znakow, z moich informacji
jest zainstalowana na wiekszosci serwerow.

Konwersja pomiedzy UTF-8 a ISO

  1. <?php
  2.  
  3. $charsertTmp = 'Iso-8859-2';
  4. $text = iconv('UTF-8',$charsertTmp,$text);
  5.  
  6. ?>


przekonwertowany tekst smialo mozna wstawic do generowanego pdfa, problemem natomiast pozostaja nadal znaki unicode czyli np. &copy; ktorego iconv nie przekonwertuje.
crow013
Mam nadzieję, że ktoś sie już z czyms takim spotkał. Kozrystam z kodowania utf-8, miałam w związku z tym problem gdyż do tej pory wszystko co wysyłałam do pdf'a było w iso-8859-2. Rozwiązaniem okazał się programik "ttf2utf" działający tak samo jak opisywany kiedyś na forum "ttf2pt1". Do tego jest jeszcze biblioteka UFPDF (FPDF nie wystarcza) i tu pojawił się problem. Okazało się, ze UFPDF nie obsługuje MultiCell - a ja momentami mam bardzo długi tekst, który niestety nie ejst przenoszony do następnej linii tylko zostaje ucięty . Czy ktoś spotkał się z czymś takim i może wie jak z tego wybrnąć??
Kinool
mam problem z uzyskaniem PDF przy korzystaniu z klasy FPDF a dokladnie gdy chce uzyc PNG o duzej rozdzielczosci (300 DPI szerokosc kolo 3000px) to nieche sie generowac PDF sad.gif

zauwazylem ze wszystko jest ok do czasu gdy obraz nie przekracza 842x595 px co odpowiada wymiarom kartki A4 przy 72 DPI jesli tylko zwieksze o kilka pixeli obraz juch nieche sie ladowac sad.gif

docelowo chcialbym umiescic wiekszego png by przy wydruku mial dobra jakosc i byl czytelny ale nie moge sobie poradzic sad.gif

juz probowalem go skalowac na 1000 sposobow

  1. <?php
  2. $pdf->Image('source/r3.png', 5, 5, 20, 0, 'png');
  3. $pdf->Image('source/r3.png', 0, 0, 100, 0, 'png');
  4. $pdf->Image('source/r3.png', 1, 1, 10, 0, 'png');
  5.  
  6. ?>


i za kazdym razem to samo sad.gif czyli pdf-a nie ma
moze ktos juz spotkal sie z podobnym problemem? jest na to jakas rada?
vala
a ma ktos moze jakis darmowy wypasiony programik, ktory konwertuje pdf->chm?smile.gif
Fipaj
DocCHM - szukaj w google "chm generator"
katarzynka
witam
mam pytanie
jak wyswietlic w pdfie (zrobionym w php smile.gif ) pionowy text - ale taki obrocony o 90st. - uzywam FPDF
pozdrawiam i dzieki
katarzynka
SongoQ
Na stronie fpdf masz dodatkowa klase ktora Ci rozszerzy funkcjonalnosc o pochyly tekst. Z tego co pamietam to ustawiasz pod jakim katem ma byc napis i oczywiscie ustawienia fonta. Uzylem tej klasy do generowania napisu "Podglad Wydruku"

Jak nie znajdziesz gdzie to jest to napisz na priv.
katarzynka
dzieki znalalzlam smile.gif
jakby ktos jeszcze szukal...
http://www.fpdf.org/en/script/script31.php
seban
Mam pytanie jak ustawic zeby dokument byl generowany w w poziomie strony A4 a nie jak w pionie
SongoQ
Np w fpdf patrz strona fpdf.org manual FPDF - constructor. Masz tam chyba jako pierwszy pararametr.
polibode
mój plik do generacji wydruku jest nastepujący
  1. <?
  2.  
  3. include ('../session.php');
  4.  
  5. define('FPDF_FONTPATH','../font/');
  6. require('../html2fpdf.php');
  7.  
  8. $count = $_SESSION['ilosc_wierszy'];
  9.  
  10. for($i=0;$i<$count;$i++)
  11. {
  12.  $opis[$i] = iconv(&#092;"CP852\",\"ISO-8859-2\",$_SESSION['WOpis'][$i]);
  13.  //$grasort[$i] = $_SESSION['Wgrasort'][$i];
  14.  $netto[$i] = $_SESSION['Wnetto'][$i];
  15.  $sprzProcent[$i] = $_SESSION['WsprzProcent'][$i];
  16.  $sprzProcentNar[$i] = $_SESSION['WsprzProcentNar'][$i];
  17.  $ProcentProd[$i] = $_SESSION['WProcentProd'][$i];
  18.  $Zysk[$i] = $_SESSION['WZysk'][$i];
  19.  $marza[$i] = $_SESSION['Wmarza'][$i];
  20.  $kategoria[$i] = $_SESSION['Wkategoria'][$i];
  21. }
  22. $countUSL = $_SESSION['Wrow_countUSL'];
  23.  
  24. for($i=0;$i<$countUSL;$i++)
  25. {
  26.  $grasortUSL[$i] = $_SESSION['WgrasortUSL'][$i];
  27.  $opisUSL[$i] = $_SESSION['WopisUSL'][$i];
  28.  $nettoUSL[$i] = $_SESSION['WnettoUSL'][$i];
  29.  $ZyskUSL[$i] = $_SESSION['WZyskUSL'][$i];
  30. }
  31. $dataod1 = $_SESSION['data_od'];
  32. $datado2 = $_SESSION['data_do'];
  33.  
  34. /*
  35. echo $opis[0]; echo \"<br>\";
  36. echo $netto[0]; echo \"<br>\";
  37. //echo $grasort[0]; echo \"<br>\";
  38. echo $sprzProcent[0]; echo \"<br>\";
  39. echo $sprzProcentNar[0]; echo \"<br>\";
  40. echo $ProcentProd[0]; echo \"<br>\";
  41. echo $Zysk[0]; echo \"<br>\";
  42. echo $marza[0]; echo \"<br>\";
  43. echo $kategoria[0]; echo \"<br>\";
  44. echo $row_count[0]; echo \"<br>\";
  45. */
  46. /*
  47. echo $grasortUSL[0]; echo \"<br>\";
  48. echo $opisUSL[0]; echo \"<br>\";
  49. echo $nettoUSL[0]; echo \"<br>\";
  50. echo $ZyskUSL[0]; echo \"<br>\";
  51. echo $row_countUSL[1]; echo \"<br>\";
  52. */
  53.  
  54. $fp = fopen(&#092;"tabelka.html\", \"w\");
  55. fputs($fp, &#092;"<center>\");
  56. fputs($fp, &#092;"<table border=1 width=100% class=rap cellspacing=1px>\");
  57. fputs($fp, &#092;"<tr align=center><th class=log colspan=9 align=center>Sprzedaż netto wg. asortymentu</td></tr>\");
  58. fputs($fp, &#092;"<tr align=center><td class=rap colspan=9 align=left>Dataod:\".$dataod1.\"</td></tr>\");
  59. fputs($fp, &#092;"<tr align=center><td class=rap colspan=9 align=left>Datado:\".$datado2.\"</td></tr>\");
  60. fputs($fp, &#092;"<tr align=center><th class=log>Lp</th><th class=log>Opis asortymentu</th><th class=log>Netto sprzedaży</th><th class=log>Procent sprz.</th><th class=log>Sprzedaż narast.</th><th class=log>Procent asort.</th><th class=log>Zysk</th><th class=log>Marża</th><th class=log>Kat</th></tr>\");
  61. for($i=0;$i<$count;$i++)
  62. {
  63. fputs($fp, &#092;"<tr>\");
  64. fputs($fp, &#092;"<td class=rap width=30>\".($i+1).\"</td>\");
  65. fputs($fp, &#092;"<td class=rap width=140>\".iconv(\"CP852\",\"ISO-8859-2\",$opis[$i]).\"</td>\");
  66. fputs($fp, &#092;"<td class=rap align=right>\".number_format($netto[$i],2,'.',' ').\"</td>\");
  67. fputs($fp, &#092;"<td class=rap align=right width=80>\".number_format($sprzProcent[$i],2,'.',' ').\"</td>\");
  68. fputs($fp, &#092;"<td class=rap align=right width=80>\".number_format($sprzProcentNar[$i],2,'.',' ').\"</td>\");
  69. fputs($fp, &#092;"<td class=rap align=right width=80>\".number_format($ProcentProd[$i],2,'.',' ').\"</td>\");
  70. fputs($fp, &#092;"<td class=rap align=right>\".number_format($Zysk[$i],2,'.',' ').\"</td>\");
  71. fputs($fp, &#092;"<td class=rap align=right width=55>\".number_format($marza[$i],2,'.',' ').\"</td>\");
  72. fputs($fp, &#092;"<td class=rap align=right width=35>\".$kategoria[$i].\"</td>\");
  73. fputs($fp, &#092;"</tr>\");
  74. $suma_netto = $suma_netto + $netto[$i];
  75. $suma_zysk = $suma_zysk + $Zysk[$i];
  76. }
  77. fputs($fp, &#092;"<tr>\");
  78. fputs($fp, &#092;"<td class=rap align=left><b></b></td>\");
  79. fputs($fp, &#092;"<td class=rap align=right><b>OGÓLEM</b></td>\");
  80. fputs($fp, &#092;"<td class=rap align=right><b>\".number_format($suma_netto,2,'.',' ').\"</b></td>\");
  81. fputs($fp, &#092;"<td class=rap align=left><b></b></td>\");
  82. fputs($fp, &#092;"<td class=rap align=left><b></b></td>\");
  83. fputs($fp, &#092;"<td class=rap align=left><b></b></td>\");
  84. fputs($fp, &#092;"<td class=rap align=right><b>\".number_format($suma_zysk,2,'.',' ').\"</b></td>\");
  85. fputs($fp, &#092;"<td class=rap align=right><b>\".number_format(($suma_zysk/$suma_netto)*100,2,'.',' ').\"</b></td>\");
  86. fputs($fp, &#092;"<td class=rap align=left><b></b></td>\");
  87. fputs($fp, &#092;"</tr>\");
  88. fputs($fp, &#092;"<tr>\");
  89. fputs($fp, &#092;"<td class=rap align=left><b></b></td>\");
  90. fputs($fp, &#092;"<td class=rap align=right><b>\".iconv(\"CP852\",\"ISO-8859-2\",$opisUSL[0]).\"</b></td>\");
  91. fputs($fp, &#092;"<td class=rap align=right><b>\".number_format($nettoUSL[0],2,'.',' ').\"</b></td>\");
  92. fputs($fp, &#092;"<td class=rap align=left><b></b></td>\");
  93. fputs($fp, &#092;"<td class=rap align=left><b></b></td>\");
  94. fputs($fp, &#092;"<td class=rap align=left><b></b></td>\");
  95. fputs($fp, &#092;"<td class=rap align=right><b>\".number_format($ZyskUSL[0],2,'.',' ').\"</b></td>\");
  96. fputs($fp, &#092;"<td class=rap align=left><b></b></td>\");
  97. fputs($fp, &#092;"<td class=rap align=left><b></b></td>\");
  98. fputs($fp, &#092;"</tr>\");
  99. fputs($fp, &#092;"<tr>\");
  100. fputs($fp, &#092;"<td class=rap align=left><b></b></td>\");
  101. fputs($fp, &#092;"<td class=rap align=right><b>Razem + \".iconv(\"CP852\",\"ISO-8859-2\",$opisUSL[0]).\"</b></td>\");
  102. fputs($fp, &#092;"<td class=rap align=right><b>\".number_format($nettoUSL[0]+$suma_netto,2,'.',' ').\"</b></td>\");
  103. fputs($fp, &#092;"<td class=rap align=left><b></b></td>\");
  104. fputs($fp, &#092;"<td class=rap align=left><b></b></td>\");
  105. fputs($fp, &#092;"<td class=rap align=left><b></b></td>\");
  106. fputs($fp, &#092;"<td class=rap align=right><b>\".number_format($ZyskUSL[0]+$suma_zysk,2,'.',' ').\"</b></td>\");
  107. fputs($fp, &#092;"<td class=rap align=right><b>\".number_format(($ZyskUSL[0]+$suma_zysk)/($nettoUSL[0]+$suma_netto)*100,2,'.',' ').\"</b></td>\");
  108. fputs($fp, &#092;"<td class=rap align=left><b></b></td>\");
  109. fputs($fp, &#092;"</tr>\");
  110. fputs($fp, &#092;"</table>\");
  111. fputs($fp, &#092;"</center>\");
  112. fclose($fp);
  113.  
  114.  
  115. $htmlFile = &#092;"tabelka.html\";
  116. $file = fopen($htmlFile,&#092;"r\");
  117. $tamarquivo = filesize($htmlFile);
  118. $buffer = fread($file, $tamarquivo);
  119. fclose($file);
  120.  
  121. $pdf=new HTML2FPDF();
  122. $pdf->AddPage();
  123. $pdf->AddFont('arialpl', '', 'arialpl.php');
  124. $pdf->SetFont('arialpl', '', 11);
  125. //$pdf->AddFont('helvetica', '', 'helvetica.php');
  126. //$pdf->SetFont('helvetica', '', 12);
  127. //$pdf->SetFont('Arial','',11);
  128. $pdf->WriteHTML($buffer);
  129. $pdf->Output();
  130.  
  131. ?>


w wyniku mam
FPDF error: Could not include font definition file
dlaczego?
SongoQ
Masz poprawnie skompilowane fonty? albo nie da sie wciaganc plikow z fontami
polibode
mysle, ze mam gut skompilowane,

1. najpierw zrobilem programikiem, ttf2pt1 pliczki arialpl.afm i arialpl.pfb
2. nastepnie wg. skryptu

  1. <?php
  2. require('makefont.php');
  3. Makefont('arial.ttf', 'arialpl.afm', 'iso-8859-2');
  4. ?>

wygenerowalem pliki arial.php i arial.z
w odpowiedzi makfont

wrzucielem je do fonts skąd korzysta moja aplikacja i raporty...wcześniej pokazalem skryp...aha...korzystam z klasy HTML2FPDF, ale ona korzysta z fpdf...powinno byc gut na moje , ale nicziwo..sad.gif

zapomniałem dodać, ze wszystko działa bez polskich czcionek jesli dam
  1. <?php
  2.  
  3. $pdf=new HTML2FPDF();
  4. $pdf->AddPage();
  5. //$pdf->AddFont('arialpl', '', 'arialpl.php');
  6. //$pdf->SetFont('arialpl', '', 11);
  7. $pdf->SetFont('Arial','',11);
  8. $pdf->WriteHTML($buffer);
  9. $pdf->Output();
  10.  
  11. ?>

no bo wtedy korzysta ze standardowych!
SongoQ
Moze podesle Ci moje fonty i zobaczysz czy skrypt bedzie ok dzialal. Nigdy z fontami do fpdfa nie mialem problemow.
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-2024 Invision Power Services, Inc.