TCPDF не отображает внешний CSS

Я пытаюсь создать PDF-файлы, используя TCPDF библиотека. Пока что я могу создавать PDF-файлы, используя PHP-код. Хотя он не отображает внешний CSS и результат становится бесполезным, так как без CSS документ не читается.

Ниже приведен мой код в контроллере:

 public function generate_pdf() {

$this->load->model('rosters', 'roster');

$data = array();

$data['start_date'] = isset($_POST['fortnightStartDate']) ?
date("Y-m-d", strtotime(getFortnightStartDate($_POST['fortnightStartDate']))) :
getFortnightStartDate();
$cid = $_POST['cid'];
$wno = $_POST['wno'];$data['no']=$wno;

$startDate = strtotime($data['start_date']);

$data['schedule'] = $this->roster->getShifts($cid, $data);

$data['startDate'] = $startDate;$listing = $this->load->view('roster/roster_pdf', $data, true);/**
* Creates an example PDF TEST document using TCPDF
* @package com.tecnick.tcpdf
* @abstract TCPDF - Example: XHTML + CSS
* @author Nicola Asuni
* @since 2010-05-25
*/

// Include the main TCPDF library (search for installation path).
require_once(APPPATH.'libraries/tcpdf/tcpdf.php');

// create new PDF document
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

// set document information
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Nicola Asuni');
$pdf->SetTitle('TCPDF Example 061');
$pdf->SetSubject('TCPDF Tutorial');
$pdf->SetKeywords('TCPDF, PDF, example, test, guide');

// set default header data
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 061', PDF_HEADER_STRING);

// set header and footer fonts
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));

// set default monospaced font
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

// set margins
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

// set auto page breaks
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

// set image scale factor
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

// set some language-dependent strings (optional)
if (@file_exists(dirname(__FILE__).'/lang/eng.php')) {
require_once(dirname(__FILE__).'/lang/eng.php');
$pdf->setLanguageArray($l);
}

// ---------------------------------------------------------

// set font
$pdf->SetFont('helvetica', '', 10);

// add a page
$pdf->AddPage();$pdf->writeHTML($listing, true, false, true, false, '');

//Close and output PDF document
$pdf->Output('TEST.pdf', 'F');

}

Я передаю $listing переменная, которая содержит данные, которые должны быть включены в PDF. Данные печатаются нормально, но без CSS. Если я пытаюсь включить внешний CSS, появляется сообщение об ошибке.

Код для включения внешнего CSS

$listing. = '<style>'.file_get_contents(base_url("styles/style.css")).'</style>';

Я пытаюсь включить эту строку кода ниже $listing переменная, но она генерирует следующую ошибку:

A PHP Error was encountered

Severity: Warning

Message: array_merge(): Argument #2 is not an array

Filename: tcpdf/tcpdf.php

Line Number: 16375

Есть ли другой способ загрузить внешний CSS?
Любая помощь будет высоко оценена.

2

Решение

После исследования здесь и там я узнаю, что TCPDF Библиотека имеет несколько ограничений, включая ограничение CSS, и не поддерживает многие свойства CSS. Затем я посмотрел в dompdf библиотека и нашла это полезным. Удивительно, но это решило все мои проблемы с почти похожим кодом, а также его было проще использовать, чем TCPDF, Ниже приведен мой кусок кода, который я написал, чтобы решить мою проблему (код похож на $listing переменная, то я просто изменить код библиотеки.)

 $listing .= '<style>'.file_get_contents(base_url("styles/style.css")).'</style>';require_once(APPPATH.'libraries/dompdf/dompdf_config.inc.php');

$dompdf = new DOMPDF();
$dompdf->load_html($listing);
$dompdf->set_paper('a4', 'landscape');
$dompdf->render();

file_put_contents('my_pdf_test.pdf', $dompdf->output());
//$dompdf->stream("dompdf_out.pdf", array("Attachment" => true));
exit(0);
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]