Je veux convertir le fichier SVG en image. Le problème est mon SVG utiliser le fichier CSS externe et quand j'utilise Apache Batik, il ne peut pas reconnaître le fichier CSS externe, et il montre juste les styles qui sont en ligne les balises SVG. Voici mon exemple de code:
Convertir SVG inclure CSS externe à l'image java
public static void svg2jpgBatik1() {
JPEGTranscoder transcoder = new JPEGTranscoder();
try {
// Create a JPEG transcoder
JPEGTranscoder t = new JPEGTranscoder();
// Set the transcoding hints.
t.addTranscodingHint(JPEGTranscoder.KEY_QUALITY,
0.8f);
// Create the transcoder input.
String svgURI = new File("D:\\SVG_PATH\\map.svg").toURL().toString();
TranscoderInput input = new TranscoderInput(svgURI);
// Create the transcoder output.
OutputStream ostream = new FileOutputStream("D:\\JPEG_PATH\\map.jpg");
TranscoderOutput output = new TranscoderOutput(ostream);
t.addTranscodingHint(JPEGTranscoder.KEY_ALTERNATE_STYLESHEET, "D:\\STYLESHEET_PATH\\style.css");
t.addTranscodingHint(JPEGTranscoder.KEY_BACKGROUND_COLOR, Color.blue);
// Save the image.
t.transcode(input, output);
// Flush and close the stream.
ostream.flush();
ostream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
Cette ligne fonctionne:
t.addTranscodingHint(JPEGTranscoder.KEY_BACKGROUND_COLOR, Color.blue);
alors que cette ligne ne fonctionne pas:
t.addTranscodingHint(JPEGTranscoder.KEY_ALTERNATE_STYLESHEET, "D:\\STYLESHEET_PATH\\style.css");
dans le SVG J'ai ajouté ce partie:
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 10 1000" preserveAspectRatio="xMinYMin meet">
<defs>
<link href="STYLESHEET_PATH\\style.css" type="text/css" rel="stylesheet"
xmlns="http://www.w3.org/1999/xhtml"/>
</defs>
Qui a appliqué le SVG quand je l'ouvre dans le navigateur, mais dans batik il ne s'applique pas.
J'ai également mis les styles dans l'étiquette dans le SVG, mais le résultat était le même.
Le seul style qu'il pourrait appliquer est le style SVG en ligne tels que fill = « # FFFFFF »:
<text text-anchor="middle" alignment-baseline="middle" x="624" xml:space="preserve" y="123.0"
fill="#FFFFFF" >Sample Text</text>
Je me demandais si quelqu'un pouvait me aider à résoudre ce problème ou laissez-moi savoir tout meilleures alternatives pour avoir des styles pour SVG de externe CSS lorsque je le convertis en une image.
Merci d'avance.
Merci pour votre @RobertLongson soupçon. J'ai trouvé la solution. – farzad