2012-09-06 21 views
18

Sto utilizzando TCPDF per stampare una ricevuta e poi inviarlo al cliente con phpMailer, ma ho un problema:TCPDF Salva il file nella cartella?

non ho idea di come salvare il file in pdf.

Ho provato questo:

// reset pointer to the last page 
$pdf->lastPage(); 

//Close and output PDF document 
$pdf->Output('kuitti'.$ordernumber.'.pdf', 'I'); 
$this->Output("kuitit"); 
+0

Hi. Dove vuoi salvare il pdf? il tuo server o da qualche altra parte? –

+0

@blasteralfred sul mio server nella cartella 'kuitit' –

risposta

41

provare questo

$pdf->Output('kuitti'.$ordernumber.'.pdf', 'F'); 
+0

Works :) Proverò a salvarlo in una cartella. –

+1

@coosal Questo genera errore 'TCPDF ERROR: impossibile creare il file di output: ../ invoice_job_6.pdf' –

+0

@RNKushwaha Hai controllato l'autorizzazione della cartella? Si prega di abilitare il permesso di scrittura per la cartella di destinazione. – kushalbhaktajoshi

0

Puoi provare;

$this->Output(/path/to/file); 

Quindi per voi sarà come;

$this->Output(/kuitit/); //or try ("/kuitit/") 
+0

In realtà era necessaria l'estensione e F –

12

$pdf->Output() guadagnato un secondo parametro $dest, che accetta un singolo carattere. L'impostazione predefinita, $dest='I' apre il PDF nel browser.

Usa F per salvare su file

$pdf->Output('/path/to/file.pdf', 'F') 
+1

per riferimento futuro ho definito un UPLOAD_PATH e l'ho usato come '$ pdf-> Output (UPLOAD_PATH.'example_001.pdf ',' FI ');' – alex

2

esempio di Nick lo salva al tuo localhost.
Ma è anche possibile salvarlo sul disco locale.
Se si utilizza doublebackslashes:

$filename= "Invoice.pdf"; 
$filelocation = "C:\\invoices"; 

$fileNL = $filelocation."\\".$filename; 
$pdf->Output($fileNL,'F'); 

$pdf->Output($filename,'D'); // you cannot add file location here 

P.S. In Firefox (opzionale) Strumenti> Opzioni> scheda Generale> Download> mi chiede sempre dove salvare i file

+0

Vecchia domanda già, ma era necessario salvarla sul server, e poi spedirla all'utente. –

14

questo memorizza il file pdf generato nella cartella personalizzata del progetto

$filename= "{$membership->id}.pdf"; 
     $filelocation = "D:\\wamp\\www\\project\\custom";//windows 
       $filelocation = "/var/www/project/custom"; //Linux 

     $fileNL = $filelocation."\\".$filename;//Windows 
      $fileNL = $filelocation."/".$filename; //Linux 

     $this->pdf->Output($fileNL,'F'); 
+0

La domanda è vecchia e ha una risposta accettata. Non c'è bisogno di rispondere. –

+14

sì è .. ma non stavo ottenendo il pdf nella mia cartella richiesta. con la risposta. Quindi, pensavo che avrebbe aiutato qualcuno in futuro. – Developer

+0

Sigh ... Giusto non potevi scrivere la cartella direttamente qui. '$ pdf-> Output ('/ location/folder /'.$ name.'. pdf ',' F ')' –

4

Per chi è in difficoltà memorizzando il file, il percorso deve essere completo attraverso root. Ad esempio, il mio era:

$pdf->Output('/home/username/public_html/app/admin/pdfs/filename.pdf', 'F'); 
+2

I percorsi relativi funzionano correttamente. Se non lo fanno c'è probabilmente una configurazione errata. –

2

TCPDF utilizza fopen() per salvare i file. Qualsiasi percorso passato alla funzione Output() di TCPDF dovrebbe quindi essere un percorso assoluto.

Se si desidera salvare su un percorso relativo, utilizzare ad es. la costante globale __DIR__ (vedere this answer).

7

L'unica cosa che ha funzionato per me:

// save file 
$pdf->Output(__DIR__ . '/example_001.pdf', 'F'); 
exit(); 
2
$pdf->Output("myfile.pdf", "F"); 

TCPDF ERROR: Unable to create output file: myfile.pdf

Nel include/tcpdf_static.php file di circa 2435 riga nella funzione statica fopenLocal se cancello la completa 'if' funziona benissimo.

public static function fopenLocal($filename, $mode) { 
    /*if (strpos($filename, '://') === false) { 
     $filename = 'file://'.$filename; 
    } elseif (strpos($filename, 'file://') !== 0) { 
     return false; 
    }*/ 
    return fopen($filename, $mode); 
} 
+0

ha funzionato, grazie per il brain storming. – Sandhu

+0

È consigliabile modificare il file principale per qualsiasi motivo? – mapmalith

0

Se viene ancora

TCPDF ERROR: Unable to create output file: myfile.pdf

si può evitare il salvataggio del file di TCPDF logica mettendo i dati in formato PDF ad una variabile e il salvataggio di questa stringa in un file:

$pdf_string = $pdf->Output('pseudo.pdf', 'S'); 
file_put_contents('./mydir/myfile.pdf', $pdf_string); 
Problemi correlati