SVG file converted to PNG using batik but No AXIS line

冷暖自知 提交于 2019-12-11 17:43:23

问题


I am converting SVG file to PNG using batik library, It works but it is not showing AXIS line in PNG file. On the other hand if I create PNG using csiro lib it creates AXIS line but I am not using this library because it not working properly with UTF-8 characters.

Please check the PNG file created using batik and csiro lib respectively.

Thanks.

Below is SVG code

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg xmlns="http://www.w3.org/2000/svg" width="463.53553390593277" height="307.0710678118655">
<rect x="0" y="0" width="463.53553390593277" height="307.0710678118655" fill="#FAFAFA"/>

<rect x="60" y="20" width="380" height="230" fill="#FFFFFF"/>

<rect width="76" height="188" opacity="0.16666667" fill="#0000CC" x="60" y="62"/>

<rect width="76" height="125" opacity="0.33333334" fill="#0000CC" x="136" y="125"/>

<rect width="76" height="157" opacity="0.5" fill="#0000CC" x="212" y="93"/>

<rect width="76" height="125" opacity="0.6666667" fill="#0000CC" x="288" y="125"/>

<rect width="76" height="125" opacity="0.8333333" fill="#0000CC" x="364" y="125"/>

<line color="#000000" stroke-width="2" x1="60" y1="250" x2="60" y2="20"/>
<line color="#000000" stroke-width="2" x1="60" y1="250" x2="440" y2="250"/>
<polygon fill="#000000" stroke-width="1" points="61,13 67,21 54,21"/><line color="#000000" x1="56" y1="219" x2="60" y2="219"/>
<line color="#000000" x1="56" y1="188" x2="60" y2="188"/>
<line color="#000000" x1="56" y1="156" x2="60" y2="156"/>
<line color="#000000" x1="56" y1="125" x2="60" y2="125"/>
<line color="#000000" x1="56" y1="93" x2="60" y2="93"/>
<line color="#000000" x1="56" y1="62" x2="60" y2="62"/>
<line color="#000000" x1="56" y1="30" x2="60" y2="30"/>

<g transform="translate(98,265)">
<g transform="rotate(45)">
<text x="0" y="0" font-size="12px">A</text>
</g>
</g>
<g transform="translate(174,265)">
<g transform="rotate(45)">
<text x="0" y="0" font-size="12px">B</text>
</g>
</g>
<g transform="translate(250,265)">
<g transform="rotate(45)">
<text x="0" y="0" font-size="12px">C</text>
</g>
</g>
<g transform="translate(326,265)">
<g transform="rotate(45)">
<text x="0" y="0" font-size="12px">D</text>
</g>
</g>
<g transform="translate(402,265)">
<g transform="rotate(45)">
<text x="0" y="0" font-size="12px">E</text>
</g>
</g>
<text x="61" y="10" font-size="9px" text-anchor="middle">Value</text>
<text x="53" y="223" font-size="10px" text-anchor="end">1</text>
<text x="53" y="192" font-size="10px" text-anchor="end">2</text>
<text x="53" y="160" font-size="10px" text-anchor="end">3</text>
<text x="53" y="129" font-size="10px" text-anchor="end">4</text>
<text x="53" y="97" font-size="10px" text-anchor="end">5</text>
<text x="53" y="66" font-size="10px" text-anchor="end">6</text>
<text x="53" y="34" font-size="10px" text-anchor="end">7</text>

</svg>


回答1:


color is not a valid attribute for SVG. For lines you'll need to replace it with the stroke attribute.

If csiro displays anything then it's not doing it right, you might want to report that as a bug. Batiks rendering, despite not being what you wanted, was correct for the markup you had.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg xmlns="http://www.w3.org/2000/svg" width="463.53553390593277" height="307.0710678118655">
<rect x="0" y="0" width="463.53553390593277" height="307.0710678118655" fill="#FAFAFA"/>

<rect x="60" y="20" width="380" height="230" fill="#FFFFFF"/>

<rect width="76" height="188" opacity="0.16666667" fill="#0000CC" x="60" y="62"/>

<rect width="76" height="125" opacity="0.33333334" fill="#0000CC" x="136" y="125"/>

<rect width="76" height="157" opacity="0.5" fill="#0000CC" x="212" y="93"/>

<rect width="76" height="125" opacity="0.6666667" fill="#0000CC" x="288" y="125"/>

<rect width="76" height="125" opacity="0.8333333" fill="#0000CC" x="364" y="125"/>

<line stroke="#000000" stroke-width="2" x1="60" y1="250" x2="60" y2="20"/>
<line stroke="#000000" stroke-width="2" x1="60" y1="250" x2="440" y2="250"/>
<polygon fill="#000000" stroke-width="1" points="61,13 67,21 54,21"/><line stroke="#000000" x1="56" y1="219" x2="60" y2="219"/>
<line stroke="#000000" x1="56" y1="188" x2="60" y2="188"/>
<line stroke="#000000" x1="56" y1="156" x2="60" y2="156"/>
<line stroke="#000000" x1="56" y1="125" x2="60" y2="125"/>
<line stroke="#000000" x1="56" y1="93" x2="60" y2="93"/>
<line stroke="#000000" x1="56" y1="62" x2="60" y2="62"/>
<line stroke="#000000" x1="56" y1="30" x2="60" y2="30"/>

<g transform="translate(98,265)">
<g transform="rotate(45)">
<text x="0" y="0" font-size="12px">A</text>
</g>
</g>
<g transform="translate(174,265)">
<g transform="rotate(45)">
<text x="0" y="0" font-size="12px">B</text>
</g>
</g>
<g transform="translate(250,265)">
<g transform="rotate(45)">
<text x="0" y="0" font-size="12px">C</text>
</g>
</g>
<g transform="translate(326,265)">
<g transform="rotate(45)">
<text x="0" y="0" font-size="12px">D</text>
</g>
</g>
<g transform="translate(402,265)">
<g transform="rotate(45)">
<text x="0" y="0" font-size="12px">E</text>
</g>
</g>
<text x="61" y="10" font-size="9px" text-anchor="middle">Value</text>
<text x="53" y="223" font-size="10px" text-anchor="end">1</text>
<text x="53" y="192" font-size="10px" text-anchor="end">2</text>
<text x="53" y="160" font-size="10px" text-anchor="end">3</text>
<text x="53" y="129" font-size="10px" text-anchor="end">4</text>
<text x="53" y="97" font-size="10px" text-anchor="end">5</text>
<text x="53" y="66" font-size="10px" text-anchor="end">6</text>
<text x="53" y="34" font-size="10px" text-anchor="end">7</text>

</svg>


来源:https://stackoverflow.com/questions/54265111/svg-file-converted-to-png-using-batik-but-no-axis-line

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!