PHP: преобразование html-файла в pdf
У меня есть html-файл с именем welcomemailtemplate.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, '');
Но если я передам содержимое прочитанного html-файла для создания pdf, используя следующий метод, это даст следующее ошибка:
$pdf->writeHTML($message, true, false, true, false, '');
$pdf->LastPage();
Сообщение об ошибке:
Undefined index: thead
2 answers
Попробуйте проверить файл с помощью средства проверки w3c http://validator.w3.org /.
Я работал с tcpdf раньше, но отказался от него, потому что он не казался надежным. Вы также можете попробовать wkhtmltopdfдвоичный файл (только если ваш хостинг позволяет вам использовать proc_open
/proc_close
). Мне кажется, он немного более стабилен. Он также имеет класс PHP, который поможет вам его использовать.