2017-06-13 59 views
0

我已經寫了一些示例代碼來在我的laravel控制器中生成pdf。它會得到一個200響應代碼,但pdf不會生成。無法在laravel控制器中生成PDF

以下是我的代碼。

function exportPDF() { 
    // instantiate and use the dompdf class 
    $dompdf = new PDF(); 
    $dompdf->loadHtml('<h1>hello world</h1>'); 

    // (Optional) Setup the paper size and orientation 
    $dompdf->setPaper('A4', 'landscape'); 

    // Render the HTML as PDF 
    $dompdf->render(); 

    // Output the generated PDF to Browser 
    return $dompdf->stream(); 
} 

但是,這是工作時,我直接在web.php文件中包含路由代碼。

Route::get('/generate-pdf', function() { 
     $pdf = App::make('dompdf.wrapper'); 
     $pdf->loadHTML('<h1>Test</h1>'); 
     return $pdf->stream(); 
    }); 

EDITED

web.php

Route::post('/report-audit-export-pdf', '[email protected]'); 

的.js

window.exportPDF = function() { 
    var hidden_category = $('#hidden_category').val(); 
    $.ajax({ 
     type: "POST", 
     url: '/report-audit-export-pdf', 
     data: { 

     }, 
     headers: { 
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
     }, 
     error: function(jqXHR, textStatus, errorThrown) { 
      console.log("jqXHR : " + jqXHR + " and textStatus : " + textStatus + " and errorThrown : " + errorThrown); 
     }, 
     success: function(content) { 
     // alert("Success"); 
     } 
    }); 
} 

可我知道問題是什麼?

+0

Ajax請求的成功響應所以它是與您的路線,控制器功能離子名稱。使用控制器時顯示您的初始路線。 – EddyTheDove

+0

@EddyTheDove我編輯了我的帖子。看一看。謝謝! – etzzz

+0

你是通過ajax創建pdf嗎? –

回答

1

您無法通過Ajax生成PDF,因爲Ajax請求需要響應,默認情況下,Laravel將其作爲JSON發回。所以,你可以做什麼,是讓這將顯示PDF如一個正常的GET路線:

Route::get('display-pdf', '[email protected]'); 

因爲你的Ajax沒有發佈任何數據(數據對象爲空),你可以繞過你的Ajax請求,並簡單地使用錨

<a href="/display-pdf">Display PDF</a> 

如果由於某種原因,你仍然想使用Ajax,您可以使用從這樣

$.ajax({ 
    type: "POST", 
    url: '/data-url', 
    data: {}, 
    success: function(content) { 
     window.location.href = '/display-pdf'; 
    } 
});