CSS不使用DOMPDF

时间:2013-08-02 04:08:24

标签: php css styles stylesheet dompdf

我使用DOMPDF(v 0.5.2)将html页面转换为pdf文件。

pdf文件在PHP脚本运行后出现(如预期的那样),但没有样式应用于任何内容。据我所知,浮动属性不适用于DOMPDF,所以我必须做一些工作来解决这个问题,但是甚至没有应用字体样式。

我尝试了三种包含样式的方法: 附上样式表,

<link href="styles.css" rel="stylesheet" type="text/css">

在标题中写样式

<style>...</style>

和内联样式。

<div class="..." style="...">

创建pdf的php文件看起来像这样......

<?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:上面的标签是“风格”,而不是“风格”。修正了错字。

3 个答案:

答案 0 :(得分:4)

dompdf v0.5.x不支持浮点数。 v0.6.0确实如此,但它仍然是一个必须在配置中启用的实验性功能。在测试你的文档后,我可以说dompdf不能很好地处理它。如果你想坚持使用dompdf,你可以考虑使用表,因为你的文档本质上是表格式的。

答案 1 :(得分:1)

可以通过在<style>元素而不是<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" />

如果外部样式表不起作用,请检查源文件路径。

答案 2 :(得分:1)

简单的解决方案是,将您的css放在单独的(.php)或任何其他服务器脚本文件中,并将其包含在您的pdf文件中。 例如。 你有pdf的pdf.blade.php文件

<!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>

假设你有css文件style.css,那么下一步是复制你的css文件内容并将其粘贴到新的style.blade.php 你几乎完成了!!

现在将其包含在您的pdf文件中 例如

<style>
  @include('style')
</style>    

这就是简单的伎俩对我有用。