Я работал над рендерингом SVG-изображений для документа iText PDF. Для этого я использовал SVGSalamander для конвертации SVG в формат изображения. он работает нормально, но имеет странное поведение, когда некоторые изображения SVG отображаются неправильно, в то время как другие делают. эти неправильно визуализированные SVG не выровнены с реальным изображением. Я пытался, но я не мог понять, почему это происходит только для некоторых изображений.
Очень признателен, если кто-нибудь поможет мне решить эту проблему.
Java-код:
private static Image createSVGImage(PdfWriter pdfWriter, String imageEntry) throws BadElementException {
Image image = null;
Graphics2D g2dgraphics =null;
PdfTemplate template = null;
try{
SVGDiagram diagram = SVGCache.getSVGUniverse().getDiagram( new java.io.File( imageEntry ).toURI() );
template = pdfWriter.getDirectContent().createTemplate( diagram.getWidth(), diagram.getHeight());
diagram.setIgnoringClipHeuristic(true);
g2dgraphics= new PdfGraphics2D(template, diagram.getWidth(), diagram.getHeight());
diagram.render(g2dgraphics);
}catch( Exception e ){
e.printStackTrace();
} finally {
if( g2dgraphics != null ){
g2dgraphics.dispose();
image = Image.getInstance(template);
}
g2dgraphics.dispose();
}
return image;
}
XML-код SVG, который не выравнивается
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<path d="M19,16a46,46 0,1,0 62,0l-8,8a34,34 0,1,1-46,0z" fill="#069"/>
<path d="M46,43v35a28,28 0,0,1-14-49zM54,43v35a28,28 0,0,0 14-49z" fill="#396"/>
<circle r="15" cx="50" cy="18" fill="#900"/>
</svg>
реальное изображение
![enter image description here](https://i.stack.imgur.com/aEiGu.png)
вывод изображения из этого кода выше
![enter image description here](https://i.stack.imgur.com/7khmd.png)