我目前正在尝试通过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类(我甚至不需要任何特定的字体,只有一个有效。)
答案 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);