在 Symfony 中包含用于传播 PDF 生成器包的字体
Posted
技术标签:
【中文标题】在 Symfony 中包含用于传播 PDF 生成器包的字体【英文标题】:Including fonts for spread PDF generator bundle in Symfony 【发布时间】:2017-12-17 19:38:38 【问题描述】:我有一个 Symfony 项目,我需要导出包含图像、文本等的 PDF 代码(存储在数据库中,然后与标题一起下载)。我无法在 Web 服务器上安装任何东西,所以没有查看在 KnpSnappyBundle,但我使用的是 Spread PDF 生成器包 (https://github.com/stedekay/SpraedPDFGeneratorBundle)。
我可以让它在控制器中创建一个 pdf:
$html = $this->render('templates/test1.html.twig');
$pdfGenerator = $this->get('spraed.pdf.generator');
return new Response($pdfGenerator->generatePDF($html),
200,
array(
'Content-Type' => 'application/pdf',
'Content-Disposition' => 'inline; filename="out.pdf"'
)
);
来自树枝文件:
<html>
<head>
<title>test</title>
<style>
@font-face
font-family: 'Roboto';
src: url( absolute_url(asset('css/fonts/Roboto/Roboto-Medium.ttf')) ) format('truetype');
h1
font-family: Roboto;
font-size: 100px;
</style>
</head>
<body>
<h1>test</h1>
</body>
</html>
但它总是显示 Times New Roman 作为字体!即使我选择像 Arial 这样常见的东西。
如何获取要嵌入的字体?或者是否有另一个用于 Symfony 的包,它可以从 html 创建一个不需要在服务器上安装任何东西的 PDF?
【问题讨论】:
【参考方案1】:我现在正在使用扩展 wkhtmltopdf 的 Knp Snappy Bundle https://github.com/KnpLabs/KnpSnappyBundle。为了避免在服务器上手动安装任何东西,我使用了https://github.com/zendre4/wkhtmltopdf-amd64,它会在你安装 composer 时包含二进制文件(我没有使用这个派生出来的项目,因为它已经过时了)。
然后在你的配置(一般是/app/config/config.yml)中添加:
knp_snappy:
pdf:
enabled: true
binary: %kernel.project_dir%/vendor/bin/wkhtmltopdf-amd64
options: []
composer install 将添加一个供应商(因此二进制文件不包含在您的项目存储库中),它将创建指向 vendor/bin 中二进制文件的符号链接。然后,此配置将告诉 knp_snappy 在哪里可以找到此二进制文件,因此您的部署的所有内容都在您的 composer 安装(或更新)中处理。
这些是简要说明,如果有人需要更多详细信息,请在评论中添加问题,我会更新此答案。
【讨论】:
您好,您是如何从 css 初始化字体的?以上是关于在 Symfony 中包含用于传播 PDF 生成器包的字体的主要内容,如果未能解决你的问题,请参考以下文章
在 for 循环 r markdown 中包含两个变量之间的空格(pdf 输出)