2016-04-24 40 views
1

我使用FPDF庫顯示在線PDF文件,其輸出選項爲«I»(將內容輸出到瀏覽器)
然後,我需要能夠在我的服務器上保存一些生成的pdf(類似於輸出選項«F»)使用FPDF獲取並保存由PHP生成的內容

爲了做到這一點,我寫這個劇本:

$pdf_data = file_get_contents('https:/HOST/Folder/file.php'); 
    $path =__DIR__.'/Folder/file.pdf'; 
    file_put_contents($path, $pdf_data); 

它成功創建具有PDF擴展到目錄中的文件,但是:
- 我得到了一個錯誤:«格式錯誤:沒有一個pdf或損壞»當我嘗試打開「pdf」文件,
- 保存的文件是空的(?)。

那麼,怎麼了?
如何獲取由php文件生成的內容,並將其保存爲我的服務器上的pdf?

+0

file_put_contents生成一個文本文件,而不是一個PDF文件。將擴展名更改爲pdf也不會設置格式 –

+0

好的,這是第一點。我沒有意識到這一點。現在,我將擴展名切換爲.txt以測試腳本,但保存的文本文件仍爲空。所以我猜file_get_contents不起作用。 – CamilleFF

+0

只是爲了讓我知道我通過設置用戶代理之前修復了file_get_contents返回的空白內容,如下所示:_ini_set('user_agent',$ _SERVER ['HTTP_USER_AGENT']); _ – CamilleFF

回答

2

最後,我忘了這個腳本,發現了一個新的解決方案!

我設置了兩個輸出到我的PHP代碼生成與FPDF,一個顯示在線文件和一個保存在服務器上的文件。
PHP代碼生成的內容總是顯示出來,我用第一個輸出中的字符串控制PDF備份。
因此,當我需要備份時,我使用Jquery函數在後臺執行PHP代碼並上傳PDF文件(隱藏的iframe也可以)。

低於我的PHP代碼末尾:

<?php 
... 
if (mycondition) {$string='F';} 
else {$string ='I';} 
... 
$pdf->Output(__DIR__.'/../../Folder/file.pdf',$string); // save on the server 
$pdf->Output('file.pdf','I'); // display on the browser 
?> 

下面的jQuery的功能我用:

<script type="text/javascript" src="./js/jquery.js"></script> 
<script type="text/javascript"> 
    var phpfile = <?php echo json_encode($Filename); ?>; // the php file to upload 
    function uploadpdf() { 
    $.get(phpfile); 
    return false; } 
</script> 

希望這將幫助!