2013-04-09 28 views
5

BenvenutoPHP + PDF, come salvare un PDF scaricato usando curl?

Ho un piccolo problema con il salvataggio del pdf scaricato sulla pagina. Per scaricare il pdf utilizzare Curl:

$CurlConnect = curl_init(); 
curl_setopt($CurlConnect, CURLOPT_URL, 'http://website.com/invoices/download/1'); 
curl_setopt($CurlConnect, CURLOPT_POST, 1); 
curl_setopt($CurlConnect, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($CurlConnect, CURLOPT_POSTFIELDS, $request); 
curl_setopt($CurlConnect, CURLOPT_USERPWD, $login.':'.$password); 
$Result = curl_exec($CurlConnect); 

Ora in $ Risultato (stringa) ho tutto il contenuto del file PDF. E ora inizia il mio problema. Vorrei salvare il pdf scaricato:

header('Cache-Control: public'); 
header('Content-type: application/pdf'); 
header('Content-Disposition: attachment; filename="new.pdf"'); 
header('Content-Length: '.filesize($Result)); 
readfile($Result); 

Purtroppo, quando ho salvare o aprire un nuovo file PDF, ottengo un documento vuoto. Forse il problema è con le ultime righe di:

header('Content-Length: '.filesize($Result)); 
readfile($Result); 

Purtroppo, non so cosa cambiare loro di farlo funzionare ... Chiedo il vostro aiuto. Grazie

+0

Perché non si utilizza http://php.net/manual/en/function.pdf-save.php –

+0

penso che ci sia un po 'si verificano errori nel codice. Avvolgi il tuo codice in un blocco try-catch e aggiungi alcuni passaggi per il debug. – Khaleel

+1

Non ho provato ma penso che per 'filesize()' e 'readfile()' hai bisogno del percorso di un file reale invece del suo contenuto come stringa. – enenen

risposta

10

Entrambi filesize e readfile accettano file come argomenti. Stai fornendo una stringa invece di un file.

Si prega di provare questo.

$CurlConnect = curl_init(); 
curl_setopt($CurlConnect, CURLOPT_URL, 'http://website.com/invoices/download/1'); 
curl_setopt($CurlConnect, CURLOPT_POST, 1); 
curl_setopt($CurlConnect, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($CurlConnect, CURLOPT_POSTFIELDS, $request); 
curl_setopt($CurlConnect, CURLOPT_USERPWD, $login.':'.$password); 
$Result = curl_exec($CurlConnect); 

header('Cache-Control: public'); 
header('Content-type: application/pdf'); 
header('Content-Disposition: attachment; filename="new.pdf"'); 
header('Content-Length: '.strlen($Result)); 
echo $Result; 
+0

Sì, hai ragione :) – Kuba

0

Forse che:

// ... 
$Result = curl_exec($CurlConnect); 
$file = 'file.pdf'; 
$fileName = 'fileName.pdf'; 
file_put_contents($file, $Result); 

e rispetto:

header('Content-type: application/pdf'); 
header('Content-Disposition: inline; filename="' . $filename . '"'); 
header('Content-Transfer-Encoding: binary'); 
header('Content-Length: ' . filesize($file)); 
header('Accept-Ranges: bytes'); 

readfile($file); 

spero aiutato!