• User Attivo

    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 :eheh:
    Sicuramente è buono ma sn io, come sempre, a nn saperlo far funzionare. :lol:

    Mi da un errore

    Fatal error: Call to undefined function: pdf_new() in D:\Inetpub\webs\miositonet\pdf.php on line **3

    1. 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!


  • User Attivo

    scusa

    l'errore vuol dire che non trova la funzione
    scrivi
    require "classe.pdf.php";
    all'inizio
    😉


  • User Attivo

    Grazie.
    Ma dove lo prendo classe.pdf.php?
    Provo e ti faccio sapere

    Ho 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


  • User Attivo

    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=2

     
    Non 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 :(
    **  
    
    

  • User

    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.


  • User Attivo

    L'errore è che non trova la pagina dove sta la classe...


  • User

    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.


  • User Attivo

    Grazie loris, funziona... ma strano credevo di aver già fatto come mi hai detto tu... beh è uguale.. grazie lo stesso... 🙂


  • User Attivo

    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....


  • User Attivo

    Beh puoi recuperare le variabili dal form e inserirli nel documento pdf 😉


  • User Attivo

    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... 🙂


  • User

    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


  • User Attivo

    Sei stato chiarissimo, ma nn ho capito delle cose... ho bisogno di un database mysql? poi hai detto che devo nascondere i campi... :mmm: ti invio un email con l'esempio della fattura.

    Grazie :vai:

    :ciauz:


  • User Attivo

    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) 😉

    :gthi:


  • User Attivo

    Bene, funziona! Ora però devo modoficare delle cose e poi vi faccio sapere.
    Ciao Loris, Grazie.


  • User Attivo

    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 tu

    class 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


  • User Attivo

    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]

    :():


  • User

    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?


  • User Attivo

    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 tu

    la 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 00

    Compenso per attività di collaborazione occasionale
    Periodo di riferimento 0,00
    Ritenuta di acconto del 20% su € 0,00 0,00
    Compenso netto 0,00

    Io 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?


  • User

    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.