飞碟是否支持伪元素

Does flying saucer support pseudo elements

我一直在尝试将带有内容的伪元素添加到正在使用飞碟库转换的页面的 CSS 中。在常规浏览器中以 HTML 查看页面时,代码工作正常,我可以看到伪元素 (:before)。然而,当使用 Flying Saucer 渲染 PDF 时,伪元素消失了。

根据官方飞碟规范,支持 CSS 2.1,因此应该包括伪元素和内容属性。那为什么它对我不起作用?所有其他 CSS 工作正常。

飞碟支持以下CSS个伪元素:

  • before
  • after
  • first-line
  • first-letter

它只支持标准的双冒号 CSS3 语法 (::after),而不支持旧的单冒号 CSS2 语法 (:after ).

这是一个工作示例:

<html>
<head>
<style>
  div::before {content: "before - "}
  div::after  {content: " - after"}
  p::first-line   {font-weight:bold}
  p::first-letter {color:blue}
</style>
</head>
<body>
  <div>A div</div>
  <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus sed scelerisque augue. Nulla eleifend aliquet tortor, vel placerat velit fringilla vitae. Sed quis sem eu arcu dapibus convallis.</p>
</body>
</html>

结果(使用飞碟 9.1.6):

除CSS2.1伪元素外the CSSParser,还有:

  • first-line
  • first-letter
  • before
  • after

Flying Saucer 支持以下伪元素输出渲染:

  • first-child
  • even
  • odd
  • last-child

一些浏览器 related/interactive 也支持伪元素:

  • link
  • visited
  • hover
  • focus
  • active

查看addPseudoClassOrElement的源代码。