2013-04-09 14 views
5

ようこそPHP + PDF、ダウンロードPDFをカールを使って保存するには?

ダウンロードしたpdfをページに保存しても少し問題があります。私はカールを使用PDFダウンロードするには:$で今

$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); 

(文字列)の結果を私はすべてのPDFファイルの内容を持っています。そして今、私の問題が始まります。私がダウンロードしたPDFファイルを保存したいと思います:

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

は残念ながら、私が保存したり、新しいPDFファイルを開くと、私は空白のドキュメントを取得します。おそらく問題は、最後の行である:

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

は残念ながら、私はあなたの助けを求める...彼らはそれを動作させるために変更するのか分かりません。おかげ

+0

なぜ私はあなたのコード内のいくつかのエラーoccuringがあると思いますがhttp://php.net/manual/en/function.pdf-save.php –

+0

を使用してはいけません。 try-catchブロックにコードをラップし、いくつかのデバッグステップを追加します。 – Khaleel

+1

私はテストしませんでしたが、 'filesize()'と 'readfile()'には、文字列としての内容ではなく、実際のファイルのパスが必要だと思います。 – enenen

答えて

10

filesizereadfileはいずれも引数としてファイルを受け入れます。ファイルの代わりに文字列を指定しています。

これを試してください。

$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

も試してみてください – Kuba

0

たぶんそれ:

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

とより:

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

は、私は助けを願って!

関連する問題