- Home
- Categorie
- Coding e Sistemistica
- Coding
- Creare un file .pdf
- 
							
							
							
							
							
Creare un file .pdfCiao ragazzi ho trovato un script in php per creare files in .pdf - 
 ma nn mi funziona se no non stavo qui 
 Sicuramente è buono ma sn io, come sempre, a nn saperlo far funzionare. Mi da un errore Fatal error: Call to undefined function: pdf_new() in D:\Inetpub\webs\miositonet\pdf.php on line **3 - Quindi nella funzione pdf_new() che devo mettere? il percorso di cosa?
 Qyesto è il codice: **[php] <? 
 // Impostiamo un nuovo documento pdf
 $pdf = pdf_new();// Apriamo e settiamo il nome del file 
 pdf_open_file($pdf, "miapagina.pdf");// impostiamo la nuova pagina (A4) 
 // specificandone larghezza e altezza
 pdf_begin_page($pdf, 595, 842);// Prepariamo ed usiamo un carattere (Arial) 
 $arial = pdf_findfont($pdf, "Arial", "host", 1); pdf_setfont($pdf, $arial, 10);// stampiamo un po' di testo... 
 // specificandone le coordinate per posizionarlo sulla pagina
 pdf_show_xy($pdf, "Ecco il mio primo documento PDF",50, 750);
 pdf_show_xy($pdf, "...creato con PHP!", 50,730);// chiudiamo la pagina 
 pdf_end_page($pdf);// chiudiamo e salviamo il file 
 pdf_close($pdf);
 ?>[/php]Un'altra cosa, ma nel caso il mio server nn supporta una libreria ad hoc www.pdflib.com devo istallarla, e quando la installo devo mettere tutto nella stessa cartella?Grazie a tutti! 
 
- 
							
							
							
							
							scusa l'errore vuol dire che non trova la funzione 
 scrivi
 require "classe.pdf.php";
 all'inizio
  
 
- 
							
							
							
							
							
Grazie. 
 Ma dove lo prendo classe.pdf.php?
 Provo e ti faccio sapereHo inviato una email all'amministrazione del mio hosting e mi hanno detto che il mio dominio sostanzialmente, la creazione di Pdf via Php in hosting, è possibile utilizzando ad esempio Fpdf, ovvero non è possibile utilizzare il modulo interno al Php, ma utilizzando le classi. Quindi? Datemi una mano 
 
- 
							
							
							
							
							
Ho scaricato la classe gratuita di fpdf, pdflib è a pagamento, fpdf ha le stesse funzioni ma è solo un pò + lento lo trovate qui http://www.fpdf.org <---- queste sono parole che ho visto nel forum di aruba. Guardate come funziona bene in questo sito. Basta che clicate sull'icona pdf e lo trasforma ``` 
 http://www.progweb.net/mambo45-109/index.php?option=content&task=view&id=1&Itemid=2Non so ancora farlo funzionare.... :( Allora ho scaricato fpdf e l'ho messa nella root del mio sito. e con questo codice cerco di farlo funzionare e nn mi succede niente. [php]<?php require('/fpdf16/fpdf.php'); // questo è il percorso dove risiede la classe fpdf, nn so se ho scritto bene $pdf_doc=new FPDF(); $pdf_doc->AddPage(); $pdf_doc->SetFont('Arial','B',32); $pdf_doc->Cell(60,20,'Ciao mondo!'); $pdf_doc->Output(); ?> [/php]e mi da questo errore **Fatal error**: main(): Failed opening required '/fpdf16/fpdf.php' (include_path='.;c:\php\includes') in **D:\Inetpub\webs\miositonet\pdf.php** on line **2 Invece modificando così : **[php]<?php include '/fpdf16/fpdf.php'; $pdf_doc=new FPDF(); $pdf_doc->AddPage(); $pdf_doc->SetFont('Arial','B',32); $pdf_doc->Cell(60,20,'Ciao mondo!'); $pdf_doc->Output(); ?> [/php]mi dice questo: **Fatal error**: Cannot instantiate non-existent class: fpdf in **D:\Inetpub\webs\miositonet\pdf.php** on line **3 sono disperato :( **
 
- 
							
							
							
							
							
Vai a vedere in questo forum nella sezione tutorial.C'è una mia guida sull'utilizzo della libreria fpdf. Una volta capito il meccanismo è abbastanza semplice. Riesci a fare di tutto. 
 
- 
							
							
							
							
							
L'errore è che non trova la pagina dove sta la classe... 
 
- 
							
							
							
							
							
prova a togliere la / davanti a fpdf16 tuo codice 
 include '/fpdf16/fpdf.php';codice corretto: 
 include 'fpdf16/fpdf.php';Io l'ho provato e funziona. 
 
- 
							
							
							
							
							
Grazie loris, funziona... ma strano credevo di aver già fatto come mi hai detto tu... beh è uguale.. grazie lo stesso...  
 
- 
							
							
							
							
							
La cosa più difficile è che vorrei che l'utente deve compilare dei campi, per esempio una fattura, e con il tasto fine o uno qualsiasi deve creare il pdf, ovviamente con i dati inseriti dall'utene. Non saprei neanche come impostarlo.... 
 
