0
我想將SVG文件轉換爲圖像。問題是我的SVG使用外部CSS文件,當我使用Apache Batik時,它無法識別外部CSS文件,並且它只顯示內嵌SVG標籤的樣式。下面是我的示例代碼:
轉換SVG包括外部CSS到圖像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();
}
}
這條線的工作原理:
t.addTranscodingHint(JPEGTranscoder.KEY_BACKGROUND_COLOR, Color.blue);
,而這條線不工作:
t.addTranscodingHint(JPEGTranscoder.KEY_ALTERNATE_STYLESHEET, "D:\\STYLESHEET_PATH\\style.css");
爲我加這個SVG部分:
<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>
當我在瀏覽器中打開它時應用了SVG,但在蠟染中它不適用。
我也把樣式放到SVG的標籤中,但結果是一樣的。
它可能適用的唯一風格是內聯SVG風格,例如填充=「#FFFFFF」:
<text text-anchor="middle" alignment-baseline="middle" x="624" xml:space="preserve" y="123.0"
fill="#FFFFFF" >Sample Text</text>
我在想,如果有人可以幫助我解決這個問題,還是讓我知道任何從獲得SVG樣式的最佳替代方法當我將其轉換爲圖像時,使用外部CSS。
在此先感謝。
<?xml-stylesheet type="text/css" href="style.css" ?>
,而不是SVG標籤後,這部分:
感謝@RobertLongson你的暗示。我找到了解決方案。 – farzad