У меня есть этот код для экспорта некоторых данных в 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 - это шаблон более высокого уровня.
Как добавить внешние файлы (например, бутстрап и т. д.) из этой структуры? Я не знаю, возможно ли это вообще. Спасибо за помощь ;)
@ TOH19 это не так, ответ не предоставлен + мужчина говорит: ваш CSS должен быть частью HTML, который вы отправляете в dompdf. Я не хочу этого, мой css уже в другом месте.
@ ᴄʀᴏᴢᴇᴛ Это не так, они загружают CSS внутри html ... как я уже сказал, это не так. Пользовательские шаблоны знают об этом, потому что шаблоны загружаются с другой страницы. Но, как вы заметили... для dom pdf... нет ссылки на файл css. Так вот вопрос, как его добавить, не добавляя в html файл. Я не знаю.






Вы всегда можете использовать решения, подобные этому Включение файла без ветки из ветки, считывать содержимое внешнего файла прямо в атрибут шаблонов, поэтому css будет отображаться встроенным и будет совместимым с mpdf.
Не уверен, что понимаю, что вы имеете в виду здесь.
Попробуйте визуализировать содержимое внешнего файла прямо в ваш html-контент, который вы передаете в dompdf.
ссылка на файл 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 это работает, но может не работать в будущих версиях.
Имейте в виду, что браузеры могут «исправить» неправильно размещенный элемент LINK, переместив его в заголовок. Я бы по-прежнему использовал элемент ссылки, но вы можете добавить атрибут мультимедиа с типом мультимедиа «dompdf», чтобы настроить таргетинг на dompdf, например. <link type = "text/css" media = "dompdf" href = "/absolute/path/to/pdf.css" rel = "stylesheet" />.
Возможный дубликат Как включить внешнюю таблицу стилей в dom pdf