10

我正在使用 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="...">

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

4

3 回答 3

5

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

于 2013-08-02T19:06:22.797 回答
4

<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" />

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

于 2013-08-02T04:15:06.310 回答
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>    

这就是对我有用的简单技巧。

于 2016-09-16T08:30:16.530 回答