Weasyprint / Cairo теряет текстовые метки SVG при преобразовании в PDF - PullRequest
0 голосов
/ 07 мая 2020

У меня есть изображение SVG, сгенерированное Bokeh (ссылка здесь) с метками слева и внизу диаграммы.

Само изображение показывает текст внутри диаграммы отлично, однако при преобразовании в PDF через Weasyprint текст теряется. (See here for a screenshot of the 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

1 Ответ

0 голосов
/ 07 мая 2020

Я не уверен, связано ли это с 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), и это устранило мою проблему.

...