我在SLIM 3中构建一个应用程序,我需要生成一个PDF证书。所以我在我的SLIM应用程序中添加了mPDF库扩展。我试着生成一个测试pdf:
use Mpdf\Mpdf;
use Slim\Http\Request;
use Slim\Http\Response;
/**
* Class GenerateCertificate
* @package saikatbepari\pdf
*/
class GeneratePDF
{
public function generateCertificate(Request $request, Response $response)
{
$response = $response->withHeader( 'Content-type', 'application/pdf' );
$mpdf = new Mpdf(['tempDir' => '../tmp']);
$mpdf->WriteHTML('<h1>Hello world!</h1>');
$mpdf->Output();
}
}
我得到的输出是:
任何人都可以帮助我,问题是什么以及如何解决它。任何帮助都会得到满足。
您的Slim框架可能会重置内容类型。尝试从mPDF返回一个字符串并将其设置为您的PSR7响应的正文:
// ...
$body = $mpdf->Output('', 'S');
$stream = \GuzzleHttp\Psr7\stream_for($body);
$response = $response->withBody($stream);
return $response;
这是我的简单解决方案
$app->get('/testing_mpdf/', 'testingMpdf');
function testingMpdf($request, $returned, $args) {
$mpdf = new Mpdf();
$mpdf->WriteHTML('<h1>Hello World!</h1>');
$mpdf->Output();
return $returned->withHeader('Content-Type', 'application/pdf');
}