Я использую DOMPDF (v 0.5.2) для преобразования html-страницы в pdf-файл.
Файл PDF появляется после запуска скрипта PHP (как и ожидалось), но ни один стиль не применяется к какому-либо содержимому. Насколько я могу найти, свойство float не работает с DOMPDF, поэтому я должен выполнить некоторую работу, чтобы обойти это, но даже стили шрифта не применяются.
Я пробовал все три метода включения стилей: прикрепление таблицы стилей,
<link href="styles.css" rel="stylesheet" type="text/css">
стилей записи в заголовке,
<style>...</style>
и встроенные стили.
<div class="..." style="...">
Файл php для создания pdf выглядит так …
<?php ob_start(); ?> <html> <head> <link href="flhaha.css" rel="stylesheet" type="text/css"> </head> <body> ... content (divs, etc) </body> </html> <?php require_once("../../scripts/dompdf/dompdf_config.inc.php"); $dompdf = new DOMPDF(); $dompdf->load_html(ob_get_clean()); $dompdf->render(); $dompdf->stream('test.pdf'); ?>
В пределах содержимого, которое загружается отлично и отображается правильно при открытии PDF-файла, изображение остается неподвижным, но стилей нет.
Заранее спасибо!
Редактировать # 1: вышеприведенные теги должны были быть «стилем», а не «стилями». Устранили опечатку.
dompdf v0.5.x не поддерживает поплавки. v0.6.0 делает, хотя он все еще является экспериментальной функцией, которая должна быть включена в конфигурации. После тестирования вашего документа я могу сказать, что dompdf не справляется с этим очень хорошо. Если вы хотите придерживаться dompdf, вы можете рассмотреть таблицы, так как ваш документ имеет несколько табличный характер.
Внутренняя таблица стилей может быть создана путем включения стилей между элементом <style>
element not <styles>
.
ниже stmt неверно:
<styles>...</styles>
Должен быть :
<style> ... </style>
и встроенные стили должны быть указаны, как показано ниже:
<div class="className" style="color:red;text-align: left;">
и внешняя таблица стилей должна быть включена, как показано ниже:
<link rel="stylesheet" type="text/css" media="screen" href="styles.css" />
Если внешняя таблица стилей не работает, проверьте путь к исходному файлу.
Простое решение: поместите свой css в отдельный (.php) или любой другой файл сценариев сервера и включите его в файл pdf. например. У вас есть файл pdf.blade.php для pdf
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content=""> <meta name="author" content=""> {{-- <link rel="icon" href="/favicon.ico"> --}} <title>Starter Template for Bootstrap</title> <style type="text/css"> @include('pdf.style') </style> </head> <body> <nav class="navbar navbar-inverse navbar-fixed-top"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="#">Project name</a> </div> <div id="navbar" class="collapse navbar-collapse"> <ul class="nav navbar-nav"> <li class="active"><a href="#">Home</a></li> <li><a href="#about">About</a></li> <li><a href="#contact">Contact</a></li> </ul> </div><!--/.nav-collapse --> </div> </nav> <div class="container"> <div class="starter-template"> <h1>Bootstrap starter template</h1> <p class="lead">Use this document as a way to quickly start any new project.<br> All you get is this text and a mostly barebones HTML document.</p> </div> </div><!-- /.container --> </body> </html>