Tak wygląda kod generowania faktury:
if ($get_produkt1>0)
{
$Towary[] = array('Usługi pośrednictwa', 1
, $get_produkt1, 'ZW'); }
// patch do katalogu z fontami
define('FPDF_FONTPATH','Classes/font/');
// implementowanie biblioteki
require('Classes/fpdf.php');
// implementowanie klasy tworzenia tabelki
require('Classes/skrypt_tabela.php');
// implementowanie funkcji wypisywania liczby słownie
require('Classes/liczba_slownie.php');
class PDF extends PDF_MC_Table
{
function Footer()
{
//Go to 1.5 cm from bottom
$this->SetY(-15);
//Select Arial italic 8
$this->SetFont('arial_ce','I',8);
//Print current and total page numbers
$this->Cell(0,10,'Strona '.$this->PageNo().' z {nb}',0,0,'R');
}
}
$pdf=new PDF();
$pdf->Open();
$pdf->AliasNbPages();
// Dodawanie strony z układem pionowym
$pdf->AddPage('P', 'A4');
// definujemy czcionkę do pdf
$pdf->AddFont('arial_ce','','arial_ce.php');
$pdf->AddFont('arial_ce','I','arial_ce_i.php');
$pdf->AddFont('arial_ce','B','arial_ce_b.php');
$pdf->AddFont('arial_ce','BI','arial_ce_bi.php');
////////////////////////////////////////////////////////////////
// wypisanie informacji że faktura to tylko podgląd
if ($Bufor==1)
{
$pdf -> SetFont('arial_ce', 'B', 13);
$pdf -> SetTextColor(255,0,0);
$pdf->MultiCell(0,5, 'PODGLĄD FAKTURY PRZYGOTOWANEJ DO ZAKSIĘGOWANIA',0, 'C',0);
$pdf->MultiCell(0,1, '______________________________________________________________________',0, 'C',0);
$pdf -> SetTextColor(0,0,0);
// dodanie przerwy 7 mm
$x = $pdf->GetX();
$y = $pdf->GetY();
$pdf->SetXY($x, $y+5);
}
// wpisaywanie daty faktury
$pdf -> SetFont('arial_ce', '', 8);
$pdf->MultiCell(0,5, 'Data wystawienia: '.$Data_wystawienia.'',0, 'R',0);
$pdf->MultiCell(0,5, 'Data sprzedaży: '.$Data_sprzedazy.'',0, 'R',0);
// dodanie przerwy 7 mm
$x = $pdf->GetX();
$y = $pdf->GetY();
$pdf->SetXY($x, $y+5);
// wypisanie numery faktury
$pdf -> SetFont('arial_ce', 'B', 13);
$pdf->MultiCell(0,5, 'Faktura VAT Nr: '.$Numer_faktury.'',0, 'C',0);
// dodanie przerwy 7 mm
$x = $pdf->GetX();
$y = $pdf->GetY();
$pdf->SetXY($x, $y+5);
// wypisanie oryginał kopia
$pdf -> SetFont('arial_ce', 'B', 11);
$pdf->MultiCell(0,5, 'ORYGINAŁ / KOPIA',0, 'R',0);
// dodanie przerwy 7 mm
$x = $pdf->GetX();
$y = $pdf->GetY();
$pdf->SetXY($x, $y+5);
/////////////////////////////////////////////////////////////////////////////////////
// nagłówek sprzedawca wystawca
$pdf -> SetFont('arial_ce', 'B', 8);
$pdf->Cell(95,10, 'Sprzedawca:',0, 0, 'L',0);
$pdf->Cell(95,10, 'Wystawiający w imieniu sprzedawcy',0, 1, 'L',0);
$pdf -> SetFont('arial_ce', '', 8);
// dane sprzedawcy
$x = $pdf->GetX();
$y = $pdf->GetY();
$pdf->SetXY($x+10, $y);
$pdf->MultiCell(80,5, $Dane_sprzedawca,0, 'L',0);
// dane wystawiającego
$x = $pdf->GetX();
//$y = $pdf->GetY();
$pdf->SetXY($x+105, $y);
$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);
// przerwa
$pdf->MultiCell(0,8, '' ,0, 'L',0);
// nagłówek nabywca
$pdf -> SetFont('arial_ce', 'B', 8);
$pdf->MultiCell(95,7, 'Nabywca:',0, 'L',0);
$pdf -> SetFont('arial_ce', '', 8);
//dane nabywcy faktury
$x = $pdf->GetX();
$y = $pdf->GetY();
$pdf->SetXY($x+10, $y);
$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);
// dodanie przerwy 10
$x = $pdf->GetX();
$y = $pdf->GetY();
$pdf->SetXY($x, $y+3);
///////////////////////////////////////////////////////////////////////////
// tabelka z produktami
$pdf->Cell(10,7, 'Lp.' ,1, 0, 'C',0);
$pdf->Cell(50,7, 'Nazwa towaru/usługi' ,1, 0, 'C',0);
$pdf->Cell(10,7, 'Ilość' ,1, 0, 'C',0);
$pdf->Cell(25,7, 'Cena netto' ,1, 0, 'C',0);
$pdf->Cell(10,7, 'VAT' ,1, 0, 'C',0);
$pdf->Cell(25,7, 'Wartość netto' ,1, 0, 'C',0);
$pdf->Cell(25,7, 'Kwota VAT' ,1, 0, 'C',0);
$pdf->Cell(30,7, 'Wartość brutto' ,1, 1, 'C',0);
//tabelka z 8 kolumnami
$pdf->SetWidths(array(10
, 50
, 10
, 25
, 10
, 25
, 25
, 30
)); $pdf->SetAligns(array('C', 'L', 'C', 'R', 'R', 'R', 'R', 'R'));
$Suma_wartosc_netto = 0;
$Suma_kwota_vat = 0;
$Suma_wartosc_brutto = 0;
for($i=0; $i<count($Towary); $i++)
{
$lp = $i + 1;
$Towar_nazwa = $Towary[$i][0];
$Towar_ilosc = $Towary[$i][1];
$Towar_cena_netto = $Towary[$i][2];
$Towar_vat = $Towary[$i][3];
$Towar_wartosc_netto = $Towar_ilosc * $Towar_cena_netto;
$Towar_kwota_vat = round((($Towar_wartosc_netto * $Towar_vat) / 100
), 2
); $Towar_wartosc_brutto = $Towar_wartosc_netto + $Towar_kwota_vat;
$Suma_wartosc_netto = $Suma_wartosc_netto + $Towar_wartosc_netto;
$Suma_kwota_vat = $Suma_kwota_vat + $Towar_kwota_vat;
$Suma_wartosc_brutto = $Suma_wartosc_brutto + $Towar_wartosc_brutto;
$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ł'));
// liczenie poszczególnych stawek VAT
// sprawdzamy czy dana stawka jest już w tablicy i czy jest już taka wartość VAT
{
// jeśli tak, to dodajemy do poprzednich sumowań dane aktualnego produktu
$Stawki_VAT[$Towar_vat][0] = $Stawki_VAT[$Towar_vat][0] + $Towar_wartosc_netto;
$Stawki_VAT[$Towar_vat][1] = $Stawki_VAT[$Towar_vat][1] + $Towar_kwota_vat;
$Stawki_VAT[$Towar_vat][2] = $Stawki_VAT[$Towar_vat][2] + $Towar_wartosc_brutto;
}
else
{
// jeśli nie ma w tablicy to dodajemy nową stawkę
$Stawki_VAT[$Towar_vat] = array($Towar_wartosc_netto, $Towar_kwota_vat, $Towar_wartosc_brutto);
}
}
// sekcja razem
$pdf -> SetFont('arial_ce', 'B', 8);
$x = $pdf->GetX();
$y = $pdf->GetY();
$pdf->SetXY($x+70, $y);
$pdf->MultiCell(25,7, 'Razem:' ,0, 'R',0);
$pdf->SetXY($x+95, $y);
$pdf->MultiCell(10,7, '' ,1, 'R',0);
$pdf->SetXY($x+105, $y);
$pdf->MultiCell(25
,7
, number_format($Suma_wartosc_netto, 2, ',', ' ').' zł' ,1, 'R',0
); $pdf->SetXY($x+130, $y);
$pdf->MultiCell(25
,7
, number_format($Suma_kwota_vat, 2, ',', ' ').' zł' ,1, 'R',0
); $pdf->SetXY($x+155, $y);
$pdf->MultiCell(30
,7
, number_format($Suma_wartosc_brutto, 2, ',', ' ').' zł' ,1, 'R',0
);
// sekcja wyświetlająca VAT
// wyświetlanie wierszy tabeliwg stawek VAT
//echo '<pre>';
//var_dump($Stawki_VAT);
//echo '</pre>';
$Licznik_kontrolny = 0;
foreach ( $Stawki_VAT as $Stawka => $Wartosc_stawki )
{
if($Licznik_kontrolny==0)
$W_tym = 'w tym:';
else
$W_tym = '';
if($Stawka=='ZW')
$Stawka = $Stawka;
else if($Stawka > 0)
$Stawka = $Stawka.'%';
else
$Stawka = $Stawka;
$pdf -> SetFont('arial_ce', '', 8);
$x = $pdf->GetX();
$y = $pdf->GetY();
$pdf->SetXY($x+70, $y);
$pdf->MultiCell(25,7, $W_tym ,0, 'R',0);
$pdf->SetXY($x+95, $y);
$pdf->MultiCell(10,7, $Stawka ,1, 'R',0);
$pdf->SetXY($x+105, $y);
$pdf->MultiCell(25
,7
, number_format($Wartosc_stawki[0], 2, ',', ' ').' zł' ,1, 'R',0
); $pdf->SetXY($x+130, $y);
$pdf->MultiCell(25
,7
, number_format($Wartosc_stawki[1], 2, ',', ' ').' zł' ,1, 'R',0
); $pdf->SetXY($x+155, $y);
$pdf->MultiCell(30
,7
, number_format($Wartosc_stawki[2], 2, ',', ' ').' zł' ,1, 'R',0
);
$Licznik_kontrolny++;
}
// sekcja do zapłaty
$x = $pdf->GetX();
$y = $pdf->GetY();
$pdf->SetXY($x, $y+10);
$pdf->MultiCell(40,10, 'Do zapłaty ogółem:' ,0, 'L',0);
$pdf -> SetFont('arial_ce', 'B', 8);
$pdf->SetXY($x+40, $y+10);
$pdf->MultiCell(50
,10
, number_format($Suma_wartosc_brutto, 2, ',', ' ').' zł' ,0, 'L',0
);
// sekcja sposób zapłaty
$pdf -> SetFont('arial_ce', '', 8);
$pdf->SetXY($x+90, $y+10);
$pdf->MultiCell(40,10, 'Sposób zapłaty:' ,0, 'L',0);
$pdf -> SetFont('arial_ce', 'B', 8);
$pdf->SetXY($x+130, $y+10);
$pdf->MultiCell(50,10, "$get_platnosc_1 $get_platnosc_2" ,0, 'L',0);
// sekcja do zapłaty słownie
$x = $pdf->GetX();
$y = $pdf->GetY();
$pdf->SetXY($x, $y);
$pdf -> SetFont('arial_ce', '', 8);
$pdf->MultiCell(40,10, 'Do zapłaty słownie:' ,0, 'L',0);
$pdf -> SetFont('arial_ce', 'B', 8);
$pdf->SetXY($x+40, $y);
$pdf -> SetFont('arial_ce', 'I', 8);
$Suma_cle = explode( '.', $Suma_wartosc_brutto);
$Suma_cle[1
] = substr($Suma_cle[1
], 0
, 2
); if (strlen($Suma_cle[1
])==1
) $Suma_cle[1
] = $Suma_cle[1]."0";
if ($Suma_cle[1]=="") $Suma_cle[1]=0;
$reszta = $Suma_cle[1].'/100 PLN';
$pdf->MultiCell(0,10, slownie($Suma_cle[0]).' '.$reszta.'' ,0, 'L',0);
// informacje o prowizji
$pdf->MultiCell(0,4, '' ,0, 'L',0);
$pdf -> SetFont('arial_ce', '', 6);
$pdf->MultiCell(0,5, 'Prowizja zgodnie z umową agencyjną.' ,0, 'L',0);
$pdf->MultiCell(0,5, "$Informacja" ,0, 'L',0);
// podpisy
$pdf->MultiCell(0,15, '' ,0, 'L',0);
$pdf -> SetFont('arial_ce', '', 8);
$pdf->Cell(95,5, 'Potwierdzenie sprzedawcy',0, 0, 'C',0);
$pdf->Cell(95,5, 'Podpis wystawcy faktury VAT',0, 0, 'C',0);
// generowanie pliku pdf
if ($generuj_serwer==1)
$pdf -> Output("../faktury/".$_GET['nazwa_pliku']."",'F');
else
$pdf->Output();
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ą.