【发布时间】:2020-02-03 21:58:46
【问题描述】:
我希望在我的 Symfony 4 项目中使用 DomPDF 创建 PDF。我希望我可以插入来自实体的图像。图片由 VichUploaderBundle 管理。
有没有办法显示它们?
目前我在我的 twig 文件中这样做
<html>
<head>
<meta charset="UTF-8">
<title>Title of the PDF</title>
</head>
<body>
<h4>{{ title }}</h4>
<p>Lorem Ipsum</p>
<div class="user-pic">
{% if app.user and app.user.avatar and app.user.avatar.imageName %}
<img class="img img-responsive img-rounded" src="{{ absolute_url(vich_uploader_asset(app.user.avatar, 'imageFile'))}}">
{% else %}
<img src={{"/images/avatar/default.jpg"}}>
{% endif %}
</div>
</body>
</html>
但它不起作用。图像丢失。只有“alt”。
我的 vichUploader 配置:
avatar:
uri_prefix: /images/avatar
upload_destination: "%kernel.project_dir%/public/images/avatar"
inject_on_load: false
delete_on_update: true
delete_on_remove: true
在我的控制器中:
/**
* Générer un PDF
* @Route("/absence/pdf", name="absence_pdf")
*
* @return void
*/
public function createPDF()
{
// Configure Dompdf according to your needs
$pdfOptions = new Options();
$pdfOptions->set('defaultFont', 'Arial')
->set('isRemoteEnabled', true);
// Instantiate Dompdf with our options
$dompdf = new Dompdf($pdfOptions);
// Retrieve the HTML generated in our twig file
$html = $this->renderView('absence/pdf.html.twig', [
'title' => "Welcome to our PDF Test"
]);
// Load HTML to Dompdf
$dompdf->loadHtml($html);
// (Optional) Setup the paper size and orientation 'portrait' or 'portrait'
$dompdf->setPaper('A4', 'portrait');
// Render the HTML as PDF
$dompdf->render();
// Output the generated PDF to Browser (inline view)
$dompdf->stream("mypdf.pdf", [
"Attachment" => false
]);
}
我有这个错误:
错误:超过 120 秒的最大执行时间
【问题讨论】:
-
你说的不起作用是什么意思?请将您的 VichUploader 配置和实际呈现 pdf/图像的控制器部分添加到问题中。如果将此模板呈现为 pdf 会发生什么? pdf 中的图像是否:a) 缺失 b) 空白,c) 显示
default.jpg, d) ...?我们无法猜测这段代码 sn-p 的当前行为。 -
在 pdf 上,我只有出现的图像的“alt”部分。否则,图片丢失。我会更新我的第一篇文章
-
我已经有一段时间没有使用 dompdf 了。问题是 dompdf 首先不知道您的本地网络服务器,因此无法从当前相对路径呈现图像。解决方案如下。
标签: image symfony twig dompdf vichuploaderbundle