- 
							
							
							
							
							
Beh puoi recuperare le variabili dal form e inserirli nel documento pdf  
 
- 
							
							
							
							
							
si ma prima di questo c'è una pagina vuota con un pulsante crea pdf con la funzione che rimanda a pdf.php. E questo, cioè pdf.php ha i parametri per creare il documento. Come faccio a dargli i parametri della pagina precedente? 
 Se no dovrei mettere qualcosa nella pagina pdf.php che include i dati che ho fatto inserire nel form nella pagina precedente e richiamarli per la creazione del pdf cioè in pdf.php, ovviamente richiamarli e print nella parte giusta della pagina....
  troppo facile.... ma non so neanche da dove cominciare... troppo facile.... ma non so neanche da dove cominciare... 
 
- 
							
							
							
							
							
semplice.... nella pagina vuota dove c'è il pulsante crea pdf richiami i campi della fattura. Mi spiego: in questa pagina ti crei un form e all'interno ci metti i campi della fattura che serviranno per la creazione del pdf e li imposti nascosti. Gli assegni i valori delle variabili che hai recuperato dalla pagina della fattura. Il pulsante crea pdf lo metti all'interno del form e poi il form avrà come action il file pdf.php. 
 Nota bene che la pagina vuota non ti serve in questo caso perchè potresti fare tutto dalla pagina della fattura: alla fine del form della fattura ci metti il pulsante stampa pdf. Da qui prima gli fai salvare i dati nel db o dove vuoi e poi con gli stessi dati gli fai creare il pdf.
 Spero di essere stato chiaro
 
- 
							
							
							
							
							
Sei stato chiarissimo, ma nn ho capito delle cose... ho bisogno di un database mysql? poi hai detto che devo nascondere i campi...  ti invio un email con l'esempio della fattura. ti invio un email con l'esempio della fattura.Grazie   
 
- 
							
							
							
							
							
Non serve il database se i dati vanno a finire solo sul pdf, fai un form con destinazione la pagina che crea i pdf e poi metti gli input. Nella pagina php recuperi i valori degli input e fai quello che vuoi (inserirli nel pdf)   
 
- 
							
							
							
							
							
Bene, funziona! Ora però devo modoficare delle cose e poi vi faccio sapere. 
 Ciao Loris, Grazie.
 
- 
							
							
							
							
							
