Weasyprint/Cairo 转换为 PDF 时丢失 SVG 文本标签

Weasyprint/Cairo loses SVG text labels when converting to PDF

我有一张由 Bokeh (link here) 生成的 SVG 图像,在图表的左侧和底部带有标签。

图像本身显示图表中的文本很好,但是,当通过 Weasyprint 转换为 PDF 时,文本丢失了。

有没有其他人遇到过类似的问题?我不确定如何调试它,因为转换时没有错误。

我的导出函数的一个片段:

html = HTML(string=html_string)

    result = html.write_pdf('./tmp/example.pdf', stylesheets=[css],
    font_config=font_config)

在 HTML 模板中,我使用 css 将图像作为背景图像嵌入:

html body article#columns section#linechart{
  width: 100%;
  background: url(./tmp/linechart.svg) no-repeat center;
  background-size: contain;
  margin: 0;
  height: 500px;
  overflow: visible;
}

提前致谢!

当前版本信息:

CairoSVG = 2.4.2
Weasyprint = 51
Python = 3.73

我不确定这是否与 Cairo 或 Weasyprint 有关 - 但是,我发现问题的发生是由于 SVG 的字体样式。显然,Bokeh 在实际文本元素中使用如下样式:

<text fill="#444444" stroke="none" font-family="helvetica" font-size="13px" font-style="normal" font-weight="normal" text-decoration="normal" x="472.67919921875" y="58" text-anchor="start" dominant-baseline="central">Opportunities</text>

其中大多数其他绘图库通过 类 或内联使用正常样式,如下所示:

<text class="title plot_title" x="400.0" y="26">Opportunities entered YTD</text>

为了解决 - 我选择使用 Pygal(Kozea 的另一个很棒的回购协议),这解决了我的问题。