DomPDF仅部分识别@Media打印CSS

时间:2016-06-13 19:39:38

标签: php html css printing dompdf

我创建了一系列.html文档,每个打印页面的末尾都显示一个页脚,而不会显示在屏幕上。我还明确声明了分页符,以便它们属于无中断的地方。这是使用CSS组合:

完成的
@media screen {
   .bottom, .split {
        display: none;
    }
}

@media print {
    .bottom {
        display: block;
        text-align: center;
        width: 8in;
        position: fixed;
        bottom: 0;
    }

    .split {
        page-break-before: always;
    }

    .whole {
        page-break-inside: avoid;
    }
}

底层类用于页脚,分页符用于分页符,而整个类用于数据表,因此它们不会在中间拆分。通过浏览器的print命令打印单个文档时,这非常有效。

但是,这些文档必须通过批处理脚本运行,该脚本为其他一些业务流程(使用DOMPDF的PHP)生成它们的PDF副本。最初,没有识别@media打印CSS引用。然后我将DOMPDF_DEFAULT_MEDIA_TYPE更改为“print”,它开始识别分页符,但仍然拒绝打印页脚。再次,当直接从浏览器打印时,页脚打印出来就很好了。

我需要尽快纠正这个问题。任何意见都将不胜感激。

编辑:我已经确认文档中的HTML符合HTML5标准。

1 个答案:

答案 0 :(得分:0)

查看源代码看起来像dompdf几乎为所有类型的媒体类型添加样式除了默认值(或类似的东西......我必须查看代码还有一点看看真的发生了什么。)

case "media":
  $acceptedmedia = self::$ACCEPTED_GENERIC_MEDIA_TYPES;
  $acceptedmedia[] = $this->_dompdf->get_option("default_media_type");

  $media = preg_split("/\s*,\s*/", mb_strtolower(trim($match[3])));

  if ( count(array_intersect($acceptedmedia, $media)) ) {
    $this->_parse_sections($match[5]);
  }
  break;

[ref]

您没有指定您正在使用的版本,但是在0.6.2(使用配置文件的最后一个版本。我要说尝试使用像{{1}这样的组合媒体选择器让dompdf识别打印样式。