Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [fpdf] duże pliki jednak mało treści
Forum PHP.pl > Forum > PHP
bobek358
Mam problem, napisałem generowanie faktury do PDF jednak mam problem.
Plik faktury ma jedną stronę na której są daty, numer faktury, sprzedawca, nabywca i jedna pozycja w tabelce a waży przeszło 563 KB.
Wiecie może dlaczego taks ie dzieje?
werdan
Zwykły html zamieniasz na pdf czy obrazek?
bobek358
Nie, tekst umieszczam w php za pomocom odpowiednich komend fpdf. W pliku nie ma obrazka.
timon27
Ja korzystam z tcpdf i pliki faktur mają po 50kb, więc nie jest to wina budowy pdf-ów czy klasy.
Pokaż źródło.
maly_swd
Pewnie osadzasz fonty;)
bobek358
Tak wygląda kod generowania faktury:

  1. if ($get_produkt1>0)
  2. {
  3. $Towary[] = array('Usługi pośrednictwa', 1, $get_produkt1, 'ZW');
  4. }
  5.  
  6. // patch do katalogu z fontami
  7. define('FPDF_FONTPATH','Classes/font/');
  8.  
  9. // implementowanie biblioteki
  10. require('Classes/fpdf.php');
  11.  
  12. // implementowanie klasy tworzenia tabelki
  13. require('Classes/skrypt_tabela.php');
  14.  
  15. // implementowanie funkcji wypisywania liczby słownie
  16. require('Classes/liczba_slownie.php');
  17. class PDF extends PDF_MC_Table
  18. {
  19. function Footer()
  20. {
  21. //Go to 1.5 cm from bottom
  22. $this->SetY(-15);
  23. //Select Arial italic 8
  24. $this->SetFont('arial_ce','I',8);
  25. //Print current and total page numbers
  26. $this->Cell(0,10,'Strona '.$this->PageNo().' z {nb}',0,0,'R');
  27. }
  28. }
  29.  
  30. $pdf=new PDF();
  31. $pdf->Open();
  32. $pdf->AliasNbPages();
  33.  
  34. // Dodawanie strony z układem pionowym
  35. $pdf->AddPage('P', 'A4');
  36.  
  37. // definujemy czcionkę do pdf
  38. $pdf->AddFont('arial_ce','','arial_ce.php');
  39. $pdf->AddFont('arial_ce','I','arial_ce_i.php');
  40. $pdf->AddFont('arial_ce','B','arial_ce_b.php');
  41. $pdf->AddFont('arial_ce','BI','arial_ce_bi.php');
  42.  
  43. ////////////////////////////////////////////////////////////////
  44.  
  45.  
  46. // wypisanie informacji że faktura to tylko podgląd
  47. if ($Bufor==1)
  48. {
  49. $pdf -> SetFont('arial_ce', 'B', 13);
  50. $pdf -> SetTextColor(255,0,0);
  51. $pdf->MultiCell(0,5, 'PODGLĄD FAKTURY PRZYGOTOWANEJ DO ZAKSIĘGOWANIA',0, 'C',0);
  52. $pdf->MultiCell(0,1, '______________________________________________________________________',0, 'C',0);
  53. $pdf -> SetTextColor(0,0,0);
  54. // dodanie przerwy 7 mm
  55. $x = $pdf->GetX();
  56. $y = $pdf->GetY();
  57. $pdf->SetXY($x, $y+5);
  58. }
  59.  
  60. // wpisaywanie daty faktury
  61. $pdf -> SetFont('arial_ce', '', 8);
  62. $pdf->MultiCell(0,5, 'Data wystawienia: '.$Data_wystawienia.'',0, 'R',0);
  63. $pdf->MultiCell(0,5, 'Data sprzedaży: '.$Data_sprzedazy.'',0, 'R',0);
  64.  
  65. // dodanie przerwy 7 mm
  66. $x = $pdf->GetX();
  67. $y = $pdf->GetY();
  68. $pdf->SetXY($x, $y+5);
  69.  
  70. // wypisanie numery faktury
  71. $pdf -> SetFont('arial_ce', 'B', 13);
  72. $pdf->MultiCell(0,5, 'Faktura VAT Nr: '.$Numer_faktury.'',0, 'C',0);
  73.  
  74. // dodanie przerwy 7 mm
  75. $x = $pdf->GetX();
  76. $y = $pdf->GetY();
  77. $pdf->SetXY($x, $y+5);
  78.  
  79. // wypisanie oryginał kopia
  80. $pdf -> SetFont('arial_ce', 'B', 11);
  81. $pdf->MultiCell(0,5, 'ORYGINAŁ / KOPIA',0, 'R',0);
  82.  
  83. // dodanie przerwy 7 mm
  84. $x = $pdf->GetX();
  85. $y = $pdf->GetY();
  86. $pdf->SetXY($x, $y+5);
  87.  
  88.  
  89.  
  90.  
  91. /////////////////////////////////////////////////////////////////////////////////////
  92.  
  93. // nagłówek sprzedawca wystawca
  94. $pdf -> SetFont('arial_ce', 'B', 8);
  95. $pdf->Cell(95,10, 'Sprzedawca:',0, 0, 'L',0);
  96. $pdf->Cell(95,10, 'Wystawiający w imieniu sprzedawcy',0, 1, 'L',0);
  97. $pdf -> SetFont('arial_ce', '', 8);
  98.  
  99.  
  100. // dane sprzedawcy
  101. $x = $pdf->GetX();
  102. $y = $pdf->GetY();
  103. $pdf->SetXY($x+10, $y);
  104. $pdf->MultiCell(80,5, $Dane_sprzedawca,0, 'L',0);
  105.  
  106.  
  107. // dane wystawiającego
  108. $x = $pdf->GetX();
  109. //$y = $pdf->GetY();
  110. $pdf->SetXY($x+105, $y);
  111. $pdf->MultiCell(80,5, "".$Spr_wys_nazwa_firmy."\n".$Spr_wys_kod_pocztowy." ".$Spr_wys_miasto.", ".$Spr_wys_adres." ".$Spr_wys_numer_domu."\nREGON: ".$Spr_wys_regon."\nNIP: ".$Spr_wys_nip."" ,0, 'L',0);
  112.  
  113. // przerwa
  114. $pdf->MultiCell(0,8, '' ,0, 'L',0);
  115.  
  116. // nagłówek nabywca
  117. $pdf -> SetFont('arial_ce', 'B', 8);
  118. $pdf->MultiCell(95,7, 'Nabywca:',0, 'L',0);
  119. $pdf -> SetFont('arial_ce', '', 8);
  120.  
  121. //dane nabywcy faktury
  122. $x = $pdf->GetX();
  123. $y = $pdf->GetY();
  124. $pdf->SetXY($x+10, $y);
  125. $pdf->MultiCell(85,5, "".$Na_nazwa_firmy."\n".$Na_kod_pocztowy." ".$Na_miasto.", ".$Na_adres." ".$Na_numer_domu."\nREGON: ".$Na_regon."\nNIP: ".$Na_nip."" ,0, 'L',0);
  126.  
  127.  
  128. // dodanie przerwy 10
  129. $x = $pdf->GetX();
  130. $y = $pdf->GetY();
  131. $pdf->SetXY($x, $y+3);
  132.  
  133.  
  134.  
  135. ///////////////////////////////////////////////////////////////////////////
  136.  
  137. // tabelka z produktami
  138.  
  139.  
  140. $pdf->Cell(10,7, 'Lp.' ,1, 0, 'C',0);
  141. $pdf->Cell(50,7, 'Nazwa towaru/usługi' ,1, 0, 'C',0);
  142. $pdf->Cell(10,7, 'Ilość' ,1, 0, 'C',0);
  143. $pdf->Cell(25,7, 'Cena netto' ,1, 0, 'C',0);
  144. $pdf->Cell(10,7, 'VAT' ,1, 0, 'C',0);
  145. $pdf->Cell(25,7, 'Wartość netto' ,1, 0, 'C',0);
  146. $pdf->Cell(25,7, 'Kwota VAT' ,1, 0, 'C',0);
  147. $pdf->Cell(30,7, 'Wartość brutto' ,1, 1, 'C',0);
  148.  
  149. //tabelka z 8 kolumnami
  150. $pdf->SetWidths(array(10, 50, 10, 25, 10, 25, 25, 30));
  151. srand(microtime()*1000000);
  152. $pdf->SetAligns(array('C', 'L', 'C', 'R', 'R', 'R', 'R', 'R'));
  153.  
  154. $Suma_wartosc_netto = 0;
  155. $Suma_kwota_vat = 0;
  156. $Suma_wartosc_brutto = 0;
  157.  
  158. for($i=0; $i<count($Towary); $i++)
  159. {
  160. $lp = $i + 1;
  161. $Towar_nazwa = $Towary[$i][0];
  162. $Towar_ilosc = $Towary[$i][1];
  163. $Towar_cena_netto = $Towary[$i][2];
  164. $Towar_vat = $Towary[$i][3];
  165. $Towar_wartosc_netto = $Towar_ilosc * $Towar_cena_netto;
  166. $Towar_kwota_vat = round((($Towar_wartosc_netto * $Towar_vat) / 100), 2);
  167. $Towar_wartosc_brutto = $Towar_wartosc_netto + $Towar_kwota_vat;
  168.  
  169. $Suma_wartosc_netto = $Suma_wartosc_netto + $Towar_wartosc_netto;
  170. $Suma_kwota_vat = $Suma_kwota_vat + $Towar_kwota_vat;
  171. $Suma_wartosc_brutto = $Suma_wartosc_brutto + $Towar_wartosc_brutto;
  172.  
  173. $pdf->Row(array($lp.'.', $Towar_nazwa, $Towar_ilosc, number_format($Towar_cena_netto, 2, ',', ' ').' zł', $Towar_vat, number_format($Towar_wartosc_netto, 2, ',', ' ').' zł', number_format($Towar_kwota_vat, 2, ',', ' ').' zł', number_format($Towar_wartosc_brutto, 2, ',', ' ').' zł'));
  174.  
  175. // liczenie poszczególnych stawek VAT
  176.  
  177. // sprawdzamy czy dana stawka jest już w tablicy i czy jest już taka wartość VAT
  178. if (isset($Stawki_VAT) && array_key_exists($Towar_vat, $Stawki_VAT))
  179. {
  180. // jeśli tak, to dodajemy do poprzednich sumowań dane aktualnego produktu
  181. $Stawki_VAT[$Towar_vat][0] = $Stawki_VAT[$Towar_vat][0] + $Towar_wartosc_netto;
  182. $Stawki_VAT[$Towar_vat][1] = $Stawki_VAT[$Towar_vat][1] + $Towar_kwota_vat;
  183. $Stawki_VAT[$Towar_vat][2] = $Stawki_VAT[$Towar_vat][2] + $Towar_wartosc_brutto;
  184. }
  185. else
  186. {
  187. // jeśli nie ma w tablicy to dodajemy nową stawkę
  188. $Stawki_VAT[$Towar_vat] = array($Towar_wartosc_netto, $Towar_kwota_vat, $Towar_wartosc_brutto);
  189.  
  190. }
  191.  
  192.  
  193. }
  194.  
  195. // sekcja razem
  196. $pdf -> SetFont('arial_ce', 'B', 8);
  197. $x = $pdf->GetX();
  198. $y = $pdf->GetY();
  199. $pdf->SetXY($x+70, $y);
  200. $pdf->MultiCell(25,7, 'Razem:' ,0, 'R',0);
  201. $pdf->SetXY($x+95, $y);
  202. $pdf->MultiCell(10,7, '' ,1, 'R',0);
  203. $pdf->SetXY($x+105, $y);
  204. $pdf->MultiCell(25,7, number_format($Suma_wartosc_netto, 2, ',', ' ').' zł' ,1, 'R',0);
  205. $pdf->SetXY($x+130, $y);
  206. $pdf->MultiCell(25,7, number_format($Suma_kwota_vat, 2, ',', ' ').' zł' ,1, 'R',0);
  207. $pdf->SetXY($x+155, $y);
  208. $pdf->MultiCell(30,7, number_format($Suma_wartosc_brutto, 2, ',', ' ').' zł' ,1, 'R',0);
  209.  
  210.  
  211. // sekcja wyświetlająca VAT
  212.  
  213.  
  214. // wyświetlanie wierszy tabeliwg stawek VAT
  215. //echo '<pre>';
  216. //var_dump($Stawki_VAT);
  217. //echo '</pre>';
  218. krsort($Stawki_VAT );
  219. $Licznik_kontrolny = 0;
  220. foreach ( $Stawki_VAT as $Stawka => $Wartosc_stawki )
  221. {
  222. if($Licznik_kontrolny==0)
  223. $W_tym = 'w tym:';
  224. else
  225. $W_tym = '';
  226.  
  227. if($Stawka=='ZW')
  228. $Stawka = $Stawka;
  229. else if($Stawka > 0)
  230. $Stawka = $Stawka.'%';
  231. else
  232. $Stawka = $Stawka;
  233.  
  234. $pdf -> SetFont('arial_ce', '', 8);
  235. $x = $pdf->GetX();
  236. $y = $pdf->GetY();
  237. $pdf->SetXY($x+70, $y);
  238. $pdf->MultiCell(25,7, $W_tym ,0, 'R',0);
  239. $pdf->SetXY($x+95, $y);
  240. $pdf->MultiCell(10,7, $Stawka ,1, 'R',0);
  241. $pdf->SetXY($x+105, $y);
  242. $pdf->MultiCell(25,7, number_format($Wartosc_stawki[0], 2, ',', ' ').' zł' ,1, 'R',0);
  243. $pdf->SetXY($x+130, $y);
  244. $pdf->MultiCell(25,7, number_format($Wartosc_stawki[1], 2, ',', ' ').' zł' ,1, 'R',0);
  245. $pdf->SetXY($x+155, $y);
  246. $pdf->MultiCell(30,7, number_format($Wartosc_stawki[2], 2, ',', ' ').' zł' ,1, 'R',0);
  247.  
  248. $Licznik_kontrolny++;
  249. }
  250.  
  251.  
  252. // sekcja do zapłaty
  253. $x = $pdf->GetX();
  254. $y = $pdf->GetY();
  255. $pdf->SetXY($x, $y+10);
  256. $pdf->MultiCell(40,10, 'Do zapłaty ogółem:' ,0, 'L',0);
  257. $pdf -> SetFont('arial_ce', 'B', 8);
  258. $pdf->SetXY($x+40, $y+10);
  259. $pdf->MultiCell(50,10, number_format($Suma_wartosc_brutto, 2, ',', ' ').' zł' ,0, 'L',0);
  260.  
  261. // sekcja sposób zapłaty
  262. $pdf -> SetFont('arial_ce', '', 8);
  263. $pdf->SetXY($x+90, $y+10);
  264. $pdf->MultiCell(40,10, 'Sposób zapłaty:' ,0, 'L',0);
  265. $pdf -> SetFont('arial_ce', 'B', 8);
  266. $pdf->SetXY($x+130, $y+10);
  267. $pdf->MultiCell(50,10, "$get_platnosc_1 $get_platnosc_2" ,0, 'L',0);
  268.  
  269. // sekcja do zapłaty słownie
  270. $x = $pdf->GetX();
  271. $y = $pdf->GetY();
  272. $pdf->SetXY($x, $y);
  273. $pdf -> SetFont('arial_ce', '', 8);
  274. $pdf->MultiCell(40,10, 'Do zapłaty słownie:' ,0, 'L',0);
  275. $pdf -> SetFont('arial_ce', 'B', 8);
  276. $pdf->SetXY($x+40, $y);
  277. $pdf -> SetFont('arial_ce', 'I', 8);
  278. $Suma_cle = explode( '.', $Suma_wartosc_brutto);
  279.  
  280. $Suma_cle[1] = substr($Suma_cle[1], 0, 2);
  281. if (strlen($Suma_cle[1])==1) $Suma_cle[1] = $Suma_cle[1]."0";
  282.  
  283. if ($Suma_cle[1]=="") $Suma_cle[1]=0;
  284. $reszta = $Suma_cle[1].'/100 PLN';
  285.  
  286.  
  287. $pdf->MultiCell(0,10, slownie($Suma_cle[0]).' '.$reszta.'' ,0, 'L',0);
  288.  
  289. // informacje o prowizji
  290. $pdf->MultiCell(0,4, '' ,0, 'L',0);
  291. $pdf -> SetFont('arial_ce', '', 6);
  292. $pdf->MultiCell(0,5, 'Prowizja zgodnie z umową agencyjną.' ,0, 'L',0);
  293. $pdf->MultiCell(0,5, "$Informacja" ,0, 'L',0);
  294.  
  295. // podpisy
  296. $pdf->MultiCell(0,15, '' ,0, 'L',0);
  297. $pdf -> SetFont('arial_ce', '', 8);
  298. $pdf->Cell(95,5, 'Potwierdzenie sprzedawcy',0, 0, 'C',0);
  299. $pdf->Cell(95,5, 'Podpis wystawcy faktury VAT',0, 0, 'C',0);
  300.  
  301. // generowanie pliku pdf
  302. if ($generuj_serwer==1)
  303. $pdf -> Output("../faktury/".$_GET['nazwa_pliku']."",'F');
  304. else
  305. $pdf->Output();
  306.  


Ok już wiem jak to obejść.
W plikach fontów za komentowałem dodawanie plikó .z i teraz jest ok.
Plik waży 9 kb i polskie znaki się wyświetlają.
kayman
imo czcionki są dołączane do pliku dlatego się rozrasta

  1. $pdf->AddFont('arial_ce','','arial_ce.php');
  2. $pdf->AddFont('arial_ce','I','arial_ce_i.php');
  3. $pdf->AddFont('arial_ce','B','arial_ce_b.php');
  4. $pdf->AddFont('arial_ce','BI','arial_ce_bi.php');
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.