DomPDF只能部分识别@Media打印CSS



我创建了一系列.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;
}
}

底部类用于页脚,拆分类用于分页符,整个类用于数据表,以便它们不会在中间拆分。当通过浏览器的打印命令打印单个文档时,这非常出色。

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

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

编辑:我已经确认文档中的HTML根据HTML5标准进行验证。

从源代码来看,看起来 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;

[参考资料]

您没有指定正在使用的版本,而是在 0.6.2(使用配置文件的最后一个版本)中指定的版本。我会说尝试使用像@media print,dompdf这样的组合媒体选择器来让 dompdf 识别打印样式。

最新更新