通过PHP将HTML转换为PDF(安装html2pdf的字体)

时间:2015-10-02 09:45:06

标签: php pdf fonts tcpdf html2pdf

我目前正在尝试通过PHP脚本动态地将HTML标记(从xml提要)转换为PDF。

通过阅读其他答案,最好的免费方式似乎是使用html2pdf

// HTML2PDF
require_once('/public_html/html2pdf/html2pdf.class.php');
$html2pdf = new HTML2PDF('P','A4','en');
$html2pdf->WriteHTML($htmlContent);
$html2pdf->Output('/public_html/wp-content/uploads/rns/html2pdf.pdf');

我遇到的问题是我的$htmlContent在各个地方都包含css:FONT-FAMILY: "Times New Roman","serif",我的脚本会出错:

TCPDF ERROR: Could not include font definition file: "times new roman"

我用Google搜索了,唯一的文档是这样的: http://wiki.spipu.net/doku.php?id=html2pdf:en:v4:font

这又会引导您: http://www.tcpdf.org/fonts.php

我迷路了,第二个链接说时代/ Times New Roman是一个核心PDF字体......我尝试了各种各样的东西并得到了同样的错误。

我实际需要编写什么来添加字体,或者我怎样才能从$htmlContent中删除所有FONT-FAMILY类(我甚至不需要任何特定的字体,只有一个有效。)

3 个答案:

答案 0 :(得分:1)

是的,您应该使用DOMPDF而不是其他库。有很多字体可用。您可以在“dompdf / lib / fonts / dompdf_font_family_cache.dist.php”中看到并根据您的要求进行选择。要更改在文件路径“dompdf / dompdf_config.inc.php”中更改def(“DOMPDF_DEFAULT_FONT”,“serif”)所需的字体:

您可以从https://code.google.com/p/dompdf/downloads/detail?name=dompdf_0-6-0_beta3.tar.gz&can=2&q=

下载DOMPDF的最新版本

见下面的例子:

require_once("dompdf/dompdf_config.inc.php");
$dompdf = new DOMPDF();
$dompdf->load_html($htmlContent);
$dompdf->render();                

$fileName = "invoice.pdf";
$dompdf->stream($fileName);//DOWNLOAD PDF 

//GET OUTPUT AS STRING AND PUT IN TO SOME FILE   
$output = $dompdf->output();
file_put_contents($fileName, $output);

答案 1 :(得分:0)

尝试使用DomPdf而不是html2pdf。在PDF中创建发票对我来说非常有用。但是需要在CSS代码中进行一些处理(定位和字体大小)。放置的屏幕内容并不像我预期的那样工作。 https://github.com/dompdf/dompdf

答案 2 :(得分:0)

这有点像黑客,但我发现对我来说最好的方法是使用exec调用capturejs:

$run = "capturejs -u ";
$run .= "https://www.example.com/";
$run .= " -p tlsv1 -V ";
$run .= "1024x768";
$run .= " -o 'myimage.png'";
exec($run);

https://github.com/superbrothers/capturejs