- Home
- Categorie
- Coding e Sistemistica
- PHP
- Creare un file .pdf
-
Creare un file .pdf
Ciao 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...
-
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.
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.