【发布时间】:2017-11-14 15:16:13
【问题描述】:
我已经编写了一些示例代码来在我的 laravel 控制器中生成 pdf。它得到一个 200 响应代码,但没有生成 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();
});
已编辑
web.php
Route::post('/report-audit-export-pdf', 'ReportAuditController@exportPDF');
.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");
}
});
}
我可以知道是什么问题吗?
【问题讨论】:
-
所以它与你的路由和控制器函数名称有关。使用控制器时显示您的初始路线。
-
@EddyTheDove 我编辑了我的帖子。看看吧。谢谢!
-
你是通过 ajax 创建 pdf ..?
-
@AlankarMore ,是的,我将数据发布到控制器,让控制器生成pdf。这是错的吗?如果是的话,最好的方法是什么?
-
控制器将通过 ajax 创建您的 PDF,但为了呈现,请保存您的 pdf 某个位置并返回该生成文件的名称。渲染后将用户重定向到其他路由,传递生成的 PDF 名称以显示 PDF 内容。简而言之,您必须在通过 Ajax 创建 PDF 后直接通过浏览器访问它
标签: laravel laravel-5.3 dompdf