Добавить CSS в DomPDF - PullRequest
       11

Добавить CSS в DomPDF

0 голосов
/ 12 февраля 2019

У меня есть этот код для экспорта некоторых данных в PDF.И я хотел бы добавить CSS из внешнего файла CSS (который не упоминается в используемом html)

/*********************************** Export PDF ****************************************************/
if($request->query->get('exportPDF')!= null){
    // Configure Dompdf according to your needs
    $pdfOptions = new Options();
    $pdfOptions->set('defaultFont', 'Arial');
    // Instantiate Dompdf with our options
    $dompdf = new Dompdf($pdfOptions);
    // Retrieve the HTML generated in our twig file
    $html = $this->renderView('dashboard/user_table.html.twig', [
        'users' => $users
    ]);
    // Load HTML to Dompdf
    $dompdf->loadHtml($html);
    // (Optional) Setup the paper size and orientation 'portrait' or 'portrait'
    $dompdf->setPaper('A3', 'landscape');
    // Render the HTML as PDF
    $dompdf->render();
    // Output the generated PDF to Browser (force download)
    $dompdf->stream("exportUsers.pdf", [
        "Attachment" => true
    ]);
}

user_table.html - это только файл с <table>

у кого есть некоторый класс из файла CSS, загруженного в другой шаблон.Это означает, что для DomPDF файл, содержащий css, неизвестен, и в результате у меня есть таблица без css в моем pdf.Я пытался добавить таблицу стилей в мой html напрямую, но импорт тоже не работает.Но я все равно не хочу добавлять его в html, загруженный css является шаблоном более высокого уровня.

Как добавить внешние файлы (такие как начальная загрузка и т. Д.) Из этой структуры?Я не знаю, возможно ли это вообще.Спасибо за помощь;)

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

ссылка на файл css должна быть указана в HTML, который вы передаете DomPDF.

Если вы не хотите изменять шаблон ветки, вы можете использовать обходной путь, подобный следующему:

$dompdf = new Dompdf();
$html = $this->renderView('dashboard/user_table.html.twig', [
    'users' => $users
]);
$html .= '<link type="text/css" href="/absolute/path/to/pdf.css" rel="stylesheet" />';
$dompdf->loadHtml($html);

Обратите внимание, что добавление тега link в тело недопустимо в соответствии со спецификациями HTML.В текущей версии Dompdf это работает, но может не работать в будущих версиях.

0 голосов
/ 12 февраля 2019

Вы всегда можете использовать подобные решения Включая файл без веток из ветки читать содержимое внешнего файла прямо в атрибут шаблонов, поэтому css будет отображаться как встроенный и будет совместим с mpdf.

...