【问题标题】:DomPDF Only Partially Recognizing @Media Print CSSDomPDF 仅部分识别@Media Print CSS
【发布时间】:2016-06-13 19:39:37
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: php html css printing dompdf


    【解决方案1】:

    查看源代码,看起来 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(使用配置文件的最后一个版本。我会说尝试使用像 @media print,dompdf 这样的组合媒体选择器来让 dompdf 识别打印样式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-11
      • 1970-01-01
      • 2013-07-30
      • 1970-01-01
      • 2011-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多