TextPath не отображается в PDF с использованием Apache FOP - PullRequest
0 голосов
/ 13 апреля 2020

Я использую Apache FOP для создания PDF, некоторые страницы требуют SVG. По большей части это работает нормально, пока я не добавлю элемент TextPath. Я использую это, чтобы получить изогнутый текст. Этот SVG работает в браузерах, но не в PDF. Википедия показывает, что батик (рендерер SVG для Apache FOP) совместим с TextPath: https://en.wikipedia.org/wiki/Comparison_of_layout_engines_ (Scalable_Vector_Graphics) . Но не повезло.

Буду признателен за любую помощь в этом. Примечание. Я намеренно пытаюсь добавить текст вместо растровых изображений, поскольку текст локализуется и внедряется в него.

Вот пример файла svg, который можно найти здесь: https://developer.mozilla.org/en-US/docs/Web/SVG/Element/textPath.

<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
  <path id="MyPath" fill="none" stroke="red"
        d="M10,90 Q90,90 90,45 Q90,10 50,10 Q10,10 10,40 Q10,70 45,70 Q70,70 75,50" />

  <text>
    <textPath href="#MyPath"> <!-- works if I remove this line -->
      Quick brown fox jumps over the lazy dog.
    </textPath> <!-- and this line -->
  </text>

</svg>

1 Ответ

1 голос
/ 18 апреля 2020

В соответствии с рекомендацией SVG 1.1, xlink:href должен использоваться для ссылки на элемент path. См. https://www.w3.org/TR/SVG11/text.html#TextPathElement.

Следующее изображение отображается в Squiggle GUI (батик 1.12), Firefox и Chrome.

<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"
                           xmlns:xlink="http://www.w3.org/1999/xlink">

  <path id="MyPath" fill="none" stroke="red"
        d="M10,90 Q90,90 90,45 Q90,10 50,10 Q10,10 10,40 Q10,70 45,70 Q70,70 75,50" />

  <text>
    <textPath xlink:href="#MyPath">
      Quick brown fox jumps over the lazy dog.
    </textPath>
  </text>

</svg>
...