2014-04-01 121 views
2

我正在使用mpdf library生成用戶生成的html的PDF。我可以讓PDF成功保存到服務器,但我希望PDF在用戶的瀏覽器中打開。我嘗試過使用mpdf的輸出選項來打開瀏覽器中的文件或提示下載,但是當我使用AJAX將html數據發送到腳本時,兩者都不會發生。使用mpdf通過AJAX生成PDF

這裏是我的AJAX:

$('#save').click(function() { 

     var shelf_clone = $('#shelf').clone(); 
     var shelf = shelf_clone.prop('outerHTML'); 

     $.ajax({ 
      type: "POST", 
      url: "pdf.php", 
      data: { html:shelf }, 
      success: function(response) 
      { 
       $('#status').html('File Saved Successfully'); 
      }, 
     }) 

    }); 

這裏是我的PDF生成腳本:

<?php 

include_once('/mpdf/mpdf.php'); 

$html = $_POST['html']; 

$mpdf=new mPDF(); 
$stylesheet = file_get_contents('css/print.css'); 
$mpdf->WriteHTML($stylesheet,1); 
$mpdf->WriteHTML($html,2); 
$mpdf->Output('shelf.pdf', I); 

exit; 

?> 

我使用AJAX使得PDF可以不必導航離開該頁面被創建。我的代碼中是否有錯誤,或者我應該使用不同的方法?

+0

某些瀏覽器不查看PDF文件。那些會提示下載選項給用戶。請參閱http://helpx.adobe.com/acrobat/using/display-pdf-browser-acrobat-xi.html –

回答

0

我最終沒有使用AJAX,而是添加了一個hi dden輸入表單上使用以下腳本填充它:

$('#save').click(function() { 

    event.preventDefault(); 

    var shelf_clone = $('#shelf').clone(); 
    var shelf = shelf_clone.prop('outerHTML'); 

    $('#save_shelf input[name=shelf]').val(shelf); 

    $('#save_shelf').submit(); 

}); 
1

要指示文件應該在瀏覽器中查看

Content-Type: application/pdf 
Content-Disposition: inline; filename.pdf 

有文件下載,而不是使用PHP觀看

Content-Type: application/pdf 
Content-Disposition: attachment; filename.pdf 

<meta http-equiv="Content-Type" content="application/pdf; charset=utf-8"> 

,或者瀏覽器

header('Content-Type: application/pdf'); 
header('Content-Description: inline; filename.pdf'); 
+1

感謝您的回覆。您能否澄清我在代碼中添加這些內容的位置?我嘗試將它們附加到通過ajax發送的html數據,但它沒有任何影響。 –

+0

你有沒有嘗試過PHP代碼? –

+0

@SajithaNilan如何使用ajax做到這一點? –