2015-10-02 52 views
0

我目前正在尝试通过PHP脚本将HTML标记(从XML源)转换为PDF动态。通过PHP将HTML转换为PDF(为html2pdf安装字体)

从阅读其他答案,这样做的最好的免费方式似乎是使用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/Times New Roman是一个核心PDF字体......我尝试了各种各样的东西并得到相同的错误。

我真的需要写什么来添加字体,或者我怎样才能去掉$htmlContent以外的所有字体类(我甚至不需要任何特定的字体,只有一个作品)。

回答

0

尝试使用DomPdf而不是html2pdf。它对我创建PDF格式的发票非常有用。但是在你的CSS代码中需要一些处理(定位和字体大小)。放置的屏幕内容没有按照我的预期工作。 https://github.com/dompdf/dompdf

+0

我以前看过,但无法弄清楚。似乎没有任何PHP示例或文档...您认为您可以举一个例子来说明如何使用DomPdf来完成上述操作吗?只需一串html'$ htmlContent'并输出pdf(到文件)。 –

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

1

是的,你应该使用DOMPDF,而不是其他库。有很多可用的字体。您可以在“dompdf/lib/fonts/dompdf_font_family_cache.dist.php”处看到并根据您的要求进行选择。为了改变字体,你需要在文件路径改变DEF(“DOMPDF_DEFAULT_FONT”,“衬线”)“DOMPDF/dompdf_config.inc.php”: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); 
+0

使用此作品...干杯!只是一个简短的说明,我在github上发现了一个更新版本的DOMPDF(0.7 beta),并且它没有与上面的代码一起工作,看起来他们已经改变了一些东西,本文中的链接中的一个做了我需要。 –

+0

对不起......说了很快,DOMPDF在使用此方法转换HTML表时遇到了严重错误,并且存在特殊字符问题。不适用于我。似乎有很多HTML到PDF的解决方案,我不会推荐DOMPDF,除非你正在做一些非常基本的事情。 –