PHP:将html文件转换为pdf

时间:2012-01-16 09:07:19

标签: php pdf-generation yii tcpdf

我有一个名为welcomemailtemplate.html的html文件,我需要将该文件转换为PDF格式。

我首先使用Yii框架提供的以下方法阅读此文件:

$filename = Yii::app()->basePath.'\views\email\welcomemailtemplate.html';
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
$name = $model->name;
fclose($handle);
$message = str_replace ( "[username]", $name, $contents );

然后,要生成PDF文件,请设置以下参数:

 Yii::import('application.vendors.*');
       require_once('tcpdf/tcpdf.php');
       require_once('tcpdf/config/lang/eng.php');
       $pdf = new TCPDF();
       $pdf->SetCreator("Torget");
       $pdf->SetAuthor('test name');
       $pdf->SetTitle('Savani Test');
       $pdf->SetSubject(' Torget Order Confirmation');
       $pdf->SetKeywords(' Torget, Order, Confirmation');
       //$pdf->SetHeaderData('', 0, PDF_HEADER_TITLE, '');
       $pdf->SetHeaderData('', 0, "Torget Order", '');
       $pdf->setHeaderFont(Array('helvetica', '', 8));
       $pdf->setFooterFont(Array('helvetica', '', 6));
       $pdf->SetMargins(15, 18, 15);
       $pdf->SetHeaderMargin(5);
       $pdf->SetFooterMargin(10);
       $pdf->SetAutoPageBreak(TRUE, 0);
       $pdf->SetFont('dejavusans', '', 7);
       $pdf->AddPage();

如果我按如下方式传递内容,则会创建PDF:

 $pdf->writeHTML("<span>Hello World!</span>", true, false, true, false, '');

但是,如果我使用以下方法传递pdf创建的读取html文件内容,则会出现以下错误:

  $pdf->writeHTML($message, true, false, true, false, '');
       $pdf->LastPage();

错误讯息:

Undefined index: thead

2 个答案:

答案 0 :(得分:3)

尝试使用w3c验证器http://validator.w3.org/验证文件。 我之前和tcpdf一起工作过,但我放弃了,因为它看起来不太可靠。您也可以尝试使用wkhtmltopdf二进制文件(仅当您的托管允许您使用proc_open / proc_close时)。对我来说似乎更稳定一点。它还有PHP class来帮助您使用它。

答案 1 :(得分:1)

CutyCapt似乎是一个非常好的选择。它也很容易整合。