1

我想使用最新的飞碟渲染 PDF 文档

build.gradle:

implementation 'org.xhtmlrenderer:flying-saucer-pdf-openpdf:9.1.22'

输入 HTML 文档(几乎是W3 学校的副本):

<!DOCTYPE html>
<html>
<head>
<style>
.flex-container {
  display: flex;
  background-color: DodgerBlue;
}

.flex-container > div {
  background-color: #f1f1f1;
  margin: 10px;
  padding: 20px;
  font-size: 30px;
}
</style>
</head>
<body>

<h1>Create a Flex Container</h1>

<div class="flex-container">
  <div>1</div>
  <div>2</div>
  <div>3</div>  
</div>

</body>
</html>

示例代码(作为 JUnit 测试):

class FlexTest {

  @Test
  void flexTest() throws FileNotFoundException, IOException {

    final String htmlContent =
        IOUtils.toString(new FileInputStream("input.html"), Charset.defaultCharset());

    ITextRenderer renderer = new ITextRenderer();
    renderer.setDocumentFromString(htmlContent);
    renderer.layout();
    renderer.createPDF(new FileOutputStream("output.pdf"));
  }
}

它工作正常,除了display: flex没有正确呈现。看起来它被渲染为常规<div>

在此处输入图像描述

FlyingSaucer/openpdf是否支持flex box?我没有找到任何说明它不是的。

4

1 回答 1

1

飞碟不支持 Flex,并且可能永远不会支持它。

飞碟支持的 CSS 仅限于CSS 2.1和大多数CSS 分页媒体

于 2021-11-08T15:34:33.350 回答