#svg #batik
#svg #батик
Вопрос:
Я использую Batik (1.8) для преобразования SVG в PNG в моем плагине. У одного из моих клиентов есть SVG (обрезанный, см. Ниже), который использует XHTML для текстовых элементов внутри SVG. Эти текстовые элементы не отображаются в растрированном PNG.
Дополнительная информация: очевидно, что Batik оценивает требуемую функцию (расширяемость) как true, а затем пытается обработать часть XHTML — она не использует откат за пределы foreignObject. Однако обработка части XHTML не выполняется, поскольку текст не отображается. Никаких исключений и т. Д. Не Выдается. Используемый код в значительной степени является стандартным кодом, как показано в примерах батика. Есть идеи, что я могу сделать, чтобы Батик отображал этот текст?
Спасибо за любые подсказки,
Андреас
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="300px" height="167px" version="1.1" style="background-color: rgb(255, 255, 255);">
<defs/>
<g transform="translate(0.5,0.5)"><rect x="1" y="47" width="120" height="60" fill="none" stroke="#000000" stroke-dasharray="3 3" pointer-events="none"/>
<g transform="translate(49.5,70.5)">
<switch><foreignObject style="overflow:visible;" pointer-events="all" width="22" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 24px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Test</div></div></foreignObject><text x="11" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">Test</text></switch></g>
</g></svg>
Комментарии:
1. Batik — это средство визуализации SVG, оно не поддерживает HTML. Если вы хотите отобразить текст, вам нужно отобразить текст SVG
2. Привет, Роберт, спасибо за ваш ответ. Должен ли Батик тогда не возвращаться к данной альтернативе SVG, приведенной в моем примере выше?
3. Нет, строка объектов, которую вы используете, просто означает, что поддерживает сам элемент foreignObject. Он не требует поддержки какого-либо конкретного содержимого в элементе foreignObject.
4. Кто-нибудь знает, есть ли способ включить foreignObject для браузеров, которые могут справиться с этим, и в то же время включить svg-текст для средства визуализации, которое не может отображать foreignObject? Здесь у нас точно такая же проблема. Генерация SVG, которые должны отображаться в chrome / firefox (с поддержкой foreignObject), а также в IE11 / apache-batik (без поддержки foreignObject).