PHP: преобразование HTML-файла в PDF - PullRequest
2 голосов
/ 16 января 2012

У меня есть 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 ]

3 голосов
/ 16 января 2012

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

1 голос
/ 16 января 2012

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

...