Ciao Loris3000, la fattura elettronica funziona ma non tutta, in pratica il campo quando inserisco l'importo lordo non lo stampa sul file .pdf.. strano forse è sbagliata la funzione? stò provando a modificarala ma ninte encora l'"id" del form che invia i dati è 'lordo' il file che crea la fattura in pdf è: 
 [php]$lordo = $_POST['lordo'];define('FPDF_FONTPATH','D://');//metti il percorso che hai tu 
 require('D:/');//metti il percorso che hai tuclass PDF extends FPDF 
 {
 }//Creo la pagina 
 $pdf=new PDF();
 $pdf->AliasNbPages();
 $pdf->AddPage();
 $pdf->SetFont('Times','B',10);//Scrivo i dati 
 $pdf->Cell(0,5,'Nominativo Affiliato: '.$affiliato,0,1);
 $pdf->Cell(0,5,'Nato/a a: '.$nato_a,0,1);
 $pdf->Cell(0,5,'Data di nascita: '.$nato_il,0,1);
 $pdf->Cell(0,5,'Residente in Via/Piazza: '.$indirizzo,0,1);
 $pdf->Cell(0,5,'Città: '.$citta,0,1);
 $pdf->Cell(0,5,'Cod. Fiscale: '.$cf,0,1);
 $pdf->Cell(0,5,'Codice Affiliato: '.$codice,0,1);$pdf->Ln(10); $pdf->Cell(0,10,'Roma, .....................',0,0,'R'); $pdf->Ln(20); $pdf->Cell(120,5,' ',0,0); $pdf->Cell(0,5,'Spett.le',0,1); $pdf->Cell(120,5,' ',0,0); $pdf->Cell(0,5,'S........ S.r.l.',0,1); $pdf->Cell(120,5,' ',0,0); $pdf->Cell(0,5,'P.IVA 00000000000',0,1); $pdf->Cell(120,5,' ',0,0); $pdf->Cell(0,5,'Via Lorenzo Il Magnifico, 7',0,1); $pdf->Cell(120,5,' ',0,0); $pdf->Cell(0,5,'00555 - Roma',0,1); //Vado a capo (Line break) $pdf->Ln(13);//Continuo a scrivere i dati 
 $pdf->Cell(40,5,'Compenso per attività di collaborazione occasionale',0,1);
 $pdf->Cell(40,5,'Periodo di riferimento '.$periodo,0,0);
 $pdf->Cell(0,5,number_format($lordo,'2', ',', '.'),0,1,'R');
 $pdf->Ln(2);
 $pdf->Cell(40,5,'Ritenuta di acconto del 20% su ? '.number_format($lordo,'2', ',', '.'),0,0);//Calcolo la ritenuta del 20% 
 $ritenuta = ($lordo/100)*20;$pdf->Cell(0,5,number_format($ritenuta,'2', ',', '.'),0,1,'R'); $pdf->Ln(2);//disegno la linea 
 $pdf->Line(180,131,200,131);$pdf->Cell(40,5,'Compenso netto',0,0);//Calcolo il netto 
 $netto = $lordo-$ritenuta;$pdf->Cell(0,5,number_format($netto,'2', ',', '.'),0,1,'R'); $pdf->Ln(10); $pdf->MultiCell(SCRITTURA___________________________',0,1);//Stampo il documento 
 $pdf->Output();[/php]Dove sta l'errore?
 :bho:Non mi calcola la ritenuta di acconto e non visualizza il lordo nel Pdf 
 
- 
							
							
							
							
							
Secondo me l'errore è nel calcolo. [PHP]//Continuo a scrivere i dati 
 $pdf->Cell(40,5,'Compenso per attività di collaborazione occasionale',0,1);
 $pdf->Cell(40,5,'Periodo di riferimento '.$periodo,0,0);
 $pdf->Cell(0,5,number_format($lordo,'2', ',', '.'),0,1,'R');
 $pdf->Ln(2);
 $pdf->Cell(40,5,'Ritenuta di acconto del 20% su ? '.number_format($lordo,'2', ',', '.'),0,0);//Calcolo la ritenuta del 20% 
 $ritenuta = ($lordo/100)*20;$pdf->Cell(0,5,number_format($ritenuta,'2', ',', '.'),0,1,'R'); $pdf->Ln(2);//disegno la linea 
 $pdf->Line(180,131,200,131);$pdf->Cell(40,5,'Compenso netto',0,0);//Calcolo il netto 
 $netto = $lordo+$ritenuta;$pdf->Cell(0,5,number_format($netto,'2', ',', '.'),0,1,'R'); $pdf->Ln(10); $pdf->MultiCell(200,5,'Operazione esclusa dal campo di applicazione IVA, ai sensi art. 5 comma 2 D.P.R. 633/1972, in quanto trattasi di collaborazione occasionale resa da soggetto che non esercita per professione abituale attività di lavoro autonomo.',0,1);[/PHP] :(): 
 
- 
							
							
							
							
							
Non penso sia nel calcolo perchè nel pdf che ti ho allegato è la risultante di quello che veniva a me lanciando lo script e come puoi vedere veniva fuori tutto. 
 Forse il problema è nella riga :
 $pdf->MultiCell(SCRITTURA___________________________',0,1);
 Prima di "SCRITTURA manca l'apostrofo e quindi non chiudendo la stringa l'ultima funzione che riguarda la creazione del file non viene eseguita.
 Inoltre nelle dichiarzazioni sopra tu hai messo come percorso:
 require('D:/');//metti il percorso che hai tu
 ma la libreria fppdf dove la richiami?
 
- 
							
							
							
							
							
Lo script non l'ho toccato dove ho scritto scrittura.. ho scritto questo $pdf->MultiCell(SCRITTURA___________________________',0,1); solo per il post, ma non ho toccato niente. 
 In require('D:/');//metti il percorso che hai tula libreria la richiamo in una cartella diversa, esempio: 
 [PHP]
 define('FPDF_FONTPATH','D:/Inetpub/webs/MIOSITO/fpdf16/font/');//metti il percorso che hai tu
 require('D:/Inetpub/webs/MIOSITO/fpdf16/fpdf.php');//metti il percorso che hai tu[/PHP]Non mi calcola la ritenuta di acconto e non visualizza il lordo nel Pdf Per esempio: 
 nel form importo lordo scrivo €50 e quando vado a vedere nel pdf esce tutto tranne €50, esce sempre 00Compenso per attività di collaborazione occasionale 
 Periodo di riferimento 0,00
 Ritenuta di acconto del 20% su € 0,00 0,00
 Compenso netto 0,00Io ho solo compilato i dati e dato il percorso: [PHP] 
 define('FPDF_FONTPATH','D:/Inetpub/webs/MIOSITO/fpdf16/font/');//metti il percorso che hai tu
 require('D:/Inetpub/webs/MIOSITO/fpdf16/fpdf.php');//metti il percorso che hai tu[/PHP]che ne dici? forse è nelle cartelle fpdf che non funziona o manca qualcosa? Cioè il calcolo della ritenuta viene fatto dalla cartella fpdf vero? quindi se il tuo script è guisto e non funziona può darsi che è la cartella fpdf? 
 
- 
							
							
							
							
							
il calcolo viene fatto nel file fattura.php quindi quando viene generato il pdf. A me funziona perfettamente (l'ho appena riprovato). 
 Prova a non dare tutto il percorso quando richiami le librerie:
 define('FPDF_FONTPATH','librerie pdf/font/');//metti il percorso che hai tu
 require('librerie pdf/fpdf.php');//metti il percorso che hai tu
 quindi prova a dargli solo la directory dove si trova (vedi le voci sottolineate) e non tutta la url completa.