Ciao, ho trovato il tuo post cercando aiuti su FPDF, se ti serve ancora ti posto come ho realizzato io la mia fattura:
Nella cartella fpdf/models/ ho creato il file Fattura.mod (con blok notes):
this.Header=function Header()
{
this.Image('images/### nome immagine ###.JPG',10,8,45);
this.SetFont('Arial','B',20);
this.SetTextColor(43,134,43);
this.Ln(5);
this.Cell(80);
this.Cell(0,8,'### nome ditta ###',0,1,'L');
this.SetDrawColor(43,134,43);
this.Line(90,23,200,23);
this.SetFont('Arial','',10);
this.SetTextColor(179,181,179);
this.Cell(0,6,'### sottotitolo nome ditta ###',0,1,'R');
this.Ln(3);
this.SetFont('Arial','',12);
this.Cell(0,5,'### indirizzo ###',0,1,'R');
this.Cell(0,5,'### telefono ###',0,1,'R');
this.Cell(0,5,'### P.IVA / C.F. ###',0,1,'R');
this.SetTextColor(0,0,0);
this.Ln(5);
}
this.Footer=function Footer()
{
this.SetY(-12);
this.SetFont('Arial','',8);
this.SetTextColor(50,32,210);
this.Cell(20,5,'fattura generata in automatico da ### nome applicazione ###',0,0,'L');
this.SetFont('Arial','I',8);
this.SetTextColor(0,0,0);
this.Cell(80,5,'Page '+ this.PageNo()+ '/{nb}',0,0,'R');
this.Cell(90,5,'S. E. & O.',0,1,'R');
}
questo invece il file che genera la fattura:
<!--#include file="fpdf.asp"-->
<!--#include file="### connessione al database ###"-->
<%
' ### qua tutte le query necessarie ###
Dim i, pdf
Set pdf=CreateJsObject("FPDF")
pdf.CreatePDF()
pdf.SetPath("fpdf/")
pdf.Open()
pdf.LoadModels("Fattura") ' il nome del modello (mod) è specificato senza estensione.
pdf.AddPage()
'impostazione dati visibili nelle proprietà del documento una volta salvato
pdf.SetAuthor "### autore ###" ' autore, và nelle proprietà
pdf.SetCreator "### applicazione ###" ' applicazione che ha generato il documento (Gestione fatture")
pdf.SetSubject "Fattura n° "& RSfatt("ftt_numero") & "/" & Mid(RSfatt("ftt_data"), 3, 2) ' oggetto del documento
pdf.SetTitle "Fattura" ' titolo del documento
pdf.SetCreationDate Now() ' data creazione del documento (puoi inserire anche l'ora)
pdf.SetDisplayMode "real" ' modalità di apertura del documento (real = 100%)
pdf.SetTextColor 0,0,0
' inserimento N° scontrino se esistente
If RSfatt("ftt_scontrino_num") <> "" AND Len(RSfatt("ftt_scontrino_data")) = 8 Then
pdf.SetFont "Arial","B",10
pdf.Cell 25,6,"Scontrino N°",0,0,"L"
' campo numero scontrino
pdf.Cell 15,6, RSfatt("ftt_scontrino_num"),0,0,"L",0
pdf.Cell 8,6,"del",0,0,"L"
' data scontrino
pdf.Cell 10,6,StrToData(RSfatt("ftt_scontrino_data")),0,0,"L",0
pdf.Cell 23
Else
pdf.Cell 80
End If
pdf.SetFont "Arial","B",12
pdf.Cell 35,6,"Fattura N°",0,0,"R"
' colore di sfondo della cella
pdf.SetFillColor 255,204,1
' campo numero fattura
pdf.Cell 25,6, RSfatt("ftt_numero") & "/" & Mid(RSfatt("ftt_data"), 3, 2),1,0,"R",1
pdf.Cell 20,6,"del",0,0,"R"
' data fattura
pdf.Cell 30,6,StrToData(RSfatt("ftt_data")),1,0,"R",1 ' inserire campo data fattura
pdf.Ln(15)
pdf.SetTextColor 0,0,0
pdf.SetFont "Arial","B",12
pdf.Cell 93,5,"",0,0
pdf.Cell 92,5,"Spett.le",0,1
pdf.SetTextColor 0,0,0
'recupero le coordinate correnti
x=pdf.GetX()
y=pdf.GetY()
pdf.Cell 93,5,"",0,1
'imposto la nuova coordinata per la seconda multicella
pdf.SetXY x+93,y
'colore testo nero
pdf.SetTextColor 0,0,0
pdf.MultiCell 97,6,VediTesto(RScli("cli_nome")),0
pdf.Ln(6)
pdf.Cell 30,5,"P. IVA - C.F. " & "",0
pdf.Cell 50,5,VediTesto(RScli("cli_piva")),0,1 ' campo P.IVA o C.F.
'preparo la stringa del pagamento
If RSfatt("ftt_pagata") = 2 Then
StrPagamento = "Effettuato con "
ElseIf RSfatt("ftt_pagata") = 1 Then
StrPagamento = "Acconto "& VisualizzaPrezzo(RSfatt("ftt_acconto")) &" ? con "
ElseIf RSfatt("ftt_pagata") = 0 Then
StrPagamento = ""
End If
StrPagamento = StrPagamento & LCase(VediTesto(RSpaga("pag_tipo")))
pdf.Cell 30,5,"Pagamento:",0
pdf.Cell 160,5,StrPagamento,0,1 ' campo pagamento
pdf.Ln(4)
'colore di sfondo della cella
pdf.SetFillColor 193,193,193
pdf.SetTextColor 0,0,0
pdf.SetFont "Arial","B",10
pdf.Cell 15,6,"Numero",1,0,"",1
pdf.Cell 120,6,"Descrizione",1,0,"",1
pdf.Cell 20,6,"Importo",1,0,"C",1
pdf.Cell 15,6,"% IVA",1,0,"C",1
pdf.Cell 20,6,"Imponibile",1,1,"C",1
pdf.SetFillColor 0,0,0
pdf.Cell 15,6,"","LR",0
pdf.Cell 120,6,"","R",0
pdf.Cell 20,6,"","R",0
pdf.Cell 15,6,"","R",0
pdf.Cell 20,6,"","R",1
'imposto carattere proporzionale
pdf.SetFont "Courier","",8
'INIZIO LOOP RIGHE FATTURA
Do While Not RSriga.EOF
' ### SEGNO #######
If RSriga("fttr_segno") = 0 Then
Segno = ""
pdf.SetTextColor 0,0,0
Else
Segno = "- "
pdf.SetTextColor 255,0,0
End If
pdf.Cell 3,6,"n°","L",0
'quantità
pdf.Cell 12,6,String(6 - Len(FormatNumber(RSriga("fttr_qtt"), 0)), chr(160)) & FormatNumber(RSriga("fttr_qtt"), 0),0
'x e y recupero la posizione iniziale della multicella
x=pdf.GetX()
y=pdf.GetY()
w = 120
'descrizione
pdf.MultiCell w,6,VediTesto(RSriga("fttr_dsc")),"LR","J"
'y2 recupero la posizione finale della multicella
y2=pdf.GetY()
'stampo una serie di righe vuote solo con il bordo sinistro sotto a n° SOLO SE USATA MULTICELLA
If y+6 < y2 Then
For ix = y To y2-6 Step 6
pdf.SetXY x-15,ix
pdf.Cell 15,6,"","L",0
Next
End If
'stampo una serie di righe vuote solo con i bordi fino alla fine della scritta nella multicella (y2-6 [-6 perchè è l'altezza della linea])
If y+6 < y2 Then
For ix = y To y2-6 Step 6
pdf.SetXY x+w,ix
pdf.Cell 20,6,"","R",0
pdf.Cell 15,6,"","R",0
pdf.Cell 20,6,"","R",1
Next
End If
'imposto la posizione finale della multicella (-6 per tornare allineato all'ultima riga della multicella
pdf.SetXY x+w,y2-6
'Importo Len(Segno) +
pdf.Cell 20,6,String(10 - Len(FormatNumber(VisualizzaPrezzo(RSriga("fttr_imp")), 2,,,-1) & Segno), chr(160)) & Segno & FormatNumber(VisualizzaPrezzo(RSriga("fttr_imp")), 2,,,-1),"R",0
'% IVA
pdf.Cell 15,6,String(5 - Len(RSriga("fttr_iva")), chr(160)) & RSriga("fttr_iva"),"R",0
'imponibile
pdf.Cell 20,6,String(10 - Len(FormatNumber(VisualizzaPrezzo(RSriga("fttr_imp_tt")), 2,,,-1) & Segno), chr(160)) & Segno & FormatNumber(VisualizzaPrezzo(RSriga("fttr_imp_tt")), 2,,,-1),"R",1
'FINE LOOP RIGHE
RSriga.MoveNext
Loop
'se non ci sono più righe da stampare riempio con celle che creano solo i bordi:
y=pdf.GetY() ' recupero il valore di Y corrente
For ix = y To 260.00125 Step 6
pdf.Cell 15,6,"","LR",0
pdf.Cell 120,6,"","R"
pdf.Cell 20,6,"","R",0
pdf.Cell 15,6,"","R",0
pdf.Cell 20,6,"","R",1
Next
pdf.SetTextColor 0,0,0
pdf.Cell 150,6,"Imponibile ","LT",0,"R"
pdf.Cell 5,6,"?","T"
pdf.Cell 35,6,String(19 - Len(FormatNumber(VisualizzaPrezzo(RSfatt("ftt_imp")), 2,,,-1)), chr(160)) & FormatNumber(VisualizzaPrezzo(RSfatt("ftt_imp")), 2,,,-1),"TR",1 ' campo imponibile
pdf.Cell 150,6,"I.V.A. 20% ","L",0,"R"
pdf.Cell 5,6,"?"
pdf.Cell 35,6,String(19 - Len(FormatNumber(VisualizzaPrezzo(RSfatt("ftt_iva")), 2,,,-1)), chr(160)) & FormatNumber(VisualizzaPrezzo(RSfatt("ftt_iva")), 2,,,-1),"R",1 ' campo IVA
pdf.SetFont "Courier","B",12
pdf.Cell 150,6,"Totale fattura ","LTB",0,"R"
'colore di sfondo della cella
pdf.SetFillColor 255,204,1
pdf.Cell 5,6,"?","LTB",0,"L",1
pdf.Cell 35,6,String(18 - Len(FormatNumber(VisualizzaPrezzo(RSfatt("ftt_tot")), 2,,,-1)), chr(160)) & FormatNumber(VisualizzaPrezzo(RSfatt("ftt_tot")), 2,,,-1),"TRBR",0,"R",1 ' campo totale fattura
pdf.Close()
'salvo la fattura
NomeFile = String(5 - Len(RSfatt("ftt_numero")), "0") & RSfatt("ftt_numero") & "_" & Mid(RSfatt("ftt_data"), 3, 2) & ".pdf"
reportPath = server.mapPath(PathFattCli & NomeFile) ' ### PathFattCli = cartella con permessi di scrittura nella forma (esempio) "/Public/fatture_cli/"
x = pdf.Output(reportPath,"F",true)
'se in Q.S. è passato invia = s invio il file come allegato mail SOLO SE il cliente ha un indirizzo mail valido
If (Request("invia") = "s" OR aggiorna = "s") AND (VediTesto(RScli("cli_mail1")) <> "") Then
InvioMailHTMLAllegato MailAdmin, VediTesto(RScli("cli_mail1")), "Invio fattura", "<font face='Trebuchet MS' size='2'>Allegata fattura.<br /><br />Lo scontrino fiscale da allegare alla fattura, ed indicato nella fattura, lo trovate insieme al materiale ordinato.<br /><br />Ai sensi dell'Art.21 DPR 633/1972 ed interpretazioni di cui alle RM571134/1988. RM450217/1990. RM451163/1990. RM132/E/1997 e RM107/E/2001, si trasmette fattura tramite e-mail che si considera quindi emessa e spedita in originale.<br /><br />Sarà vostra cura la stampa su supporto cartaceo (risoluzione del 04/07/2001 n. 107).</font><br /><br />"& FirmaMail, PathFattCli & NomeFile
End If
'in ogni caso mi invio una copia della fattura
InvioMailHTMLAllegato MailAdmin, MailAdmin, "Invio fattura "& RSfatt("ftt_numero") & "/" & Mid(RSfatt("ftt_data"), 3, 2), "<font face='Trebuchet MS' size='2'>Allegata fattura "& RSfatt("ftt_numero") & "/" & Mid(RSfatt("ftt_data"), 3, 2) &"</font>", PathFattCli & NomeFile
' visualizzo la fattura
pdf.Output()
Set pdf = Nothing
%>
non ho implementato il salto pagina perchè le mie fatture sono sempre piccole :bho:
dove trovi ### devi inserire i tuoi dati
ciao, fulvio