使用CSS和图像生成PDF

jmi*_*uel 7 css pdf image

使用Symfony2.3.​​4

我正在使用这个包生成PDF文档:SpraedPDFGeneratorBundle,这是它的主要php类(我认为):PDFGenerator.php

我设法生成它们很好但我不知道如何设置fontPath参数来生成css修改的PDF,其中也包含一些图像.这里:

///XController.php
$pdfGenerator = $this->get('spraed.pdf.generator');
$pdf = $pdfGenerator->generatePDF($postData/* , 
'UTF-8', array(<SOME_PATH_I_GUESS>) */);
Run Code Online (Sandbox Code Playgroud)

第一个参数是要输出到PDF的html数据,第二个我有点猜对了,但我不确定,第三个是fontPath.

图像的东西也是我会喜欢的提示...

有没有人曾经使用过此捆绑或类似的东西; 如果是的话,请你帮忙吗?

Car*_*ara 5

好吧,我找到了答案.

您要问两件事:如何添加图像以及如何添加新字体.

添加图像

这很简单.假设您正在使用Twig,则需要执行以下操作:

<img src="{{ app.request.scheme ~'://' ~ app.request.httpHost ~ asset("img/MyImage.png") }}" />
Run Code Online (Sandbox Code Playgroud)

当然你也可以把它变成一个宏,所以你不要在这个地方重复自己,就像这样.

{% macro image(uri) %}
{{ app.request.scheme ~'://' ~ app.request.httpHost ~ asset(uri) }}
{% endmacro %}
Run Code Online (Sandbox Code Playgroud)

你就这样使用它

{% import '::imgurimacro.html.twig' as img %}
...
<img src="{{ img.image('img/MyImage.png') }}" />
Run Code Online (Sandbox Code Playgroud)

它应该工作.

添加字体

这个有点复杂.首先确保您拥有最新的Spraed PDF Generator版本.在composer.json中:

"spraed/pdf-generator-bundle": "dev-master"
Run Code Online (Sandbox Code Playgroud)

每当您必须将字体添加到新PDF时,请执行以下操作:

$pdf = $pdfGenerator->generatePDF($postData , 'UTF-8', array('C:\Windows\Fonts\Font1.ttf', 'C:\Windows\Fonts\Font2.ttf'));
Run Code Online (Sandbox Code Playgroud)

接下来,fontsweb文件夹中(或者您放置资源的任何位置)创建一个文件夹(或您选择的任何名称),并在那里添加.ttf文件.

在Twig文件中,将以下内容添加为CSS样式:

@font-face {
    font-family: "MyFontFamily";
    src: {{ app.request.scheme ~'://' ~ app.request.httpHost ~ asset('fonts/Font1.ttf') }};
}
Run Code Online (Sandbox Code Playgroud)

现在每当你写

<p style="font-family: MyFontFamily">Hello World!</p>
Run Code Online (Sandbox Code Playgroud)

它应该打印"Hello World!" 使用pdf中的注册字体.