Visualizzazione dei risultati da 1 a 8 su 8

Discussione: fpdf salto pagina

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    95

    fpdf salto pagina

    Buonasera a tutti.
    Stò utilizzando la fantastica classe fpdf per stampare una conferma d'ordine per un lavoro che ho fatto.
    Tutto bene solo che se il documento è di più pagine succede che la prima riga della seconda pagina mi viene fuori tutta spostata a destra ed esce dal margine della pagina.
    Utilizzo il salto pagina automatico.

    A qualcuno è capitato questo problema?

    Grazie 1000

  2. #2
    Ciao,

    io uso "pdf.AddPage()" e riparto con le coordinate della pima riga e viene tutto perfetto, per il "salto pagina automatico" che funzione usi?

    fulvio

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    95
    utilizzo la funzione SetAutoPageBreak

  4. #4
    Ciao,

    non so come generi la pagina, io ad esempio per le fatture ad ogni riga verifico il valore Y:
    codice:
    y=pdf.GetY()
    se y è uguale o maggiore di 230:
    codice:
    If y >= 230 Then
    effettuo il salto pagina con la funzione pdf.AddPage() ed imposto l'header e tutto il resto...

    fulvio

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    95
    Grazie fulvio, provo ad usare il tuo suggerimento.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    95
    Scusami riapro la discussione.
    Ma dopo aver verificato il valore di y aggiungi la pagina e poi come prendo il resto delle righe, cioè gli articoli da mettere sulla seconda pagina?.

    Grazie

  7. #7
    Ciao,

    dipende da come crei la pagina... io genero le fatture con un loop sulle righe fattura, quando y > 230 aggiungo una nuova pagina, ristampo l'header e poi continuo con il loop nella query, esempio:
    codice:
    '.........
    'ciclo tra le righe fattura
    SQLriga = " SELECT * FROM fattura_riga WHERE " '........
    Set RSriga = Conn.Execute(SQLriga)
    
    '#################################################################################################	
    '	INIZIO APPLICAZIONE FPDF
    '#################################################################################################	
    
    Set pdf=CreateJsObject("FPDF")
    	pdf.CreatePDF()
    	pdf.SetPath("script/fpdf/")
    	pdf.Open()
    		
    		NumeroPagina = "1"
    		Testa()
    		Corpo()
    
    	pdf.Close()
    
    	NomeFile = NomeFatturaCli
    	PatFpdf = "/" & PathFattureCliUp & Cstr(ftt_anno) & "/"
    	reportPath = server.mapPath(PatFpdf & NomeFile)
    	x = pdf.Output(reportPath,"F",true)
    	
    	If Request("vedi") = "s" Then
    		Response.Redirect(PatFpdf & NomeFile)
    	End If
    
    Set pdf = Nothing
    le due funzioni:
    codice:
    Function Testa()
    	pdf.AddPage()
    	
    	'impostazione dati visibili nelle proprietà del documento una volta salvato
    	pdf.SetAuthor ng_nome							'	autore, và nelle proprietà - ci andrebbe il nume della società che emette il documento
    	pdf.SetCreator "Gestionale"			'	applicazione che ha generato il documento (Gestione fatture")
    	pdf.SetSubject "Fattura n° "& RSft("ftt_numero") & "/" & Mid(RSft("ftt_anno"), 3, 2)			'	oggetto del documento
    	pdf.SetTitle "Fattura Cliente"					'	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%)
    
    '###	logo mittente
    	pdf.Image PathLogoMittente,10,10,LarghezzaLogoMittente/3.5,AltezzaLogoMittente/3.5,"jpg"
    	
    	'###	imposto nuova X
    	pdf.SetX LarghezzaLogoMittente/3.5+19		
    
    '### 	chi emette la fattura
    	pdf.SetFont "Helvetica","B",12
    	pdf.Cell 50,5,ng_nome,0,1
    	
    	pdf.SetFont "Helvetica","",10
    	
    '### 	via di chi emette la fattura
    	pdf.SetX LarghezzaLogoMittente/3.5+19		
    	pdf.Cell 50,5,ng_via,0,1
    	
    '### 	citta di chi emette la fattura
    	pdf.SetX LarghezzaLogoMittente/3.5+19		
    	pdf.Cell 50,5,ng_cap & " " & ng_citta & " " & ng_provincia,0,1
    	
    	pdf.Ln(2) 
    	
    '### 	telefono e fax di chi emette la fattura
    	pdf.SetX LarghezzaLogoMittente/3.5+19		
    	pdf.Cell 50,5,"Tel. "& ng_telefono & " Fax " & ng_fax,0,1
    	
    '### 	P IVA e CF di chi emette la fattura
    	pdf.SetX LarghezzaLogoMittente/3.5+19		
    	pdf.Cell 50,5,"P.IVA "& ng_piva & " C.F. " & ng_cf,0,1
    	
    	pdf.SetY AltezzaLogoMittente/3.5+15	
    	'recupero il valore di y
    	y=pdf.GetY() 
    
    	'colore di sfondo dellE cellE
    	pdf.SetFillColor 193,210,254
    
    '### 	Scontrino fiscale
    	pdf.SetXY 10,y
    	pdf.SetFont "Helvetica","B",10
    	pdf.MultiCell 40,5,"Scontrino fiscale N° ",0,"L"
    	pdf.SetXY 50,y
    	pdf.MultiCell 8,5,RSft("ftt_scontrino_num"),"LTRB","C",1
    
    	pdf.SetXY 60,y
    	
    	pdf.MultiCell 9,5," del ",0,"L"
    	pdf.SetXY 75,y
    	pdf.MultiCell 25,5,StrToData(RSft("ftt_scontrino_data")),"LTRB","C",1
    	
    '### 	numero fattura
    	pdf.SetXY LarghezzaLogoMittente/3.5+19,y
    	pdf.MultiCell 20,5,"Fattura N° ",0,"L"
    	pdf.SetXY LarghezzaLogoMittente/3.5+39,y
    
    	pdf.SetFont "Helvetica","B",10
    	pdf.MultiCell 20,5,RSft("ftt_numero"),"LTRB","C",1
    
    '### 	data fattura
    	pdf.SetXY LarghezzaLogoMittente/3.5+60,y
    	pdf.MultiCell 10,5,"del",0,"L"
    	pdf.SetXY LarghezzaLogoMittente/3.5+70,y
    
    	pdf.SetFont "Helvetica","B",10
    	pdf.MultiCell 25,5,StrToData(RSft("ftt_data")),"LTRB","C",1
    
    '### 	numero pagina
    	pdf.SetXY LarghezzaLogoMittente/3.5+100,y
    	pdf.SetFont "Helvetica","B",8
    	pdf.MultiCell 25,5,"Pag. " & NumeroPagina,0,"L"
    
    	pdf.Ln(2) 
    
    	y=pdf.GetY() 
    
    '### 	pagamento
    	pdf.SetXY 10,y
    	pdf.MultiCell 25,5,"Pagamento: ",0,"L"
    	pdf.SetXY 35,y
    	pdf.SetFont "Helvetica","B",10
    	pdf.MultiCell 0,5,ftt_pagata,0
    
    	pdf.Ln(2) 
    
    	pdf.SetFont "Helvetica","B",7
    	pdf.SetX 10	
    	pdf.Cell 30,4,"Destinatario:",0,0
    	
    	pdf.SetX LarghezzaLogoMittente/3.5+19		
    	pdf.Cell 30,4,"Destinazione:",0,1
    	
    	'recupero il valore di y iniziale della multicella
    	y=pdf.GetY() 
    	
    '### 	DESTINATARIO
    	pdf.SetFont "Helvetica","",10
    	pdf.SetXY 11,y
    	pdf.MultiCell 90,5,VediTestoPDF(ftt_cliente),"T"
    	
    '### 	DESTINAZIONE
    	pdf.SetXY LarghezzaLogoMittente/3.5+20,y
    	pdf.MultiCell 90,5,VediTestoPDF(ord_spedisci),"T"
    	
    	pdf.SetX 11	
    
    '### 	PARTITA IVA - CF
    	pdf.SetFont "Helvetica","",9
    	pdf.MultiCell 90,8,ftt_piva_cliente,0
    	
    	'se ci sono note pubbliche le stampo
    	ftt_note = RSft("ftt_note")
    	If VediTestoPDF(ftt_note) <> "" Then
    
    		'###	stampo le note dell'ordine
    		pdf.SetFont "Helvetica","B",7
    		
    		pdf.Cell 0,5, "Note fattura:",0,1,"L"
    		
    		pdf.SetFont "Courier","",8
    	  y=pdf.GetY()
    		pdf.SetXY 10,y
    		
    		' verifico la lunghezza del testo delle note
    		If Len(VediTestoPDF(ftt_note)) > 111 Then
    			 ' memorizzo in una variabile il testo pulito e poi ciclo scomponendo la stringa
    			 ftt_note = Replace(VediTestoPDF(ftt_note), VbCrLf, chr(10), 1, -1, 1)
    			 ' ciclo spezzando la stringa ogni 111 caratteri
    			 Do While Len(ftt_note) > 0
    					Temp_ftt_note = Temp_ftt_note & Mid(ftt_note, 1, 111) & chr(10)
    					ftt_note = Mid(ftt_note, 112, Len(ftt_note))
    			 Loop
    			 pdf.MultiCell 190,4,Temp_ftt_note,"TR","L"
    		Else
    				pdf.MultiCell 190,5,Replace(VediTestoPDF(ftt_note), VbCrLf, chr(10), 1, -1, 1),"TR","L"
    		End If
    	
    	End If	'	If VediTesto(RSord("ord_note_pubbliche")) <> "" Then
    
    	'colore di sfondo della cella
    	pdf.SetFillColor 193,210,254
    	
    	pdf.SetTextColor 0,0,0
    	pdf.SetFont "Arial","B",8
    	
    	pdf.Cell 10,6,"Cod",1,0,"C",1
    	pdf.Cell 10,6,"Q.tà",1,0,"C",1
    	pdf.Cell 127,6,"Descrizione",1,0,"",1
    	
    	pdf.Cell 17,6,"Importo",1,0,"C",1
    	
    	pdf.SetFont "Arial","",7
    	pdf.Cell 8,6,"% IVA",1,0,"C",1
    	
    	pdf.SetFont "Arial","B",8
    	pdf.Cell 18,6,"Imponibile",1,1,"C",1
    	
    	pdf.SetFillColor 0,0,0
    	
    	pdf.Cell 10,6,"","LR",0
    	pdf.Cell 10,6,"","R",0
    	pdf.Cell 127,6,"","R",0
    	pdf.Cell 17,6,"","R",0
    	pdf.Cell 8,6,"","R",0
    	pdf.Cell 18,6,"","R",1
    	
    	'imposto carattere proporzionale
    	pdf.SetFont "Courier","",8
    	
    	y=pdf.GetY() 
    	pdf.SetY y-5
    	
    End Function
    
    Function Corpo()
    	
    	'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
    	
    		'codice
    		If RSriga("fttr_id_prodotto") > 0 Then
    			If Len(RSriga("fttr_id_prodotto")) < 5 Then
    				pdf.Cell 10,6,String(5 - Len(RSriga("fttr_id_prodotto")), chr(160)) & RSriga("fttr_id_prodotto"),"L",0
    			Else
    				pdf.Cell 10,6,RSriga("fttr_id_prodotto"),"L",0
    			End If
    		Else
    			pdf.Cell 10,6,"","L",0
    		End If
    		
    		'quantità
    		If RSriga("fttr_qtt") > 0 AND VediTesto(RSriga("fttr_dsc")) <> "SCONTO" AND VediTesto(RSriga("fttr_dsc")) <> "SPESE SPEDIZIONE" Then
    			pdf.Cell 10,6,String(5 - Len(FormatNumber(RSriga("fttr_qtt"), 0)), chr(160)) & FormatNumber(RSriga("fttr_qtt"), 0),"L",0
    		Else
    			pdf.Cell 10,6,"","L",0
    		End If
    	
    		'x e y recupero la posizione iniziale della multicella
    		x=pdf.GetX() 
    		y=pdf.GetY() 
    		w = 127 
    		
    		'descrizione
    		If Len(VediTestoPDF(RSriga("fttr_dsc"))) > 73 Then
    			pdf.MultiCell w,6,Mid(VediTestoPDF(RSriga("fttr_dsc")), 1, 70) & "...","LR","J"
    		Else
    			pdf.MultiCell w,6,VediTestoPDF(RSriga("fttr_dsc")),"LR","J"
    		End If
    		
    		'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 17,6,"","R",0
    				pdf.Cell 8,6,"","R",0
    				pdf.Cell 18,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
    		If RSriga("fttr_imp") <> 0 Then
    			pdf.Cell 17,6,String(9 - Len(FormatNumber(VisualizzaPrezzo(RSriga("fttr_imp")), 2,,,-1) & Segno), chr(160)) & Segno & FormatNumber(VisualizzaPrezzo(RSriga("fttr_imp")), 2,,,-1),"R",0
    		Else
    			pdf.Cell 1,6,"(","L",0
    			pdf.SetTextColor 255,0,0
    			pdf.Cell 1,6,"*","",0
    			pdf.SetTextColor 0,0,0
    			pdf.Cell 1,6,")","",0
    			pdf.Cell 14,6,"0","R",0,"R"
    			Asterisco = "S"
    		End If
    		
    		'% IVA
    		If RSriga("fttr_imp") <> 0 Then
    			pdf.Cell 8,6," " & PercIvaVendita,"R",0
    		Else
    			pdf.Cell 8,6,"  0","R",0
    		End If
    		
    		'imponibile
    		If RSriga("fttr_imp_tt") <> 0 Then
    			pdf.Cell 18,6,String(9 - Len(FormatNumber(VisualizzaPrezzo(RSriga("fttr_imp_tt")), 2,,,-1) & Segno), chr(160)) & Segno & FormatNumber(VisualizzaPrezzo(RSriga("fttr_imp_tt")), 2,,,-1),"R",1
    		Else
    			pdf.Cell 18,6,String(8, chr(160)) & "0","R",1
    		End If
    		
    		'dimonuisco di 1 il numero delle righe
    		NumeroRigheFattura = NumeroRigheFattura - 1
    		
    		'verifico se fare il saltopagina
    		y=pdf.GetY() 
    		
    		
    		If (y > 230 AND NumeroRigheFattura > 0 AND Asterisco = "") OR _
    			(y > 224 AND NumeroRigheFattura > 0 AND Asterisco = "S") Then
    			
    			NumeroPagina = NumeroPagina + 1
    			SaltoPagina()
    			Testa()
    			
    		End If
    
    	  RSriga.MoveNext
    	Loop
    
    	Totali Asterisco
    	
    End Function
    
    Function SaltoPagina()
    	'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 230.00125 Step 6
    		pdf.Cell 10,6,"","LR",0
    		pdf.Cell 10,6,"","LR",0
    		pdf.Cell 127,6,"","R",0
    		pdf.Cell 17,6,"","R",0
    		pdf.Cell 8,6,"","R",0
    		pdf.Cell 18,6,"","R",1
    	Next
    				
    	pdf.SetTextColor 0,0,0
    	
    	y=pdf.GetY() 
    	pdf.SetFont "Courier","B",10
    	pdf.Cell 190,20,"Segue a pagina "&NumeroPagina&"  ","LTRB",0,"R"
    
    	pdf.SetY y+25
    	
    	pdf.SetFont "Arial","",8
    	pdf.MultiCell 191,4,ng_nome & " " & ng_via & " " & ng_cap & " " & ng_citta & " " & ng_provincia & " - Telefono " & ng_telefono & " - FAX " & ng_fax,0,"C"
    	pdf.MultiCell 191,4,"P.IVA " & ng_piva & " - C.F. " & ng_cf & " - REA " & ng_rea & " " & ng_mail & " - " & ng_URL,0,"C"
    	
    	y=pdf.GetY() 
    	pdf.SetY y+3
    	
    				
    	pdf.SetFont "Arial","",6
    	pdf.MultiCell 191,3,"Ai sensi del D.Lgs. 196/2003 Vi informiamo che i Vs. dati saranno utilizzati esclusivamente per i fini connessi ai rapporti commerciali tra di noi in essere.",0,"C"
    	pdf.MultiCell 191,3,"Vi preghiamo controllare i Vs. dati anagrafici, la P.IVA ed il Codice Fiscale. Non ci riteniamo responsabili di eventuali errori.",0,"C"
    	
    	y=pdf.GetY() 
    	pdf.SetY y+10
    	pdf.SetTextColor 0,0,255
    	pdf.MultiCell 191,3,"Fattura Cliente",0,"R"
    	pdf.SetTextColor 0,0,0
    End Function
    spero ti possa essere utile.

    fulvio.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    95
    Grazi fulvio mi sei stato di grande aiuto.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.