2014-11-20 2 views
0

Со ссылкой на this postJava и SVG с помощью IMG тег

Я создаю построения диаграмм и у меня есть все, настройки, где запрос GET возвращает SVG. Я использую JFreeSVG (очень похоже на Батик). Я могу отобразить SVG с помощью тега HTML и тэга iframe. Я хочу использовать тег img для создания изображения svg, но он дает мне пустое поле. Я прочесываю сеть и действительно ничего не могу найти, и вы - моя последняя надежда.

Вот пример того, что возвращает мой запрос:

<?xml version="1.0" standalone="no"?> 
<!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" 
xmlns:jfreesvg="http://www.jfree.org/jfreesvg/svg" width="423" height="452" text-rendering="auto" shape-rendering="auto"> 
<rect x="0" y="0" width="423" height="452" style="fill: rgb(255,255,255); fill-opacity: 1.0" transform="matrix(1,0,0,1,0,0)" clip-path="url(#4989619974245clip-0)"/> 
<g transform="matrix(1,0,0,1,0,0)"> 
    <text x="8" y="446.14" style="fill: rgb(0,0,0); fill-opacity: 1.0; font-family: Tahoma; font-size: 9px; " clip-path="url(#4989619974245clip-0)">November 19, 2014</text> 
<g style="fill: url(#4989619974245gp0); fill-opacity: 1.0; stroke: none" transform="matrix(1,0,0,1,0,0)" clip-path="url(#4989619974245clip-1)"> 
<rect x="5" y="8" width="386.62" height="412.27" style="stroke-width: 1.0;stroke: rgb(204,204,204);stroke-opacity: 1.0;; fill: none" transform="matrix(1,0,0,1,0,0)" clip-path="url(#4989619974245clip-0)"/> 
</svg> 

ответ

0

Лучшее решение передать изображение в Base64 с помощью URI. Base64 желательно из-за его совместимости с браузерами (IE9)

 //g2.getSVGEleemnt returns a SVG in string eg. <svg> ... </svg> 
     String imageString = g2.getSVGElement(); 
     //encode it in Base64 
     byte[] imageData = Base64.encodeBase64(imageString.getBytes()); 
     //indicate mime type && base64 
     String header = "data:image/svg+xml;base64,"; 
     byte[] headerData = header.getBytes(); 

После того, как у вас есть, вы должны транслировать заголовок, а затем данные изображения в указанном порядке. Поместите ваши данные или ваш вызов, который получает данные в теге img и Viola!

<img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaH........"> 
Смежные вопросы