2012-01-16 2 views
2

У меня есть html-файл с именем welcomemailtemplate.html, и мне нужно преобразовать этот файл в PDF-файл.PHP: преобразование html-файла в pdf

я впервые прочитал этот файл, используя следующий метод, предоставленный фреймворка:

$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-файл co ntent для создания PDF с помощью следующего метода он дает следующую ошибку:

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

Сообщение об ошибке:

Undefined index: thead 
+1

Возможно, шаблон не действителен HTML? Вы пробовали проверить его? –

+0

Файл шаблона html можно просмотреть в браузере, поэтому я предполагаю, что он не имеет никаких ошибок. – KItis

+2

@KItis. Браузеры выполняют огромное количество исправлений ошибок, так что это ужасное предположение. – Quentin

ответ

3

Попробуйте проверить файл с помощью w3c валидатор http://validator.w3.org/.
Я работал с tcpdf раньше, но я отказался от него, потому что он не казался надежным. Вы также можете попробовать wkhtmltopdf двоичный код (только если ваш хостинг позволяет использовать proc_open/proc_close). Кажется немного более стабильным для меня. Он также имеет PHP class, чтобы помочь вам использовать его.

1

CutyCapt, кажется, очень хороший вариант для вас. Его очень легко интегрировать.